From 1d0096fa7637b7db46dacf9d69c9c58a3918b148 Mon Sep 17 00:00:00 2001 From: davidtrafela Date: Wed, 29 Nov 2023 12:27:07 +0100 Subject: [PATCH] Added support for Java 21, migrated to Jakarta namespace, updated versions of dependencies to latest. --- core/pom.xml | 2 +- .../kumuluz/ee/graphql/GraphQLExtension.java | 6 +- .../ee/graphql/servlets/GraphQLServlet.java | 11 +-- .../ee/graphql/utils/GraphQLUtils.java | 72 +++++++++---------- .../ee/graphql/utils/QueryParameters.java | 2 +- graphql-ui/pom.xml | 2 +- .../ee/graphql/ui/GraphQLUIExtension.java | 2 +- .../graphql/ui/servlets/GraphQLUIServlet.java | 13 ++-- microprofile/pom.xml | 2 +- .../ee/graphql/mp/GraphQLExtension.java | 4 +- .../mp/config/KumuluzConfigMapper.java | 7 +- .../mp/smallrye/GraphQLSchemaInitializer.java | 12 ++-- pom.xml | 56 ++++++++------- 13 files changed, 101 insertions(+), 90 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index aaa14fa..893ef0c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,7 +5,7 @@ kumuluzee-graphql-parent com.kumuluz.ee.graphql - 1.2.0-SNAPSHOT + 2.0.0-SNAPSHOT 4.0.0 diff --git a/core/src/main/java/com/kumuluz/ee/graphql/GraphQLExtension.java b/core/src/main/java/com/kumuluz/ee/graphql/GraphQLExtension.java index 82122b7..af5103e 100644 --- a/core/src/main/java/com/kumuluz/ee/graphql/GraphQLExtension.java +++ b/core/src/main/java/com/kumuluz/ee/graphql/GraphQLExtension.java @@ -62,7 +62,7 @@ public boolean isEnabled() { public void load() { List applications = new ArrayList<>(); ServiceLoader.load(GraphQLApplication.class).forEach(applications::add); - if(applications.size() > 1) { + if (applications.size() > 1) { throw new KumuluzServerException("Found multiple declarations of GraphQLApplication. Please only provide one."); } } @@ -77,11 +77,11 @@ public void init(KumuluzServerWrapper kumuluzServerWrapper, EeConfig eeConfig) { try { URI u = new URI(path); - if(u.isAbsolute()) { + if (u.isAbsolute()) { LOG.severe("URL must be relative. Extension not initialized."); return; } - } catch(Exception E) { + } catch (Exception E) { LOG.severe("Malformed url: " + path + ". Extension not initialized."); return; } diff --git a/core/src/main/java/com/kumuluz/ee/graphql/servlets/GraphQLServlet.java b/core/src/main/java/com/kumuluz/ee/graphql/servlets/GraphQLServlet.java index cd19bab..7caf9d7 100644 --- a/core/src/main/java/com/kumuluz/ee/graphql/servlets/GraphQLServlet.java +++ b/core/src/main/java/com/kumuluz/ee/graphql/servlets/GraphQLServlet.java @@ -38,10 +38,11 @@ import graphql.schema.GraphQLSchema; import io.leangen.graphql.GraphQLSchemaGenerator; -import javax.enterprise.inject.spi.CDI; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.enterprise.inject.spi.CDI; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + import java.io.IOException; import java.io.InputStream; import java.util.*; @@ -171,7 +172,7 @@ private GraphQLSchema buildSchema() { configurationUtil.getList("kumuluzee.graphql.schema.base-packages") .ifPresent(basePackages::addAll); - generator.withBasePackages(basePackages.toArray(new String [0])); + generator.withBasePackages(basePackages.toArray(new String[0])); for (Class c : classes) { if (CDIfound) { diff --git a/core/src/main/java/com/kumuluz/ee/graphql/utils/GraphQLUtils.java b/core/src/main/java/com/kumuluz/ee/graphql/utils/GraphQLUtils.java index 93172d7..30f1e54 100644 --- a/core/src/main/java/com/kumuluz/ee/graphql/utils/GraphQLUtils.java +++ b/core/src/main/java/com/kumuluz/ee/graphql/utils/GraphQLUtils.java @@ -31,8 +31,8 @@ import graphql.GraphQLException; import graphql.schema.DataFetchingEnvironment; import io.leangen.graphql.execution.ResolutionEnvironment; +import jakarta.persistence.EntityManager; -import javax.persistence.EntityManager; import java.time.Instant; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; @@ -72,7 +72,7 @@ public static PaginationWrapper process(List list, Pagination p, Filte } private static Pagination getDefaultPagination() { - ConfigurationUtil configurationUtil = ConfigurationUtil.getInstance(); + ConfigurationUtil configurationUtil = ConfigurationUtil.getInstance(); return new Pagination(configurationUtil.getInteger("kumuluzee.graphql.defaults.limit").orElse(20), configurationUtil.getInteger("kumuluzee.graphql.defaults.offset").orElse(0)); } @@ -113,12 +113,12 @@ public static List processWithoutPagination(List l, Sort s) { } private static List getStringList(String stringArray, boolean ignoreCase) { - if(stringArray.charAt(0) == '[' && stringArray.charAt(stringArray.length()-1) == ']') { - stringArray = stringArray.substring(1, stringArray.length()-1); + if (stringArray.charAt(0) == '[' && stringArray.charAt(stringArray.length() - 1) == ']') { + stringArray = stringArray.substring(1, stringArray.length() - 1); } else { throw new GraphQLException("Value field must contain array ([item1,item2,...])."); } - if(ignoreCase) { + if (ignoreCase) { return Arrays.asList(stringArray.toLowerCase().split(",")); } else { return Arrays.asList(stringArray.split(",")); @@ -126,25 +126,25 @@ private static List getStringList(String stringArray, boolean ignoreCase } public static QueryParameters queryParameters(Pagination p, Sort s, Filter f) { - return queryParameters(p,s,f, true); + return queryParameters(p, s, f, true); } public static QueryParameters queryParameters(Pagination p, Sort s, Filter f, boolean forcePagination) { ConfigurationUtil configurationUtil = ConfigurationUtil.getInstance(); QueryParameters qs = new QueryParameters(); - if(p == null && forcePagination) { + if (p == null && forcePagination) { p = getDefaultPagination(); } - if(p != null) { + if (p != null) { Integer offset = p.getOffset() == null ? configurationUtil.getInteger("kumuluzee.graphql.defaults.offset").orElse(0) : p.getOffset(); Integer limit = p.getLimit() == null ? configurationUtil.getInteger("kumuluzee.graphql.defaults.limit").orElse(20) : p.getLimit(); qs.setOffset(offset); qs.setLimit(limit); } - if(s != null) { + if (s != null) { List queryOrderList = new ArrayList<>(); - for(SortField sortField: s.getFields()) { + for (SortField sortField : s.getFields()) { QueryOrder queryOrder = new QueryOrder(); queryOrder.setField(sortField.getField()); queryOrder.setOrder(sortField.getOrder()); @@ -152,17 +152,17 @@ public static QueryParameters queryParameters(Pagination p, Sort s, Filter f, bo } qs.setOrder(queryOrderList); } - if(f != null) { + if (f != null) { List queryFilterList = new ArrayList<>(); - for(FilterField filterField: f.getFields()) { + for (FilterField filterField : f.getFields()) { QueryFilter queryFilter; - if(filterField.getType() == FilterType.DATE) { + if (filterField.getType() == FilterType.DATE) { DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME; TemporalAccessor accessor = timeFormatter.parse(filterField.getValue()); queryFilter = new QueryFilter(filterField.getField(), filterField.getOp(), Date.from(Instant.from(accessor))); - } else if(filterField.getOp() == FilterOperation.IN || filterField.getOp() == FilterOperation.NIN) { + } else if (filterField.getOp() == FilterOperation.IN || filterField.getOp() == FilterOperation.NIN) { queryFilter = new QueryFilter(filterField.getField(), filterField.getOp(), getStringList(filterField.getValue(), false)); - } else if(filterField.getOp() == FilterOperation.INIC ||filterField.getOp() == FilterOperation.NINIC) { + } else if (filterField.getOp() == FilterOperation.INIC || filterField.getOp() == FilterOperation.NINIC) { queryFilter = new QueryFilter(filterField.getField(), filterField.getOp(), getStringList(filterField.getValue(), true)); } else { queryFilter = new QueryFilter(filterField.getField(), filterField.getOp(), filterField.getValue()); @@ -175,7 +175,7 @@ public static QueryParameters queryParameters(Pagination p, Sort s, Filter f, bo } public static PaginationWrapper wrapList(List list, Pagination pagination, Integer size) { - if(pagination == null) { + if (pagination == null) { pagination = getDefaultPagination(); } PaginationOutput paginationOutput = new PaginationOutput(pagination, size); @@ -187,7 +187,7 @@ public static PaginationWrapper wrapList(List list, Pagination paginat } public static PaginationWrapper process(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Pagination pagination, Sort sort) { - return process(em, tClass, resolutionEnvironment, pagination, sort,null); + return process(em, tClass, resolutionEnvironment, pagination, sort, null); } public static PaginationWrapper process(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Pagination pagination, Filter filter) { @@ -195,11 +195,11 @@ public static PaginationWrapper process(EntityManager em, Class tClass } public static PaginationWrapper process(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Pagination pagination) { - return process(em, tClass,resolutionEnvironment, pagination, null,null); + return process(em, tClass, resolutionEnvironment, pagination, null, null); } public static PaginationWrapper process(EntityManager em, Class tClass, Pagination pagination, Sort sort) { - return process(em, tClass, null, pagination, sort,null); + return process(em, tClass, null, pagination, sort, null); } public static PaginationWrapper process(EntityManager em, Class tClass, Pagination pagination, Filter filter) { @@ -207,7 +207,7 @@ public static PaginationWrapper process(EntityManager em, Class tClass } public static PaginationWrapper process(EntityManager em, Class tClass, Pagination pagination) { - return process(em, tClass,null, pagination, null,null); + return process(em, tClass, null, pagination, null, null); } public static PaginationWrapper process(EntityManager em, Class tClass, Pagination pagination, Sort sort, Filter filter) { @@ -216,7 +216,7 @@ public static PaginationWrapper process(EntityManager em, Class tClass public static PaginationWrapper process(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Pagination pagination, Sort sort, Filter filter) { QueryParameters queryParameters = queryParameters(pagination, sort, filter, true); - if(resolutionEnvironment != null) { + if (resolutionEnvironment != null) { queryParameters.setFields(getFieldsFromResolutionEnvironment(resolutionEnvironment)); } List studentList = JPAUtils.queryEntities(em, tClass, queryParameters); @@ -224,37 +224,37 @@ public static PaginationWrapper process(EntityManager em, Class tClass return GraphQLUtils.wrapList(studentList, pagination, size.intValue()); } - public static List processWithoutPagination(EntityManager em, Class tClass) { + public static List processWithoutPagination(EntityManager em, Class tClass) { return processWithoutPagination(em, tClass, null, null, null); } - public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment) { + public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment) { return processWithoutPagination(em, tClass, resolutionEnvironment, null, null); } - public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Sort sort) { + public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Sort sort) { return processWithoutPagination(em, tClass, resolutionEnvironment, sort, null); } - public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Filter filter) { + public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Filter filter) { return processWithoutPagination(em, tClass, resolutionEnvironment, null, filter); } - public static List processWithoutPagination(EntityManager em, Class tClass, Sort sort) { + public static List processWithoutPagination(EntityManager em, Class tClass, Sort sort) { return processWithoutPagination(em, tClass, null, sort, null); } - public static List processWithoutPagination(EntityManager em, Class tClass, Filter filter) { + public static List processWithoutPagination(EntityManager em, Class tClass, Filter filter) { return processWithoutPagination(em, tClass, null, null, filter); } - public static List processWithoutPagination(EntityManager em, Class tClass, Sort sort, Filter filter) { + public static List processWithoutPagination(EntityManager em, Class tClass, Sort sort, Filter filter) { return processWithoutPagination(em, tClass, null, sort, filter); } - public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Sort sort, Filter filter) { + public static List processWithoutPagination(EntityManager em, Class tClass, ResolutionEnvironment resolutionEnvironment, Sort sort, Filter filter) { QueryParameters queryParameters = queryParameters(null, sort, filter, false); - if(resolutionEnvironment != null) { + if (resolutionEnvironment != null) { queryParameters.setFields(getFieldsFromResolutionEnvironment(resolutionEnvironment)); } return JPAUtils.queryEntities(em, tClass, queryParameters); @@ -264,19 +264,19 @@ private static List getFieldsFromResolutionEnvironment(ResolutionEnviron List fields = new ArrayList<>(); DataFetchingEnvironment dataFetchingEnvironment = resolutionEnvironment.dataFetchingEnvironment; - Set graphqlFields = dataFetchingEnvironment.getSelectionSet().get().keySet(); + Set graphqlFields = dataFetchingEnvironment.getSelectionSet().getFieldsGroupedByResultKey().keySet(); - if(graphqlFields.contains("result")) { - for(String s: graphqlFields) { + if (graphqlFields.contains("result")) { + for (String s : graphqlFields) { String[] split = s.split("/", 2); - if(split[0].equals("result") && split.length >= 2) { + if (split[0].equals("result") && split.length >= 2) { fields.add(String.join(".", split[1].split("/"))); } } } else { - for(String s: graphqlFields) { + for (String s : graphqlFields) { String[] split = s.split("/"); - if(split.length >= 1) { + if (split.length >= 1) { fields.add(String.join(".", split)); } } diff --git a/core/src/main/java/com/kumuluz/ee/graphql/utils/QueryParameters.java b/core/src/main/java/com/kumuluz/ee/graphql/utils/QueryParameters.java index 7c0d4c7..d4f602d 100644 --- a/core/src/main/java/com/kumuluz/ee/graphql/utils/QueryParameters.java +++ b/core/src/main/java/com/kumuluz/ee/graphql/utils/QueryParameters.java @@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.util.Collections; diff --git a/graphql-ui/pom.xml b/graphql-ui/pom.xml index b943163..9713d1c 100644 --- a/graphql-ui/pom.xml +++ b/graphql-ui/pom.xml @@ -5,7 +5,7 @@ kumuluzee-graphql-parent com.kumuluz.ee.graphql - 1.2.0-SNAPSHOT + 2.0.0-SNAPSHOT 4.0.0 diff --git a/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/GraphQLUIExtension.java b/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/GraphQLUIExtension.java index 38cf2a5..6bae970 100644 --- a/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/GraphQLUIExtension.java +++ b/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/GraphQLUIExtension.java @@ -77,7 +77,7 @@ public void init(KumuluzServerWrapper kumuluzServerWrapper, EeConfig eeConfig) { return; } - if(configurationUtil.getBoolean("kumuluzee.graphql.ui.enabled").orElse(true)) { + if (configurationUtil.getBoolean("kumuluzee.graphql.ui.enabled").orElse(true)) { String mapping = configurationUtil.get("kumuluzee.graphql.ui.mapping").orElse("graphiql"); // strip "/" diff --git a/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/servlets/GraphQLUIServlet.java b/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/servlets/GraphQLUIServlet.java index 4535051..f38c0a5 100644 --- a/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/servlets/GraphQLUIServlet.java +++ b/graphql-ui/src/main/java/com/kumuluz/ee/graphql/ui/servlets/GraphQLUIServlet.java @@ -23,10 +23,11 @@ import com.kumuluz.ee.configuration.utils.ConfigurationUtil; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -63,11 +64,11 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se try { URI u = new URI(path); - if(u.isAbsolute()) { + if (u.isAbsolute()) { resp.getWriter().println("URL must be relative. Extension not initialized."); return; } - } catch(Exception E) { + } catch (Exception E) { resp.getWriter().println("Malformed url: " + path + ". Extension not initialized."); return; } diff --git a/microprofile/pom.xml b/microprofile/pom.xml index af53a95..081a3a3 100644 --- a/microprofile/pom.xml +++ b/microprofile/pom.xml @@ -5,7 +5,7 @@ kumuluzee-graphql-parent com.kumuluz.ee.graphql - 1.2.0-SNAPSHOT + 2.0.0-SNAPSHOT 4.0.0 diff --git a/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/GraphQLExtension.java b/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/GraphQLExtension.java index d313af1..663ccb7 100644 --- a/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/GraphQLExtension.java +++ b/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/GraphQLExtension.java @@ -26,8 +26,8 @@ import com.kumuluz.ee.common.wrapper.KumuluzServerWrapper; import com.kumuluz.ee.configuration.utils.ConfigurationUtil; import com.kumuluz.ee.jetty.JettyServletServer; -import io.smallrye.graphql.servlet.ExecutionServlet; -import io.smallrye.graphql.servlet.SchemaServlet; +import io.smallrye.graphql.entry.http.ExecutionServlet; +import io.smallrye.graphql.entry.http.SchemaServlet; import java.net.URI; import java.util.logging.Logger; diff --git a/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/config/KumuluzConfigMapper.java b/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/config/KumuluzConfigMapper.java index 61cbda4..0830cef 100644 --- a/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/config/KumuluzConfigMapper.java +++ b/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/config/KumuluzConfigMapper.java @@ -23,7 +23,7 @@ import com.kumuluz.ee.configuration.ConfigurationSource; import com.kumuluz.ee.configuration.utils.ConfigurationDispatcher; import com.kumuluz.ee.configuration.utils.ConfigurationUtil; -import io.smallrye.graphql.cdi.config.ConfigKey; +import io.smallrye.graphql.config.ConfigKey; import java.util.HashMap; import java.util.List; @@ -42,7 +42,7 @@ public class KumuluzConfigMapper implements ConfigurationSource { private static final Map CONFIG_MAP_LIST = new HashMap<>(); private static final String SHOW_ERROR_DEFAULTS_CONFIG_KEY = "kumuluzee.graphql.exceptions.include-show-error-defaults"; - private static final String[] SHOW_ERROR_DEFAULTS = new String[] { + private static final String[] SHOW_ERROR_DEFAULTS = new String[]{ "com.kumuluz.ee.rest.exceptions.InvalidEntityFieldException", "com.kumuluz.ee.rest.exceptions.InvalidFieldValueException", "com.kumuluz.ee.rest.exceptions.NoGenericTypeException", @@ -57,7 +57,8 @@ public class KumuluzConfigMapper implements ConfigurationSource { CONFIG_MAP.put(ConfigKey.SCHEMA_INCLUDE_DIRECTIVES, "kumuluzee.graphql.schema.include-directives"); CONFIG_MAP.put(ConfigKey.SCHEMA_INCLUDE_INTROSPECTION_TYPES, "kumuluzee.graphql.schema.include-introspection-types"); CONFIG_MAP.put(ConfigKey.ENABLE_METRICS, "kumuluzee.graphql.metrics.enabled"); - CONFIG_MAP.put(ConfigKey.ENABLE_VALIDATION, "kumuluzee.graphql.bean-validation.enabled"); + // CONFIG_MAP.put(ConfigKey.ENABLE_VALIDATION, "kumuluzee.graphql.bean-validation.enabled"); + CONFIG_MAP.put("smallrye.graphql.validation.enabled", "kumuluzee.graphql.bean-validation.enabled"); CONFIG_MAP_LIST.put("mp.graphql.hideErrorMessage", "kumuluzee.graphql.exceptions.hide-error-message"); CONFIG_MAP_LIST.put("mp.graphql.showErrorMessage", "kumuluzee.graphql.exceptions.show-error-message"); diff --git a/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/smallrye/GraphQLSchemaInitializer.java b/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/smallrye/GraphQLSchemaInitializer.java index b230548..4502a00 100644 --- a/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/smallrye/GraphQLSchemaInitializer.java +++ b/microprofile/src/main/java/com/kumuluz/ee/graphql/mp/smallrye/GraphQLSchemaInitializer.java @@ -30,17 +30,17 @@ import io.github.classgraph.ClassInfoList; import io.github.classgraph.ScanResult; import io.smallrye.graphql.cdi.producer.GraphQLProducer; +import io.smallrye.graphql.entry.http.SchemaServlet; import io.smallrye.graphql.schema.SchemaBuilder; import io.smallrye.graphql.schema.model.Schema; -import io.smallrye.graphql.servlet.SchemaServlet; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.Initialized; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; +import jakarta.servlet.ServletContext; import org.jboss.jandex.IndexView; import org.jboss.jandex.Indexer; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.context.Initialized; -import javax.enterprise.event.Observes; -import javax.inject.Inject; -import javax.servlet.ServletContext; import java.io.IOException; import java.util.LinkedList; import java.util.List; diff --git a/pom.xml b/pom.xml index ad4ae5e..1d70996 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.kumuluz.ee.graphql kumuluzee-graphql-parent - 1.2.0-SNAPSHOT + 2.0.0-SNAPSHOT pom @@ -27,35 +27,37 @@ https://ee.kumuluz.com - 1.8 - 1.8 + 21 + 21 UTF-8 - 3.12.0 - 2.3.1 - 1.4.0 + 5.0.0-SNAPSHOT + 3.0.0-SNAPSHOT + + 4.0.1 + 4.0.4 - 13.0 - 0.10.1 + 21.3 + 0.12.3 - 16.1 - 1.0.3 - 1.0.18 - 1.4.1 - 4.8.102 + 21.3 + 2.0 + 2.6.0 + 3.0.0-SNAPSHOT + 4.8.165 - 6.14.3 - 1.6.0.Final - 1.1.1 - 3.3.0 - 2.22.2 + 7.8.0 + 1.8.0.Final + 2.0.0-SNAPSHOT + 5.3.2 + 3.2.2 - 1.6.8 - 1.6 - 3.8.1 + 1.6.13 + 3.1.0 + 3.11.0 @@ -217,9 +219,15 @@ - javax.xml.bind - jaxb-api - ${jaxb-api.version} + jakarta.xml.bind + jakarta.xml.bind-api + ${jakarta-xml-bind-api.version} + + + com.sun.xml.bind + jaxb-impl + ${jaxb-impl.version} + runtime