diff --git a/modules/swagger-core/pom.xml b/modules/swagger-core/pom.xml index 99dfdbb071..ee30f0b50b 100644 --- a/modules/swagger-core/pom.xml +++ b/modules/swagger-core/pom.xml @@ -141,9 +141,9 @@ commons-io - javax.ws.rs - jsr311-api - 1.1.1 + jakarta.ws.rs + jakarta.ws.rs-api + ${jakarta-ws-rs-api-version} test @@ -156,6 +156,7 @@ 2.0.2 + 2.1.6 0.60 0.0 3 diff --git a/modules/swagger-gradle-plugin/src/main/java/io/swagger/v3/plugins/gradle/tasks/ResolveTask.java b/modules/swagger-gradle-plugin/src/main/java/io/swagger/v3/plugins/gradle/tasks/ResolveTask.java index d78e6ef886..768f3fa8c5 100644 --- a/modules/swagger-gradle-plugin/src/main/java/io/swagger/v3/plugins/gradle/tasks/ResolveTask.java +++ b/modules/swagger-gradle-plugin/src/main/java/io/swagger/v3/plugins/gradle/tasks/ResolveTask.java @@ -8,7 +8,6 @@ import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.PathSensitive; diff --git a/modules/swagger-jaxrs2/pom.xml b/modules/swagger-jaxrs2/pom.xml index a66e22d1f9..9436335c02 100644 --- a/modules/swagger-jaxrs2/pom.xml +++ b/modules/swagger-jaxrs2/pom.xml @@ -141,7 +141,7 @@ org.javassist javassist - 3.22.0-GA + 3.25.0-GA commons-io diff --git a/modules/swagger-project-jakarta/.gitignore b/modules/swagger-project-jakarta/.gitignore new file mode 100644 index 0000000000..d5ece13ddc --- /dev/null +++ b/modules/swagger-project-jakarta/.gitignore @@ -0,0 +1,18 @@ +build/ +lib/*.jar +target +.idea +.idea_modules +.settings +.project +.classpath +.cache +atlassian-ide-plugin.xml +*.iml +.java-version +sonar-project.properties +test-output/ +*.pyc +**/transformed/*.jar +**/transformed/*.test-jar +**/transformed/*.maven-plugin diff --git a/modules/swagger-project-jakarta/modules/swagger-annotations-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-annotations-jakarta/pom.xml new file mode 100644 index 0000000000..191c98c88c --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-annotations-jakarta/pom.xml @@ -0,0 +1,20 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-annotations-jakarta + swagger-annotations-jakarta + swagger-annotations-jakarta + + + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-annotations-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-annotations-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-annotations-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml new file mode 100644 index 0000000000..87b9177737 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-core-jakarta/pom.xml @@ -0,0 +1,82 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-core-jakarta + swagger-core-jakarta + swagger-core-jakarta + + + + + + org.apache.commons + commons-lang3 + + + org.slf4j + slf4j-api + + + ch.qos.logback + logback-classic + provided + + + ch.qos.logback + logback-core + provided + + + commons-io + commons-io + + + + + io.swagger.core.v3 + swagger-annotations-jakarta + ${project.parent.version} + + + io.swagger.core.v3 + swagger-models-jakarta + ${project.parent.version} + + + + jakarta.xml.bind + jakarta.xml.bind-api + + + jakarta.validation + jakarta.validation-api + + + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-core-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-core-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-core-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-integration-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-integration-jakarta/pom.xml new file mode 100644 index 0000000000..28ef192792 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-integration-jakarta/pom.xml @@ -0,0 +1,37 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-integration-jakarta + swagger-integration-jakarta + swagger-integration-jakarta + + + + + + io.github.classgraph + classgraph + + + + io.swagger.core.v3 + swagger-core-jakarta + ${project.version} + + + io.swagger.core.v3 + swagger-models-jakarta + ${project.version} + + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-integration-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-integration-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-integration-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml new file mode 100644 index 0000000000..bf71ef333e --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/pom.xml @@ -0,0 +1,83 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-jaxrs2-jakarta + swagger-jaxrs2-jakarta + swagger-jaxrs2-jakarta + + + + + + ch.qos.logback + logback-classic + provided + + + ch.qos.logback + logback-core + provided + + + io.github.classgraph + classgraph + + + org.javassist + javassist + 3.25.0-GA + + + commons-io + commons-io + + + + io.swagger.core.v3 + swagger-models-jakarta + ${project.version} + + + io.swagger.core.v3 + swagger-annotations-jakarta + ${project.version} + + + io.swagger.core.v3 + swagger-integration-jakarta + ${project.version} + + + + + jakarta.ws.rs + jakarta.ws.rs-api + provided + + + jakarta.servlet + jakarta.servlet-api + provided + + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + jakarta + ${jackson-version} + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-jakarta/pom.xml new file mode 100644 index 0000000000..7de6bd82e7 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-jakarta/pom.xml @@ -0,0 +1,49 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-jaxrs2-servlet-initializer-jakarta + swagger-jaxrs2-servlet-initializer-jakarta + swagger-jaxrs2-servlet-initializer-jakarta + + + + + + ch.qos.logback + logback-classic + provided + + + ch.qos.logback + logback-core + provided + + + + io.swagger.core.v3 + swagger-jaxrs2-jakarta + ${project.version} + provided + + + + jakarta.ws.rs + jakarta.ws.rs-api + provided + + + jakarta.servlet + jakarta.servlet-api + provided + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-v2-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-v2-jakarta/pom.xml new file mode 100644 index 0000000000..4a57e3fe8d --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-v2-jakarta/pom.xml @@ -0,0 +1,49 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-jaxrs2-servlet-initializer-v2-jakarta + swagger-jaxrs2-servlet-initializer-v2-jakarta + swagger-jaxrs2-servlet-initializer-v2-jakarta + + + + + + ch.qos.logback + logback-classic + provided + + + ch.qos.logback + logback-core + provided + + + + io.swagger.core.v3 + swagger-jaxrs2-jakarta + ${project.version} + provided + + + + jakarta.ws.rs + jakarta.ws.rs-api + provided + + + jakarta.servlet + jakarta.servlet-api + provided + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-v2-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-v2-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-jaxrs2-servlet-initializer-v2-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/pom.xml new file mode 100644 index 0000000000..db83620e37 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/pom.xml @@ -0,0 +1,180 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-maven-plugin-jakarta + maven-plugin + swagger-maven-plugin-jakarta + swagger-maven-plugin-jakarta + + + + + com.coderplus.maven.plugins + copy-rename-maven-plugin + 1.0.1 + + + copy-file + compile + + rename + + + true + true + ${project.basedir}/transformed/${project.artifactId}-${project.version}.maven-plugin + ${project.basedir}/transformed/${project.artifactId}-${project.version}.jar + + + + + + maven-resources-plugin + 3.2.0 + + + copy-resources + package + + copy-resources + + + ${project.build.directory} + true + + + transformed + false + + ${project.artifactId}-${project.version}.jar + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + package + + java + + + io.swagger.v3.plugin.maven.jakarta.JakartaTransformer + + ${project.build.directory}/${project.artifactId}-${project.version}.jar + ${project.build.directory}/transformertemp + ${jakarta.ws-version} + ${jakarta.activation-api-version} + ${jackson-version} + + + + + + + org.apache.maven.plugins + maven-plugin-plugin + 3.6.0 + + + true + + + + mojo-descriptor + + descriptor + + + + + + + + + + org.apache.maven + maven-plugin-api + ${maven.version} + provided + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus + plexus-component-annotations + + + org.codehaus.plexus + plexus-classworlds + + + + + org.apache.maven + maven-core + ${maven.version} + provided + + + org.codehaus.plexus + plexus-utils + + + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.6.0 + provided + + + org.apache.maven + maven-artifact + + + + + org.apache.commons + commons-lang3 + 3.7 + + + org.codehaus.plexus + plexus-utils + 3.2.1 + + + org.codehaus.plexus + plexus-component-annotations + 2.1.0 + + + + io.swagger.core.v3 + swagger-jaxrs2-jakarta + ${project.version} + + + + + + UTF-8 + 3.6.3 + + diff --git a/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java new file mode 100644 index 0000000000..5646da3f09 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/src/main/java/io/swagger/v3/plugin/maven/jakarta/JakartaTransformer.java @@ -0,0 +1,364 @@ +package io.swagger.v3.plugin.maven.jakarta; + +import java.io.BufferedInputStream; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.URI; +import java.nio.file.CopyOption; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.StandardCopyOption; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; + +/** + * Transforms swagger-maven-plugin jar file to be used with Jakarta namespace using artifactId swagger-maven-plugin-jakarta + * + */ +public class JakartaTransformer { + + + /* + * Substitution tokens + regex + */ + private static Set files = + Stream.of( + // "META-INF/MANIFEST.MF", + "META-INF/maven/plugin.xml", + "META-INF/maven/io.swagger.core.v3/swagger-maven-plugin/plugin-help.xml", + // "META-INF/plexus/components.xml", + "META-INF/maven/io.swagger.core.v3/swagger-maven-plugin/pom.xml", + "META-INF/maven/io.swagger.core.v3/swagger-maven-plugin/pom.properties") + .collect(Collectors.toCollection(HashSet::new)); + + private static final String jakartaXmlBindDep = "\n" + + " jakarta.xml.bind\n" + + " jakarta.xml.bind-api\n" + + " VERSION\n" + + " \n"; + + private static final String jakartaXmlBindRegex = "^.*(.*jakarta\\.xml\\.bind((?!).)*).*$"; + + private static final String jakartaValidationDep = "\n" + + " jakarta.validation\n" + + " jakarta.validation-api\n" + + " VERSION\n" + + " \n"; + + private static final String jakartaValidationRegex = "^.*(.*jakarta\\.validation((?!).)*).*$"; + + private static final String jacksonJsonDep = "\n" + + " com.fasterxml.jackson.jaxrs\n" + + " jackson-jaxrs-json-provider\n" + + " jakarta\n" + + " VERSION\n" + + " \n" + + " \n" + + " jakarta.activation\n" + + " jakarta.activation-api\n" + + " \n" + + " \n" + + " jakarta.xml.bind\n" + + " jakarta.xml.bind-api\n" + + " \n" + + " \n" + + " "; + + private static final String jacksonJsonRegex = "^.*(.*jackson\\-jaxrs\\-json((?!).)*).*$"; + + private static final String jacksonBaseDep = "\n" + + " com.fasterxml.jackson.jaxrs\n" + + " jackson-jaxrs-base\n" + + " jakarta\n" + + " VERSION\n" + + " "; + + private static final String jacksonBaseRegex = "^.*(.*jackson\\-jaxrs\\-base((?!).)*).*$"; + + private static final String jacksonJaxbDep = "\n" + + " com.fasterxml.jackson.module\n" + + " jackson-module-jaxb-annotations\n" + + " jakarta\n" + + " VERSION\n" + + " \n" + + " \n" + + " jakarta.activation\n" + + " jakarta.activation-api\n" + + " \n" + + " \n" + + " jakarta.xml.bind\n" + + " jakarta.xml.bind-api\n" + + " \n" + + " \n" + + " "; + + private static final String jacksonJaxbRegex = "^.*(.*jackson\\-module\\-jaxb((?!).)*).*$"; + + private static final String jakartaActivationDep = "\n" + + " jakarta.activation\n" + + " jakarta.activation-api\n" + + " VERSION\n" + + " "; + + private static final String jakartaActivationRegex = "^.*(.*jakarta\\.activation((?!).)*).*$"; + + /** + * + * Extracts Jar into temp directory + * + */ + private static void extract(String inPath, String outPath) throws Exception { + + Path target = Paths.get(outPath); + Path source = Paths.get(inPath); + + try (ZipInputStream zis = new ZipInputStream(new FileInputStream(source.toFile()))) { + + // list files in zip + ZipEntry zipEntry = zis.getNextEntry(); + + while (zipEntry != null) { + + boolean isDirectory = false; + + if (zipEntry.getName().endsWith(File.separator)) { + isDirectory = true; + } + + Path targetDirResolved = target.resolve(zipEntry.getName()); + + Path normalizePath = targetDirResolved.normalize(); + if (!normalizePath.startsWith(target)) { + throw new IOException("Bad zip entry: " + zipEntry.getName()); + } + + Path newPath = normalizePath; + + if (isDirectory) { + Files.createDirectories(newPath); + } else { + if (newPath.getParent() != null) { + if (Files.notExists(newPath.getParent())) { + Files.createDirectories(newPath.getParent()); + } + } + Files.copy(zis, newPath, StandardCopyOption.REPLACE_EXISTING); + } + + zipEntry = zis.getNextEntry(); + + } + zis.closeEntry(); + + } + } + + /** + * + * Compress temp directory back into Jar after transformed + * + */ + + public static void jar(Path sourcePath, String outJarPath) throws IOException { + + URI uri = URI.create("jar:file:" + outJarPath); + + Files.walkFileTree(sourcePath, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, + BasicFileAttributes attributes) { + + if (attributes.isSymbolicLink()) { + return FileVisitResult.CONTINUE; + } + + Map env = new HashMap<>(); + env.put("create", "true"); + + try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) { + + Path targetFile = sourcePath.relativize(file); + Path pathInZipfile = zipfs.getPath(targetFile.toString()); + + if (pathInZipfile.getParent() != null) { + Files.createDirectories(pathInZipfile.getParent()); + } + + CopyOption[] options = { + StandardCopyOption.REPLACE_EXISTING, + StandardCopyOption.COPY_ATTRIBUTES, + LinkOption.NOFOLLOW_LINKS + }; + Files.copy(file, pathInZipfile, options); + + } catch (IOException e) { + e.printStackTrace(); + } + + return FileVisitResult.CONTINUE; + } + + @Override + public FileVisitResult visitFileFailed(Path file, IOException exc) { + // + return FileVisitResult.CONTINUE; + } + + }); + + } + + /** + * + * Replaces swagger artifact adding `-jakarta` suffix + * + */ + private static void replaceInJar(String filePath) throws Exception { + try (FileInputStream fis = new FileInputStream(filePath); + BufferedInputStream bis = new BufferedInputStream(fis); + ZipInputStream zis = new ZipInputStream(bis); + ZipOutputStream out = new ZipOutputStream(new FileOutputStream(filePath + ".jar"))) { + + for (ZipEntry zipEntry; (zipEntry = zis.getNextEntry()) != null; ) { + out.putNextEntry(new ZipEntry(zipEntry.getName())); + + if (files.contains(zipEntry.getName())) { + BufferedReader reader = new BufferedReader(new InputStreamReader(zis)); + PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(out))); + for (String line; (line = reader.readLine()) != null; ) { + line = line.replace("swagger-maven-plugin", "swagger-maven-plugin-jakarta"); + line = line.replace("swagger-project", "swagger-project-jakarta"); + line = line.replace("swagger-jaxrs2", "swagger-jaxrs2-jakarta"); + line = line.replace("swagger-models", "swagger-models-jakarta"); + line = line.replace("swagger-annotations", "swagger-annotations-jakarta"); + line = line.replace("swagger-core", "swagger-core-jakarta"); + line = line.replace("swagger-integration", "swagger-integration-jakarta"); + writer.println(line); + } + writer.flush(); + } else { + byte[] buf = new byte[8192]; + int length; + while ((length = zis.read(buf)) > 0) { + out.write(buf, 0, length); + } + } + + } + } + Files.delete(Paths.get(filePath)); + Files.move(Paths.get(filePath + ".jar"), Paths.get(filePath)); + + } + + public static void main(String[] args) throws Exception { + String filePath = args[0]; + String outPath = args[1]; + String jakartaVersion = args[2]; + String jakartaActivationVersion = args[3]; + String jacksonVersion = args[4]; + + replaceInJar(filePath); + extract(filePath, outPath); + + // rename dir + Files.move(Paths.get(outPath + File.separator + + "META-INF" + File.separator + + "maven" + File.separator + + "io.swagger.core.v3" + File.separator + + "swagger-maven-plugin"), + Paths.get(outPath + File.separator + + "META-INF" + File.separator + + "maven" + File.separator + + "io.swagger.core.v3" + File.separator + + "swagger-maven-plugin-jakarta") + ); + + Path pluginXmlPath = Paths.get( + outPath + + File.separator + "META-INF" + + File.separator + "maven" + + File.separator + "plugin.xml"); + String pluginXml = new String(Files.readAllBytes(pluginXmlPath)); + Matcher m = Pattern.compile(jakartaXmlBindRegex, Pattern.DOTALL).matcher(pluginXml); + while (m.find()) { + pluginXml = pluginXml.substring(m.start(), m.start(1)) + + jakartaXmlBindDep.replace("VERSION", jakartaVersion) + + pluginXml.substring(m.end(1), m.end()); + } + + m = Pattern.compile(jakartaValidationRegex, Pattern.DOTALL).matcher(pluginXml); + while (m.find()) { + pluginXml = pluginXml.substring(m.start(), m.start(1)) + + jakartaValidationDep.replace("VERSION", jakartaVersion) + + pluginXml.substring(m.end(1), m.end()); + } + + m = Pattern.compile(jacksonJsonRegex, Pattern.DOTALL).matcher(pluginXml); + while (m.find()) { + pluginXml = pluginXml.substring(m.start(), m.start(1)) + + jacksonJsonDep.replace("VERSION", jacksonVersion) + + pluginXml.substring(m.end(1), m.end()); + } + + m = Pattern.compile(jacksonBaseRegex, Pattern.DOTALL).matcher(pluginXml); + while (m.find()) { + pluginXml = pluginXml.substring(m.start(), m.start(1)) + + jacksonBaseDep.replace("VERSION", jacksonVersion) + + pluginXml.substring(m.end(1), m.end()); + } + + m = Pattern.compile(jacksonJaxbRegex, Pattern.DOTALL).matcher(pluginXml); + while (m.find()) { + pluginXml = pluginXml.substring(m.start(), m.start(1)) + + jacksonJaxbDep.replace("VERSION", jacksonVersion) + + pluginXml.substring(m.end(1), m.end()); + } + + m = Pattern.compile(jakartaActivationRegex, Pattern.DOTALL).matcher(pluginXml); + while (m.find()) { + pluginXml = pluginXml.substring(m.start(), m.start(1)) + + jakartaActivationDep.replace("VERSION", jakartaActivationVersion) + + pluginXml.substring(m.end(1), m.end()); + } + + // write back to plugin.xml file + Files.write(pluginXmlPath, pluginXml.getBytes()); + + // delete the original jar + Files.delete(Paths.get(filePath)); + // compress the new jar + jar(Paths.get(outPath), filePath); + // delete the temp directory + Files.walk(Paths.get(outPath)) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + + } + +} diff --git a/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-maven-plugin-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/modules/swagger-models-jakarta/pom.xml b/modules/swagger-project-jakarta/modules/swagger-models-jakarta/pom.xml new file mode 100644 index 0000000000..02f3242329 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-models-jakarta/pom.xml @@ -0,0 +1,25 @@ + + + io.swagger.core.v3 + swagger-project-jakarta + 2.1.7-SNAPSHOT + ../.. + + 4.0.0 + swagger-models-jakarta + swagger-models-jakarta + swagger-models-jakarta + + + + + + com.fasterxml.jackson.core + jackson-annotations + + + + + diff --git a/modules/swagger-project-jakarta/modules/swagger-models-jakarta/transformed/README.md b/modules/swagger-project-jakarta/modules/swagger-models-jakarta/transformed/README.md new file mode 100644 index 0000000000..e96b3ae207 --- /dev/null +++ b/modules/swagger-project-jakarta/modules/swagger-models-jakarta/transformed/README.md @@ -0,0 +1,3 @@ +#### Don't delete + +Target directory for eclipse transformer plugin; Jakarta EE 9+ artifacts are generated in this directory diff --git a/modules/swagger-project-jakarta/pom.xml b/modules/swagger-project-jakarta/pom.xml new file mode 100644 index 0000000000..b98bce6c2c --- /dev/null +++ b/modules/swagger-project-jakarta/pom.xml @@ -0,0 +1,533 @@ + + 4.0.0 + io.swagger.core.v3 + swagger-project-jakarta + pom + swagger-project-jakarta + swagger-project-jakarta + 2.1.7-SNAPSHOT + https://github.com/swagger-api/swagger-core + + scm:git:git@github.com:swagger-api/swagger-core.git + scm:git:git@github.com:swagger-api/swagger-core.git + https://github.com/swagger-api/swagger-core + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + 2.2.0 + + + + frantuma + Francesco Tumanischvili + frantuma@yahoo.com + + + + github + https://github.com/swagger-api/swagger-core/issues + + + + swagger-swaggersocket + https://groups.google.com/forum/#!forum/swagger-swaggersocket + + + + + Apache License 2.0 + http://www.apache.org/licenses/LICENSE-2.0.html + repo + + + + install + target + ${project.artifactId}-${project.version} + + + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-enforcer-plugin + ${enforcer-plugin-version} + + + enforce-versions + + enforce + + + + + + true + No Snapshots Allowed! + + + (,2.1.0),(2.1.0,2.2.0),(2.2.0,) + Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively. + + + + + + + + maven-dependency-plugin + + + copy-deps + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + maven-resources-plugin + 3.2.0 + + + copy-resources + package + + copy-resources + + + ${project.build.directory} + true + + + transformed + false + + ${project.artifactId}-${project.version}.jar + + + + + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + ossrh + https://oss.sonatype.org/ + true + 30 + + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + + --pinentry-mode + loopback + + + + + org.eclipse.jetty + jetty-maven-plugin + ${jetty-version} + + + org.glassfish.jersey.core + jersey-server + ${jersey2-version} + + + org.javassist + javassist + + + + + org.glassfish.jersey.containers + jersey-container-servlet + ${jersey2-version} + + + org.javassist + javassist + + + + + org.glassfish.jersey.media + jersey-media-multipart + ${jersey2-version} + + + org.javassist + javassist + + + + + org.glassfish.jersey.inject + jersey-hk2 + ${jersey2-version} + + + org.javassist + javassist + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + ${enforcer-plugin-version} + + + + + + + release + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + + --pinentry-mode + loopback + + + + + sign-artifacts + verify + + sign + + + + + + + + + + modules/swagger-annotations-jakarta + modules/swagger-models-jakarta + modules/swagger-core-jakarta + modules/swagger-integration-jakarta + modules/swagger-jaxrs2-jakarta + modules/swagger-jaxrs2-servlet-initializer-jakarta + modules/swagger-jaxrs2-servlet-initializer-v2-jakarta + modules/swagger-maven-plugin-jakarta + + + + target/site + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.0 + + true + 1.8 + UTF-8 + 1g + true + + https://docs.oracle.com/javase/8/docs/api + + + + + + org.apache.maven.plugins + maven-jxr-plugin + 2.5 + + true + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 2.9 + + + + project-team + + + + + + + + + + org.apache.maven + maven-plugin-tools-api + 3.5.1 + + + org.slf4j + slf4j-api + ${slf4j-version} + compile + + + org.slf4j + slf4j-ext + ${slf4j-version} + compile + + + org.slf4j + slf4j-log4j12 + ${slf4j-version} + provided + + + org.apache.commons + commons-lang3 + ${commons-lang-version} + compile + + + org.apache.httpcomponents + httpclient + ${httpcomponents-version} + + + commons-io + commons-io + ${commons-io-version} + test + + + io.github.classgraph + classgraph + ${classgraph-version} + + + ch.qos.logback + logback-classic + ${logback-version} + provided + + + ch.qos.logback + logback-core + ${logback-version} + provided + + + joda-time + joda-time + ${joda-time-version} + + + org.joda + joda-convert + ${joda-version} + + + org.yaml + snakeyaml + ${snakeyaml-version} + + + + + + jakarta.servlet + jakarta.servlet-api + ${servlet-api-version} + provided + + + + jakarta.xml.bind + jakarta.xml.bind-api + ${jakarta.xml.bind-api-version} + + + jakarta.activation + jakarta.activation-api + ${jakarta.activation-api-version} + + + jakarta.ws.rs + jakarta.ws.rs-api + ${jakarta.ws-version} + + + jakarta.validation + jakarta.validation-api + ${jakarta.ws-version} + + + + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson-version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson-version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson-version} + + + jakarta.activation + jakarta.activation-api + + + jakarta.xml.bind + jakarta.xml.bind-api + + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson-version} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-version} + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + jakarta + ${jackson-version} + + + jakarta.activation + jakarta.activation-api + + + jakarta.xml.bind + jakarta.xml.bind-api + + + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-base + jakarta + ${jackson-version} + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + jakarta + ${jackson-version} + + + jakarta.activation + jakarta.activation-api + + + jakarta.xml.bind + jakarta.xml.bind-api + + + + + + + 1.9.2 + 2.9.9 + 1.27 + 3.0.0 + 3.0.0 + 2.0.0 + 5.1.2 + 5.0.0 + 3.0.1 + 4.13.1 + 2.12.1 + 1.2.3 + 4.8.95 + 30.1-jre + 1.10.9 + 3.7 + 2.6 + 1.7.25 + 9.4.9.v20180320 + 7.3.0 + 2.28.2 + 4.3.2 + 4.5.13 + 1.15 + + 2.21.0 + 3.0.0-M2 + 2.22.2 + + 0.90 + 0.90 + 0 + + UTF-8 + https://oss.sonatype.org/content/repositories/snapshots/ + + 3.6.3 + 1.20 + + diff --git a/pom.xml b/pom.xml index e14e11bac4..1bef27d0c2 100644 --- a/pom.xml +++ b/pom.xml @@ -212,6 +212,24 @@ true--> + + org.eclipse.transformer + org.eclipse.transformer.maven + 0.2.0 + + jakarta + ${project.basedir}/../swagger-project-jakarta/modules/${project.artifactId}-jakarta/transformed + + + + transform-jakarta + + run + + package + + + @@ -373,6 +391,7 @@ modules/swagger-jaxrs2-servlet-initializer modules/swagger-jaxrs2-servlet-initializer-v2 modules/swagger-maven-plugin + modules/swagger-project-jakarta @@ -595,7 +614,7 @@ 1.9.2 2.9.9 - 1.26 + 1.27 2.1.6 2.3.3 1.2.2 @@ -603,7 +622,7 @@ 4.0.3 2.26 4.13.1 - 2.11.1 + 2.12.1 1.2.3 4.8.95 30.1-jre