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);
+  }
+
+}

Reply via email to