This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git
commit 9debdd613b9121803fabc67ed6a42dd3815ff139 Author: Gary Gregory <[email protected]> AuthorDate: Fri Jun 6 15:21:49 2025 -0400 org.apache.juneau.microservice.Microservice.Builder.manifest(Object) now handles java.nio.file.Path --- RELEASE-NOTES.txt | 3 +- .../java/org/apache/juneau/utils/ManifestFile.java | 67 +++++++++++++++------- .../apache/juneau/microservice/Microservice.java | 46 ++++++++------- 3 files changed, 72 insertions(+), 44 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 3e7618739..7ebcd2707 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -16,6 +16,7 @@ Release Notes - Juneau - Version 9.1.0 ** Changes + * Bump Java platform requirement from Java 11 to 17. * [JUNEAU-253] - Bump springboot.version from 3.2.2 to 3.4.4. * [JUNEAU-254] - Bump jetty.version from 11.0.16 to 11.0.21, #207, #208. * [JUNEAU-255] - Bump org.apache:apache from 29 to 31. @@ -26,7 +27,6 @@ Release Notes - Juneau - Version 9.1.0 * [JUNEAU-260] - Bump maven-surefire-report-plugin from 2.22.2 to 3.1.2. * [JUNEAU-261] - Bump org.apache.derby:derby from 10.16.1.1 to 10.17.1.0 #118. * [JUNEAU-263] - Remove Google Analytics from the Juneau Website. - * Bump Java platform requirement from Java 11 to 17. * [JUNEAU-262] Port Jetty from 11.0.20 to 12.0.20 #148, #156, #160, #165, #169, #175, #183, #201. * [JUNEAU-252] Bump org.eclipse.jgit:org.eclipse.jgit from 6.6.1.202309021850-r to 7.2.1.202505142326-r #112, #123, #137, #152, #166, #184, #191, #209. * [JUNEAU-253] Bump springboot.version from 3.1.3 to 3.4.5 #136, #138, #142, #146, #153, #158, #162, #167, #172, #177, #186, #187, #188, #193, #198. @@ -51,6 +51,7 @@ Release Notes - Juneau - Version 9.1.0 * org.apache.juneau.microservice.jetty.JettyMicroservice.Builder.jettyXml(Object, boolean) now handles java.nio.file.Path. * Add org.apache.juneau.common.internal.PathReaderBuilder * Add org.apache.juneau.common.internal.IOUtils.read(Path) + * org.apache.juneau.microservice.Microservice.Builder.manifest(Object) now handles java.nio.file.Path. Release Notes - Juneau - Version 9.0.1 diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ManifestFile.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ManifestFile.java index bbedf0ca7..c38c903b9 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ManifestFile.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ManifestFile.java @@ -12,14 +12,23 @@ // *************************************************************************************************************************** package org.apache.juneau.utils; -import static org.apache.juneau.common.internal.IOUtils.*; +import static org.apache.juneau.common.internal.IOUtils.UTF8; +import static org.apache.juneau.common.internal.IOUtils.read; -import java.io.*; -import java.net.*; -import java.util.jar.*; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.jar.Manifest; -import org.apache.juneau.collections.*; -import org.apache.juneau.common.internal.*; +import org.apache.juneau.collections.JsonMap; +import org.apache.juneau.common.internal.ThrowableUtils; /** * Utility class for working with Jar manifest files. @@ -37,21 +46,37 @@ public class ManifestFile extends JsonMap { private static final long serialVersionUID = 1L; - /** - * Create an instance of this class from a manifest file on the file system. - * - * @param f The manifest file. - * @throws IOException If a problem occurred while trying to read the manifest file. - */ - public ManifestFile(File f) throws IOException { - Manifest mf = new Manifest(); - try (FileInputStream fis = new FileInputStream(f)) { - mf.read(fis); - load(mf); - } catch (IOException e) { - throw new IOException("Problem detected in MANIFEST.MF. Contents below:\n"+read(f), e); - } - } + /** + * Create an instance of this class from a manifest file on the file system. + * + * @param f The manifest file. + * @throws IOException If a problem occurred while trying to read the manifest file. + */ + public ManifestFile(File f) throws IOException { + Manifest mf = new Manifest(); + try (FileInputStream fis = new FileInputStream(f)) { + mf.read(fis); + load(mf); + } catch (IOException e) { + throw new IOException("Problem detected in MANIFEST.MF. Contents below:\n"+read(f), e); + } + } + + /** + * Create an instance of this class from a manifest path on the file system. + * + * @param path The manifest path. + * @throws IOException If a problem occurred while trying to read the manifest path. + */ + public ManifestFile(Path path) throws IOException { + Manifest mf = new Manifest(); + try (InputStream fis = Files.newInputStream(path)) { + mf.read(fis); + load(mf); + } catch (IOException e) { + throw new IOException("Problem detected in MANIFEST.MF. Contents below:\n"+read(path), e); + } + } /** * Create an instance of this class from a {@link Manifest} object. diff --git a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java index 72c2d0d8c..2277ade12 100755 --- a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java +++ b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/Microservice.java @@ -263,28 +263,30 @@ public class Microservice implements ConfigEventListener { * @return This object. * @throws IOException Thrown by underlying stream. */ - public Builder manifest(Object value) throws IOException { - if (value == null) - this.manifest = null; - else if (value instanceof ManifestFile) - this.manifest = (ManifestFile)value; - else if (value instanceof Manifest) - this.manifest = new ManifestFile((Manifest)value); - else if (value instanceof Reader) - this.manifest = new ManifestFile((Reader)value); - else if (value instanceof InputStream) - this.manifest = new ManifestFile((InputStream)value); - else if (value instanceof File) - this.manifest = new ManifestFile((File)value); - else if (value instanceof String) - this.manifest = new ManifestFile(resolveFile((String)value)); - else if (value instanceof Class) - this.manifest = new ManifestFile((Class<?>)value); - else - throw new BasicRuntimeException("Invalid type passed to Builder.manifest(Object). Type=[{0}]", className(value)); - - return this; - } + public Builder manifest(Object value) throws IOException { + if (value == null) + this.manifest = null; + else if (value instanceof ManifestFile manifestFile) + this.manifest = manifestFile; + else if (value instanceof Manifest manifest) + this.manifest = new ManifestFile(manifest); + else if (value instanceof Reader reader) + this.manifest = new ManifestFile(reader); + else if (value instanceof InputStream inputStream) + this.manifest = new ManifestFile(inputStream); + else if (value instanceof File file) + this.manifest = new ManifestFile(file); + else if (value instanceof Path path) + this.manifest = new ManifestFile(path); + else if (value instanceof String string) + this.manifest = new ManifestFile(resolveFile(string)); + else if (value instanceof Class clazz) + this.manifest = new ManifestFile(clazz); + else + throw new BasicRuntimeException("Invalid type passed to Builder.manifest(Object). Type=[{0}]", className(value)); + + return this; + } /** * Specifies the logger used by the microservice and returned by the {@link Microservice#getLogger()} method.
