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 <[email protected]>
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);
+ }
+
+}