From c1d56fff422793e4418f29ff663bdea865072062 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 4 Apr 2022 14:43:11 +0200 Subject: [PATCH 01/10] Migrating to swagger3 / openapi --- pom.xml | 18 ++- vpro-shared-bom/pom.xml | 6 + vpro-shared-swagger/pom.xml | 2 +- vpro-shared-swagger3/README.adoc | 5 + vpro-shared-swagger3/pom.xml | 63 ++++++++ .../java/nl/vpro/rs/media/WelcomeFilter.java | 35 +++++ .../nl/vpro/swagger/SwaggerApplication.java | 95 ++++++++++++ .../java/nl/vpro/swagger/SwaggerFilter.java | 135 ++++++++++++++++++ .../vpro/swagger/SwaggerListingResource.java | 40 ++++++ .../swagger/model/InstantParamProcessor.java | 14 ++ .../swagger/model/SwaggerReaderListener.java | 30 ++++ .../src/main/resources/META-INF/swagger.tld | 31 ++++ .../resources/META-INF/tags/swagger/body.tagx | 22 +++ .../META-INF/tags/swagger/head-links.tagx | 19 +++ .../META-INF/tags/swagger/javascript.tagx | 46 ++++++ .../resources/META-INF/tags/swagger/logo.tagx | 11 ++ .../META-INF/tags/swagger/swaggerbase.tagx | 6 + .../META-INF/vpro/swagger-context.xml | 11 ++ .../nl/vpro/swagger/SwaggerFilterTest.java | 36 +++++ 19 files changed, 617 insertions(+), 8 deletions(-) create mode 100644 vpro-shared-swagger3/README.adoc create mode 100644 vpro-shared-swagger3/pom.xml create mode 100644 vpro-shared-swagger3/src/main/java/nl/vpro/rs/media/WelcomeFilter.java create mode 100644 vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java create mode 100644 vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java create mode 100644 vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerListingResource.java create mode 100644 vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java create mode 100644 vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/swagger.tld create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/head-links.tagx create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/vpro/swagger-context.xml create mode 100644 vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java diff --git a/pom.xml b/pom.xml index a21126ea6..161bad359 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,7 @@ vpro-shared-persistence vpro-shared-rs vpro-shared-swagger + vpro-shared-swagger3 vpro-shared-test vpro-shared-util @@ -276,10 +277,8 @@ 6.2.2.Final 1.5.0 - - 1.5.22 + + 2.1.13 1.18.22 @@ -294,15 +293,20 @@ - io.swagger + io.swagger.core.v3 swagger-annotations ${swagger.version} - io.swagger - swagger-jaxrs + io.swagger.core.v3 + swagger-jaxrs2 ${swagger.version} + + io.swagger.core.v3 + swagger-core + ${swagger.version} + nl.vpro.shared vpro-shared-bom diff --git a/vpro-shared-bom/pom.xml b/vpro-shared-bom/pom.xml index c3d4f673c..1af7c8da0 100644 --- a/vpro-shared-bom/pom.xml +++ b/vpro-shared-bom/pom.xml @@ -163,6 +163,12 @@ ${project.version} + + nl.vpro.shared + vpro-shared-swagger3 + ${project.version} + + diff --git a/vpro-shared-swagger/pom.xml b/vpro-shared-swagger/pom.xml index 23bb13a05..0c515dd94 100644 --- a/vpro-shared-swagger/pom.xml +++ b/vpro-shared-swagger/pom.xml @@ -5,7 +5,7 @@ vpro-shared-parent nl.vpro.shared - 2.30-SNAPSHOT + 2.29.3 vpro-shared-swagger 2.30-SNAPSHOT diff --git a/vpro-shared-swagger3/README.adoc b/vpro-shared-swagger3/README.adoc new file mode 100644 index 000000000..480cd6c89 --- /dev/null +++ b/vpro-shared-swagger3/README.adoc @@ -0,0 +1,5 @@ += Swagger utilities + +This contains a few utility methods to deal with swagger. + +It has a dependency on a webjars for swagger frontend itself, and supplies a simply taglib to wire that into the actual HTML. diff --git a/vpro-shared-swagger3/pom.xml b/vpro-shared-swagger3/pom.xml new file mode 100644 index 000000000..ce1786956 --- /dev/null +++ b/vpro-shared-swagger3/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + + vpro-shared-parent + nl.vpro.shared + 2.30-SNAPSHOT + + vpro-shared-swagger3 + 2.30-SNAPSHOT + + + + + + + nl.vpro.shared + vpro-shared-jackson2 + + + nl.vpro.shared + vpro-shared-web + + + + io.swagger.core.v3 + swagger-core + + + io.swagger.core.v3 + swagger-jaxrs2 + + + org.jboss.spec.javax.ws.rs + jboss-jaxrs-api_2.1_spec + 2.0.1.Final + provided + + + javax.servlet + javax.servlet-api + + + org.webjars + swagger-ui + 4.9.1 + + + org.projectlombok + lombok + + + nl.vpro.shared + vpro-shared-test + test + + + org.meeuw + mihxil-json-grep + + + diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/rs/media/WelcomeFilter.java b/vpro-shared-swagger3/src/main/java/nl/vpro/rs/media/WelcomeFilter.java new file mode 100644 index 000000000..fcff82dbb --- /dev/null +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/rs/media/WelcomeFilter.java @@ -0,0 +1,35 @@ +package nl.vpro.rs.media; + +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +import javax.servlet.*; +import javax.servlet.http.HttpServletResponse; + +/** + * MSE-4330. Er was gewoon een index.jsp die dat deed, maar dat werkt niet meer, omdat om een of andere reden het resteasy servlet er altijd tussen zat (terwijl niet eens gemapt) + * @author Michiel Meeuwissen + * @since 2.6 + */ +@Slf4j +public class WelcomeFilter implements Filter { + + + + @Override + public void init(FilterConfig filterConfig) { + + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException { + ((HttpServletResponse)servletResponse).sendRedirect("docs/api"); + + } + + @Override + public void destroy() { + + } +} diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java new file mode 100644 index 000000000..c687ee46a --- /dev/null +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2013 All rights reserved + * VPRO The Netherlands + */ +package nl.vpro.swagger; + +import io.swagger.v3.core.util.PrimitiveType; +import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.time.*; +import java.util.*; +import java.util.stream.Collectors; + +import javax.annotation.PostConstruct; +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; + +import com.google.common.collect.ImmutableMap; + + +/** + * Static helper to expose a dummy JAX-RS Application. Swagger needs such an application to expose the API docs for + * the given endpoints. + * + * @author Roelof Jan Koekoek + * @since 2.0 + */ +@Slf4j +@ApplicationPath("") +public class SwaggerApplication extends Application { + private static final Set singletons = new HashSet<>(); + static { + //XTrustProvider.install(); + // swagger sucks a lot. + //https://github.com/swagger-api/swagger-core/issues/1444 + setExternalTypes(ImmutableMap., PrimitiveType>builder() + .put(Duration.class, PrimitiveType.STRING) + .put(Instant.class, PrimitiveType.DATE_TIME) + .put(LocalDateTime.class, PrimitiveType.DATE_TIME) + .put(LocalDate.class, PrimitiveType.DATE) + .build()); + } + + + @Override + public Set> getClasses() { + Set> set = new HashSet<>(); + return set; + } + + @Override + public Set getSingletons() { + return singletons; + } + + @PostConstruct + public void init() { + OpenApiResource openApiResource = new OpenApiResource(); + inject(openApiResource); + + } + + /** + * Inject Swagger annotated JAX-RS api's you want to publish. Swagger only calls #getSingletons on the first + * API documentation request, so you must take care that your services get injected before an application accepts + * web requests. (Using @PostConstruct on your services is a viable solution) + * + * @param services + */ + public static void inject(Object... services) { + singletons.addAll(Arrays.asList(services)); + } + + private static void setExternalTypes(Map, PrimitiveType> externalTypes) { + // ugly hack until swagger supports adding external classes as primitive types + try { + Field externalTypesField = PrimitiveType.class.getDeclaredField("EXTERNAL_CLASSES"); + Field modifiersField = Field.class.getDeclaredField("modifiers"); + + modifiersField.setAccessible(true); + externalTypesField.setAccessible(true); + modifiersField.set(externalTypesField, externalTypesField.getModifiers() & ~Modifier.FINAL); + + Map externalTypesInternal = externalTypes.entrySet().stream() + .collect(Collectors.toMap(e -> e.getKey().getName(), Map.Entry::getValue)); + externalTypesField.set(null, externalTypesInternal); + } catch (NoSuchFieldException|IllegalAccessException e) { + log.warn("Couldn't set external types", e); + } + } + +} diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java new file mode 100644 index 000000000..0677b2762 --- /dev/null +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java @@ -0,0 +1,135 @@ +package nl.vpro.swagger; + +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.regex.Pattern; + +import javax.servlet.*; +import javax.servlet.http.*; +import javax.ws.rs.core.MediaType; + +import org.meeuw.json.grep.Sed; +import org.meeuw.json.grep.matching.*; + +import nl.vpro.web.HttpServletRequestUtils; + +/** + * This filter can be used to fill in 'api.basePath' using the request, so you don't have to configure it any more. + * @author Michiel Meeuwissen + * @since 0.21 + */ +@Slf4j +public class SwaggerFilter implements Filter { + + + @Override + public void init(FilterConfig filterConfig) { + + } + + @Override + public void doFilter( + ServletRequest request, + ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + + if (! req.getPathInfo().endsWith(".json")) { + String accept = req.getHeader("accept"); + if (accept != null) { + boolean json = false; + try { + String[] mtypes = accept.split(";", 2)[0].split(","); + for (String mtype : mtypes) { + if (MediaType.valueOf(mtype).isCompatible(MediaType.APPLICATION_JSON_TYPE)) { + json = true; + break; + } + } + } catch (Exception e) { + log.warn(e.getMessage()); + } + if (!json) { + log.debug("Not json"); + chain.doFilter(request, response); + return; + } + } + } + + + PathMatcher matcher = getPathMatcher(req); + + final ServletOutputStream servletOutputStream = response.getOutputStream(); + final OutputStream out = transform(servletOutputStream, matcher); + HttpServletResponseWrapper wrapped = new HttpServletResponseWrapper((HttpServletResponse) response) { + @Override + public ServletOutputStream getOutputStream() { + return new ServletOutputStream() { + @Override + public boolean isReady() { + return servletOutputStream.isReady(); + + } + + @Override + public void setWriteListener(WriteListener writeListener) { + servletOutputStream.setWriteListener(writeListener); + } + + @Override + public void write(int b) throws IOException { + out.write(b); + + } + + @Override + public void write(byte[] b) throws IOException { + out.write(b); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + out.write(b, off, len); + } + }; + } + }; + + chain.doFilter(request, wrapped); + out.close(); + + } + + + PathMatcher getPathMatcher(HttpServletRequest req) { + String host = req.getServerName() + HttpServletRequestUtils.getPortPostFixIfNeeded(req); + String basePath = req.getContextPath() + "/api"; + return getPathMatcher(basePath, host, req.getContextPath()); + } + + PathMatcher getPathMatcher(String basePath, String host, String context) { + return new PathMatcherOrChain( + new PathMatcherAndChain( + new SinglePathMatcher(new PreciseMatch("basePath")), + new ScalarEqualsMatcher("${api.basePath}", basePath) + ), + new PathMatcherAndChain( + new SinglePathMatcher(new PreciseMatch("basePath")), + new ScalarRegexpMatcher(Pattern.compile("[/]?(.*)\\$\\{CONTEXT}(.*)"), "$1" + context +"$2") + ), + new PathMatcherAndChain( + new SinglePathMatcher(new PreciseMatch("host")), + new ScalarEqualsMatcher("${api.host}", host) + ) + ); + } + + public OutputStream transform(OutputStream to, PathMatcher pathMatcher) throws IOException { + return Sed.transform(to, pathMatcher); + } + + + +} diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerListingResource.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerListingResource.java new file mode 100644 index 000000000..52c48847d --- /dev/null +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerListingResource.java @@ -0,0 +1,40 @@ +package nl.vpro.swagger; + + +import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; + +import java.time.Duration; + +import javax.servlet.ServletContext; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; + +import org.checkerframework.checker.nullness.qual.Nullable; + + +/** + * The provided implementations by swagger don't work or give in log: + * 2016-12-09 10:51:13,933 WARN - 0:0:0:0:0:0:0:1 GET /api/swagger.json RESTEASY002142: Multiple resource methods match request "GET /swagger". Selecting one. Matching methods: [public javax.ws.rs.core.Response io.swagger.jaxrs.listing.AcceptHeaderApiListingResource.getListingJson(javax.ws.rs.core.Application,javax.servlet.ServletConfig,javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo), public javax.ws.rs.core.Response io.swagger.jaxrs.listing.AcceptHeaderApiListingResource.getListingYaml(javax.ws.rs.core.Application,javax.servlet.ServletConfig,javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo)] [ org.jboss.resteasy.resteasy_jaxrs.i18n - http-nio-8070-exec-1 ] + * + * Probably caused by setting in our web.xml, but anyway. + * + * @author Michiel Meeuwissen + * @since 1.60 + */ +@Path("/openapi") +public class SwaggerListingResource extends OpenApiResource { + + @Context + ServletContext context; + + Duration maxAge = Duration.ofMinutes(15); + + public SwaggerListingResource() { + } + + public SwaggerListingResource(@Nullable Duration maxAge) { + this.maxAge = maxAge == null ? this.maxAge : maxAge; + } + + +} diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java new file mode 100644 index 000000000..09abd40e5 --- /dev/null +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java @@ -0,0 +1,14 @@ +package nl.vpro.swagger.model; + + +import io.swagger.v3.core.util.ParameterProcessor; + +/** + * @author Michiel Meeuwissen + * @since 0.49 + */ +public class InstantParamProcessor extends ParameterProcessor { + public InstantParamProcessor() { + } + +} diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java new file mode 100644 index 000000000..e974736c9 --- /dev/null +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java @@ -0,0 +1,30 @@ +package nl.vpro.swagger.model; + +import io.swagger.v3.jaxrs2.ReaderListener; +import io.swagger.v3.oas.integration.api.OpenApiReader; +import io.swagger.v3.oas.models.OpenAPI; + +/** + * @author Michiel Meeuwissen + * @since 0.49 + */ +public class SwaggerReaderListener implements ReaderListener { + + { + //SwaggerApplication.inject(this); + } + @Override + public void beforeScan(OpenApiReader reader, OpenAPI swagger) { + //swagger.get + } + + @Override + public void afterScan(OpenApiReader reader, OpenAPI swagger) { + + //swagger.getExtensions().get("Locale").getProperties().clear(); + //swagger.getDefinitions().get("Locale").setExample("nl-NL"); + //swagger.getDefinitions().get("Locale").setDescription("ISO 639 language codes"); + + + } +} diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/swagger.tld b/vpro-shared-swagger3/src/main/resources/META-INF/swagger.tld new file mode 100644 index 000000000..375763883 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/swagger.tld @@ -0,0 +1,31 @@ + + + 1.0 + swagger + https://www.vpro.nl/shared/tags/swagger + + + head-links + /META-INF/tags/swagger/head-links.tagx + + + javascript + /META-INF/tags/swagger/javascript.tagx + + + body + /META-INF/tags/swagger/body.tagx + + + logo + /META-INF/tags/swagger/logo.tagx + + + swaggerbase + /META-INF/tags/swagger/swaggerbase.tagx + + + diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx new file mode 100644 index 000000000..a6890ff52 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx @@ -0,0 +1,22 @@ + + + + + + + +
+ +
+ + bla bla + + + +
diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/head-links.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/head-links.tagx new file mode 100644 index 000000000..f326c83a7 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/head-links.tagx @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx new file mode 100644 index 000000000..2dfccac50 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx @@ -0,0 +1,46 @@ + + + + + + + if (url == null || url.length() == 0) { + url = "/api/swagger.json"; + } + if (url.startsWith("/")) { + url = request.getServletContext().getContextPath() + url; + } + request.setAttribute("swaggerjson", url); + + + + + + diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx new file mode 100644 index 000000000..ab3332cf0 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx @@ -0,0 +1,11 @@ + + + + + diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx new file mode 100644 index 000000000..f64734596 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx @@ -0,0 +1,6 @@ + + request.setAttribute("swaggerbase", request.getContextPath() + "/webjars/swagger-ui/4.9.1/"); + diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/vpro/swagger-context.xml b/vpro-shared-swagger3/src/main/resources/META-INF/vpro/swagger-context.xml new file mode 100644 index 000000000..25f41d218 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/vpro/swagger-context.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java b/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java new file mode 100644 index 000000000..94ebea0a3 --- /dev/null +++ b/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java @@ -0,0 +1,36 @@ +package nl.vpro.swagger; + +import java.io.*; + +import org.junit.jupiter.api.Test; +import org.meeuw.json.grep.matching.PathMatcher; + +import nl.vpro.test.util.jackson2.Jackson2TestUtil; + +public class SwaggerFilterTest { + + @Test + public void testFilter() throws IOException { + String input = "{apiVersion: \"3.0\",\n" + + "swaggerVersion: \"1.2\",\n" + + "basePath: \"${api.basePath}\"}"; + + SwaggerFilter filter = new SwaggerFilter(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + PathMatcher matcher = filter.getPathMatcher("/v3/api", "rs.poms.omroep.nl:443", "/v3"); + try (OutputStream out = filter.transform(outputStream, matcher)) { + out.write(input.getBytes()); + } + Jackson2TestUtil.assertThatJson(outputStream.toString()).isSimilarTo("{\n" + + " \"apiVersion\" : \"3.0\",\n" + + " \"swaggerVersion\" : \"1.2\",\n" + + " \"basePath\" : \"/v3/api\"\n" + + "}"); + + + + + } + +} From 80d3318272f8a2de8d8db86904bcb787a0253336 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 4 Apr 2022 14:46:07 +0200 Subject: [PATCH 02/10] Moving swagger 1 stuff out of the way. --- .../vpro-shared-swagger}/README.adoc | 0 .../vpro-shared-swagger}/pom.xml | 0 .../src/main/java/nl/vpro/rs/media/WelcomeFilter.java | 0 .../main/java/nl/vpro/swagger/SwaggerApplication.java | 0 .../src/main/java/nl/vpro/swagger/SwaggerFilter.java | 0 .../java/nl/vpro/swagger/SwaggerListingResource.java | 0 .../nl/vpro/swagger/model/InstantParamProcessor.java | 0 .../nl/vpro/swagger/model/SwaggerReaderListener.java | 0 .../src/main/resources/META-INF/swagger.tld | 0 .../resources/META-INF/tags/swagger/head-links.tagx | 0 .../resources/META-INF/tags/swagger/javascript.tagx | 0 .../main/resources/META-INF/tags/swagger/logo.tagx | 0 .../resources/META-INF/tags/swagger/swaggerbase.tagx | 0 .../main/resources/META-INF/vpro/swagger-context.xml | 0 .../test/java/nl/vpro/swagger/SwaggerFilterTest.java | 0 pom.xml | 2 +- vpro-shared-bom/pom.xml | 11 ++++++----- 17 files changed, 7 insertions(+), 6 deletions(-) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/README.adoc (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/pom.xml (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/java/nl/vpro/rs/media/WelcomeFilter.java (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/java/nl/vpro/swagger/SwaggerApplication.java (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/java/nl/vpro/swagger/SwaggerFilter.java (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/java/nl/vpro/swagger/SwaggerListingResource.java (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/resources/META-INF/swagger.tld (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/resources/META-INF/tags/swagger/head-links.tagx (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/resources/META-INF/tags/swagger/javascript.tagx (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/resources/META-INF/tags/swagger/logo.tagx (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/main/resources/META-INF/vpro/swagger-context.xml (100%) rename {vpro-shared-swagger => archived/vpro-shared-swagger}/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java (100%) diff --git a/vpro-shared-swagger/README.adoc b/archived/vpro-shared-swagger/README.adoc similarity index 100% rename from vpro-shared-swagger/README.adoc rename to archived/vpro-shared-swagger/README.adoc diff --git a/vpro-shared-swagger/pom.xml b/archived/vpro-shared-swagger/pom.xml similarity index 100% rename from vpro-shared-swagger/pom.xml rename to archived/vpro-shared-swagger/pom.xml diff --git a/vpro-shared-swagger/src/main/java/nl/vpro/rs/media/WelcomeFilter.java b/archived/vpro-shared-swagger/src/main/java/nl/vpro/rs/media/WelcomeFilter.java similarity index 100% rename from vpro-shared-swagger/src/main/java/nl/vpro/rs/media/WelcomeFilter.java rename to archived/vpro-shared-swagger/src/main/java/nl/vpro/rs/media/WelcomeFilter.java diff --git a/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerApplication.java b/archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerApplication.java similarity index 100% rename from vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerApplication.java rename to archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerApplication.java diff --git a/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerFilter.java b/archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerFilter.java similarity index 100% rename from vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerFilter.java rename to archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerFilter.java diff --git a/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerListingResource.java b/archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerListingResource.java similarity index 100% rename from vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerListingResource.java rename to archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/SwaggerListingResource.java diff --git a/vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java b/archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java similarity index 100% rename from vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java rename to archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/InstantParamProcessor.java diff --git a/vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java b/archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java similarity index 100% rename from vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java rename to archived/vpro-shared-swagger/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java diff --git a/vpro-shared-swagger/src/main/resources/META-INF/swagger.tld b/archived/vpro-shared-swagger/src/main/resources/META-INF/swagger.tld similarity index 100% rename from vpro-shared-swagger/src/main/resources/META-INF/swagger.tld rename to archived/vpro-shared-swagger/src/main/resources/META-INF/swagger.tld diff --git a/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/head-links.tagx b/archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/head-links.tagx similarity index 100% rename from vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/head-links.tagx rename to archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/head-links.tagx diff --git a/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/javascript.tagx b/archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/javascript.tagx similarity index 100% rename from vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/javascript.tagx rename to archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/javascript.tagx diff --git a/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/logo.tagx b/archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/logo.tagx similarity index 100% rename from vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/logo.tagx rename to archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/logo.tagx diff --git a/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx b/archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx similarity index 100% rename from vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx rename to archived/vpro-shared-swagger/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx diff --git a/vpro-shared-swagger/src/main/resources/META-INF/vpro/swagger-context.xml b/archived/vpro-shared-swagger/src/main/resources/META-INF/vpro/swagger-context.xml similarity index 100% rename from vpro-shared-swagger/src/main/resources/META-INF/vpro/swagger-context.xml rename to archived/vpro-shared-swagger/src/main/resources/META-INF/vpro/swagger-context.xml diff --git a/vpro-shared-swagger/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java b/archived/vpro-shared-swagger/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java similarity index 100% rename from vpro-shared-swagger/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java rename to archived/vpro-shared-swagger/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java diff --git a/pom.xml b/pom.xml index 161bad359..842d46ece 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,6 @@ vpro-shared-monitoring vpro-shared-persistence vpro-shared-rs - vpro-shared-swagger vpro-shared-swagger3 vpro-shared-test @@ -80,6 +79,7 @@ vpro-shared-bom + 2.13.2.1 5.8.2 4.4.0 diff --git a/vpro-shared-swagger3/pom.xml b/vpro-shared-swagger3/pom.xml index ce1786956..8920b09d1 100644 --- a/vpro-shared-swagger3/pom.xml +++ b/vpro-shared-swagger3/pom.xml @@ -59,5 +59,9 @@ org.meeuw mihxil-json-grep + + org.apache.logging.log4j + log4j-core + diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java index c687ee46a..8eb6851e8 100644 --- a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerApplication.java @@ -4,22 +4,14 @@ */ package nl.vpro.swagger; -import io.swagger.v3.core.util.PrimitiveType; -import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; import lombok.extern.slf4j.Slf4j; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.time.*; import java.util.*; -import java.util.stream.Collectors; import javax.annotation.PostConstruct; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; -import com.google.common.collect.ImmutableMap; - /** * Static helper to expose a dummy JAX-RS Application. Swagger needs such an application to expose the API docs for @@ -32,18 +24,6 @@ @ApplicationPath("") public class SwaggerApplication extends Application { private static final Set singletons = new HashSet<>(); - static { - //XTrustProvider.install(); - // swagger sucks a lot. - //https://github.com/swagger-api/swagger-core/issues/1444 - setExternalTypes(ImmutableMap., PrimitiveType>builder() - .put(Duration.class, PrimitiveType.STRING) - .put(Instant.class, PrimitiveType.DATE_TIME) - .put(LocalDateTime.class, PrimitiveType.DATE_TIME) - .put(LocalDate.class, PrimitiveType.DATE) - .build()); - } - @Override public Set> getClasses() { @@ -58,9 +38,7 @@ public Set getSingletons() { @PostConstruct public void init() { - OpenApiResource openApiResource = new OpenApiResource(); - inject(openApiResource); - + //inject(); } /** @@ -74,22 +52,6 @@ public static void inject(Object... services) { singletons.addAll(Arrays.asList(services)); } - private static void setExternalTypes(Map, PrimitiveType> externalTypes) { - // ugly hack until swagger supports adding external classes as primitive types - try { - Field externalTypesField = PrimitiveType.class.getDeclaredField("EXTERNAL_CLASSES"); - Field modifiersField = Field.class.getDeclaredField("modifiers"); - - modifiersField.setAccessible(true); - externalTypesField.setAccessible(true); - modifiersField.set(externalTypesField, externalTypesField.getModifiers() & ~Modifier.FINAL); - Map externalTypesInternal = externalTypes.entrySet().stream() - .collect(Collectors.toMap(e -> e.getKey().getName(), Map.Entry::getValue)); - externalTypesField.set(null, externalTypesInternal); - } catch (NoSuchFieldException|IllegalAccessException e) { - log.warn("Couldn't set external types", e); - } - } } diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java index 0677b2762..b7f222b3a 100644 --- a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java @@ -58,7 +58,6 @@ public void doFilter( } } - PathMatcher matcher = getPathMatcher(req); final ServletOutputStream servletOutputStream = response.getOutputStream(); diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java index e974736c9..bd48c97f5 100644 --- a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/model/SwaggerReaderListener.java @@ -3,11 +3,13 @@ import io.swagger.v3.jaxrs2.ReaderListener; import io.swagger.v3.oas.integration.api.OpenApiReader; import io.swagger.v3.oas.models.OpenAPI; +import lombok.extern.log4j.Log4j2; /** * @author Michiel Meeuwissen * @since 0.49 */ +@Log4j2 public class SwaggerReaderListener implements ReaderListener { { @@ -16,6 +18,7 @@ public class SwaggerReaderListener implements ReaderListener { @Override public void beforeScan(OpenApiReader reader, OpenAPI swagger) { //swagger.get + log.info("Hoi"); } @Override diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx index a6890ff52..699e9a5c7 100644 --- a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx @@ -12,10 +12,9 @@
- +
- bla bla diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx index 2dfccac50..20592e8e0 100644 --- a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx @@ -11,7 +11,7 @@ if (url == null || url.length() == 0) { - url = "/api/swagger.json"; + url = "/api/openapi.json"; } if (url.startsWith("/")) { url = request.getServletContext().getContextPath() + url; @@ -22,24 +22,21 @@ From 087e03d261501af8a1670e5aab3d6f5e3281be14 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 4 Apr 2022 16:48:44 +0200 Subject: [PATCH 05/10] More swagger 3 improvements --- .../resources/META-INF/tags/swagger/body.tagx | 2 +- .../META-INF/tags/swagger/javascript.tagx | 26 +++++++++---------- .../resources/META-INF/tags/swagger/logo.tagx | 2 +- .../META-INF/tags/swagger/swaggerbase.tagx | 3 ++- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx index 699e9a5c7..601054e3c 100644 --- a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/body.tagx @@ -3,7 +3,7 @@ xmlns:swagger="https://www.vpro.nl/shared/tags/swagger" version="2.0" > - + diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx index 20592e8e0..f1406216b 100644 --- a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/javascript.tagx @@ -23,19 +23,19 @@ window.onload = function() { window.ui = SwaggerUIBundle({ - url: "${swaggerjson}", - dom_id: '#swagger-ui', - deepLinking: false, - presets: [ - SwaggerUIBundle.presets.apis - //SwaggerUIStandalonePreset - ], - - plugins: [ - //SwaggerUIBundle.plugins.DownloadUrl - ], - layout: "BaseLayout" - }); + url: "${swaggerjson}", + dom_id: '#swagger-ui', + deepLinking: false, + presets: [ + SwaggerUIBundle.presets.apis + //SwaggerUIStandalonePreset + ], + + plugins: [ + //SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "BaseLayout" + }); };]]> diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx index ab3332cf0..9b669b115 100644 --- a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/logo.tagx @@ -5,7 +5,7 @@ > diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx index f64734596..5363761cd 100644 --- a/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx +++ b/vpro-shared-swagger3/src/main/resources/META-INF/tags/swagger/swaggerbase.tagx @@ -2,5 +2,6 @@ xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" > - request.setAttribute("swaggerbase", request.getContextPath() + "/webjars/swagger-ui/4.9.1/"); + request.setAttribute("webjars", request.getContextPath() + "/webjars"); + request.setAttribute("swaggerbase", request.getAttribute("webjars") + "/swagger-ui/4.9.1/"); From c6226d205b97d1162ecbe3e7389f7d3d3b3278b7 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 4 Apr 2022 16:56:48 +0200 Subject: [PATCH 06/10] More swagger 3 improvements --- .../java/nl/vpro/swagger/SwaggerFilter.java | 15 ++-------- .../webjars/swagger-ui/swagger_icon.svg | 1 + .../nl/vpro/swagger/SwaggerFilterTest.java | 30 ++++++++++++++----- 3 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 vpro-shared-swagger3/src/main/resources/META-INF/resources/webjars/swagger-ui/swagger_icon.svg diff --git a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java index b7f222b3a..257ebba3e 100644 --- a/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java +++ b/vpro-shared-swagger3/src/main/java/nl/vpro/swagger/SwaggerFilter.java @@ -4,7 +4,6 @@ import java.io.IOException; import java.io.OutputStream; -import java.util.regex.Pattern; import javax.servlet.*; import javax.servlet.http.*; @@ -105,22 +104,14 @@ public void write(byte[] b, int off, int len) throws IOException { PathMatcher getPathMatcher(HttpServletRequest req) { String host = req.getServerName() + HttpServletRequestUtils.getPortPostFixIfNeeded(req); String basePath = req.getContextPath() + "/api"; - return getPathMatcher(basePath, host, req.getContextPath()); + return getPathMatcher(basePath, host); } - PathMatcher getPathMatcher(String basePath, String host, String context) { + PathMatcher getPathMatcher(String basePath, String host) { return new PathMatcherOrChain( new PathMatcherAndChain( - new SinglePathMatcher(new PreciseMatch("basePath")), + new SinglePathMatcher(new PreciseMatch("servers"), new ArrayEntryMatch(), new PreciseMatch("url")), new ScalarEqualsMatcher("${api.basePath}", basePath) - ), - new PathMatcherAndChain( - new SinglePathMatcher(new PreciseMatch("basePath")), - new ScalarRegexpMatcher(Pattern.compile("[/]?(.*)\\$\\{CONTEXT}(.*)"), "$1" + context +"$2") - ), - new PathMatcherAndChain( - new SinglePathMatcher(new PreciseMatch("host")), - new ScalarEqualsMatcher("${api.host}", host) ) ); } diff --git a/vpro-shared-swagger3/src/main/resources/META-INF/resources/webjars/swagger-ui/swagger_icon.svg b/vpro-shared-swagger3/src/main/resources/META-INF/resources/webjars/swagger-ui/swagger_icon.svg new file mode 100644 index 000000000..c8321a2b8 --- /dev/null +++ b/vpro-shared-swagger3/src/main/resources/META-INF/resources/webjars/swagger-ui/swagger_icon.svg @@ -0,0 +1 @@ +file_type_swagger \ No newline at end of file diff --git a/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java b/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java index 94ebea0a3..714700204 100644 --- a/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java +++ b/vpro-shared-swagger3/src/test/java/nl/vpro/swagger/SwaggerFilterTest.java @@ -11,22 +11,36 @@ public class SwaggerFilterTest { @Test public void testFilter() throws IOException { - String input = "{apiVersion: \"3.0\",\n" + - "swaggerVersion: \"1.2\",\n" + - "basePath: \"${api.basePath}\"}"; + String input = "{" + + " \"openapi\": \"3.0.1\",\n" + + " \"externalDocs\": {\n" + + " \"description\": \"NPO Frontend API WIKI\",\n" + + " \"url\": \"https://wiki.publiekeomroep.nl/display/npoapi/\"\n" + + " },\n" + + " \"servers\": [\n" + + " {\n" + + " \"url\": \"${api.basePath}\"\n" + + " }\n" + + " ]\n" + + "}"; SwaggerFilter filter = new SwaggerFilter(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - PathMatcher matcher = filter.getPathMatcher("/v3/api", "rs.poms.omroep.nl:443", "/v3"); + PathMatcher matcher = filter.getPathMatcher("/v3/api", "rs.poms.omroep.nl"); try (OutputStream out = filter.transform(outputStream, matcher)) { out.write(input.getBytes()); } Jackson2TestUtil.assertThatJson(outputStream.toString()).isSimilarTo("{\n" + - " \"apiVersion\" : \"3.0\",\n" + - " \"swaggerVersion\" : \"1.2\",\n" + - " \"basePath\" : \"/v3/api\"\n" + - "}"); + " \"openapi\" : \"3.0.1\",\n" + + " \"externalDocs\" : {\n" + + " \"description\" : \"NPO Frontend API WIKI\",\n" + + " \"url\" : \"https://wiki.publiekeomroep.nl/display/npoapi/\"\n" + + " },\n" + + " \"servers\" : [ {\n" + + " \"url\" : \"/v3/api\"\n" + + " } ]\n" + + " }"); From c1feb18c7f61e8dc5a394cd00b0fc5bfa9de4bc8 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Sun, 13 Nov 2022 21:47:15 +0100 Subject: [PATCH 07/10] Dusting of branch. --- pom.xml | 9 --------- vpro-shared-swagger3/pom.xml | 12 ++++++++---- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index e45807510..41d937dcb 100644 --- a/pom.xml +++ b/pom.xml @@ -267,20 +267,11 @@ 6.2.5.Final 1.5.0 -<<<<<<< HEAD 2.1.13 - 1.18.22 -======= - - 1.5.22 1.18.24 ${project.build.directory}/delombok ->>>>>>> main - diff --git a/vpro-shared-swagger3/pom.xml b/vpro-shared-swagger3/pom.xml index 8920b09d1..ebca8a806 100644 --- a/vpro-shared-swagger3/pom.xml +++ b/vpro-shared-swagger3/pom.xml @@ -5,10 +5,10 @@ vpro-shared-parent nl.vpro.shared - 2.30-SNAPSHOT + 3.0-SNAPSHOT vpro-shared-swagger3 - 2.30-SNAPSHOT + 3.0-SNAPSHOT @@ -38,8 +38,8 @@ provided - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api org.webjars @@ -63,5 +63,9 @@ org.apache.logging.log4j log4j-core + + jakarta.annotation + jakarta.annotation-api + From 0246695cf5498f2c0bbc99990067dce541463675 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 16 Jan 2023 12:41:24 +0100 Subject: [PATCH 08/10] was released too. --- vpro-shared-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vpro-shared-bom/pom.xml b/vpro-shared-bom/pom.xml index 575e960e7..58422ffeb 100644 --- a/vpro-shared-bom/pom.xml +++ b/vpro-shared-bom/pom.xml @@ -238,7 +238,7 @@ nl.vpro.shared vpro-shared-swagger - 2.29.3 + 3.0.1 From 1baf099c7ebb60ed15234d79bc8a331504c5f501 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 16 Jan 2023 12:43:00 +0100 Subject: [PATCH 09/10] Upped swagger. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 30b3e11a5..98aecdf3e 100644 --- a/pom.xml +++ b/pom.xml @@ -287,7 +287,7 @@ 1.5.0 - 2.1.13 + 2.2.8 1.18.24 ${project.build.directory}/delombok From 9b2b6636e5d98cb849c67895aa268900602c3a48 Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Mon, 16 Jan 2023 12:45:05 +0100 Subject: [PATCH 10/10] Fixed version. --- vpro-shared-swagger3/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vpro-shared-swagger3/pom.xml b/vpro-shared-swagger3/pom.xml index ebca8a806..bb6d18fd0 100644 --- a/vpro-shared-swagger3/pom.xml +++ b/vpro-shared-swagger3/pom.xml @@ -5,10 +5,10 @@ vpro-shared-parent nl.vpro.shared - 3.0-SNAPSHOT + 3.1-SNAPSHOT vpro-shared-swagger3 - 3.0-SNAPSHOT + 3.1-SNAPSHOT