This is an automated email from the ASF dual-hosted git repository. maartenc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ant-ivy.git
The following commit(s) were added to refs/heads/master by this push: new ec7b7282 Reorganized code a bit in an attempt to avoid class loading issues while loading ivy settings. ec7b7282 is described below commit ec7b72825148a4678772357fecb9994d26a94df6 Author: Maarten Coene <4728619+maart...@users.noreply.github.com> AuthorDate: Tue Apr 29 23:21:51 2025 +0200 Reorganized code a bit in an attempt to avoid class loading issues while loading ivy settings. --- optional.patterns | 2 +- .../org/apache/ivy/core/settings/IvySettings.java | 2 +- .../apache/ivy/plugins/pack/Pack200Packing.java | 18 +-------- .../org/apache/ivy/plugins/pack/Pack200Util.java | 45 ++++++++++++++++++++++ 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/optional.patterns b/optional.patterns index a480cf7a..6163220b 100644 --- a/optional.patterns +++ b/optional.patterns @@ -20,7 +20,7 @@ #This file defines the sources to compile for ivy-optional.jar org/apache/ivy/Main.java org/apache/ivy/plugins/matcher/GlobPatternMatcher.java -org/apache/ivy/plugins/pack/Pack200Packing.java +org/apache/ivy/plugins/pack/Pack200*.java org/apache/ivy/plugins/repository/sftp/**/*.java org/apache/ivy/plugins/repository/ssh/**/*.java org/apache/ivy/plugins/repository/vfs/**/*.java diff --git a/src/java/org/apache/ivy/core/settings/IvySettings.java b/src/java/org/apache/ivy/core/settings/IvySettings.java index fa09e886..89591886 100644 --- a/src/java/org/apache/ivy/core/settings/IvySettings.java +++ b/src/java/org/apache/ivy/core/settings/IvySettings.java @@ -297,7 +297,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P .getClassLoader() .loadClass("org.apache.ivy.plugins.pack.Pack200Packing"); addArchivePacking(pack200.newInstance()); - } catch (Throwable t) { + } catch (Exception t) { // ignore: the pack200 packing isn't on the classpath Message.info("impossible to define pack200 packaging: " + "org.apache.ivy.plugins.pack.Pack200Packing was not found", t); diff --git a/src/java/org/apache/ivy/plugins/pack/Pack200Packing.java b/src/java/org/apache/ivy/plugins/pack/Pack200Packing.java index 9a47da1e..e5d45aa4 100644 --- a/src/java/org/apache/ivy/plugins/pack/Pack200Packing.java +++ b/src/java/org/apache/ivy/plugins/pack/Pack200Packing.java @@ -17,12 +17,8 @@ */ package org.apache.ivy.plugins.pack; -import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.zip.GZIPInputStream; - -import org.apache.commons.compress.compressors.pack200.Pack200CompressorInputStream; public class Pack200Packing extends StreamPacking { @@ -51,19 +47,7 @@ public class Pack200Packing extends StreamPacking { @Override public InputStream unpack(InputStream packed) throws IOException { - BufferedInputStream buffered = new BufferedInputStream(packed); - buffered.mark(4); - byte[] magic = new byte[4]; - buffered.read(magic, 0, 4); - buffered.reset(); - - InputStream in = buffered; - if (magic[0] == (byte) 0x1F && magic[1] == (byte) 0x8B && magic[2] == (byte) 0x08) { - // this is a gziped pack200 - in = new GZIPInputStream(in); - } - - return new Pack200CompressorInputStream(in); + return Pack200Util.unpack(packed); } } diff --git a/src/java/org/apache/ivy/plugins/pack/Pack200Util.java b/src/java/org/apache/ivy/plugins/pack/Pack200Util.java new file mode 100644 index 00000000..6d6ca47f --- /dev/null +++ b/src/java/org/apache/ivy/plugins/pack/Pack200Util.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.ivy.plugins.pack; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.zip.GZIPInputStream; + +import org.apache.commons.compress.compressors.pack200.Pack200CompressorInputStream; + +class Pack200Util { + + static InputStream unpack(InputStream packed) throws IOException { + BufferedInputStream buffered = new BufferedInputStream(packed); + buffered.mark(4); + byte[] magic = new byte[4]; + buffered.read(magic, 0, 4); + buffered.reset(); + + InputStream in = buffered; + if (magic[0] == (byte) 0x1F && magic[1] == (byte) 0x8B && magic[2] == (byte) 0x08) { + // this is a gziped pack200 + in = new GZIPInputStream(in); + } + + return new Pack200CompressorInputStream(in); + } + +}