File 0002-Replace-bundled-gdata-java-client-classes-with-commo.patch of Package snakeyaml.28016

From fe0ce4764ce3839f8019a2b0ecfc1d41c87595c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Wed, 12 Oct 2022 10:58:47 +0200
Subject: [PATCH 2/3] Replace bundled gdata-java-client classes with
 commons-codec

---
 .../org/yaml/snakeyaml/util/UriEncoder.java   | 37 +++++++++++++++----
 1 file changed, 29 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/yaml/snakeyaml/util/UriEncoder.java b/src/main/java/org/yaml/snakeyaml/util/UriEncoder.java
index 02c3e434..f6b5a639 100644
--- a/src/main/java/org/yaml/snakeyaml/util/UriEncoder.java
+++ b/src/main/java/org/yaml/snakeyaml/util/UriEncoder.java
@@ -22,18 +22,33 @@ import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CodingErrorAction;
 import java.nio.charset.StandardCharsets;
 import org.yaml.snakeyaml.error.YAMLException;
-import org.yaml.snakeyaml.external.com.google.gdata.util.common.base.Escaper;
-import org.yaml.snakeyaml.external.com.google.gdata.util.common.base.PercentEscaper;
+import java.util.BitSet;
+
+import org.apache.commons.codec.net.URLCodec;
 
 public abstract class UriEncoder {
 
+  // default safe characters which can appear within URI and shouldn't be escaped
+  private static final BitSet allowedCharacters = new BitSet(256);
+
+  static {
+      for (int i = 'a'; i <= 'z'; i++) {
+          allowedCharacters.set(i);
+      }
+      for (int i = 'A'; i <= 'Z'; i++) {
+          allowedCharacters.set(i);
+      }
+      for (int i = '0'; i <= '9'; i++) {
+          allowedCharacters.set(i);
+      }
+      // http://yaml.org/spec/1.1/#escaping%20in%20URI/
+      for (char c : "-_.!~*'()@:$&,;=/[]".toCharArray()) {
+          allowedCharacters.set(c);
+      }
+  }
+
   private static final CharsetDecoder UTF8Decoder =
       StandardCharsets.UTF_8.newDecoder().onMalformedInput(CodingErrorAction.REPORT);
-  // Include the [] chars to the SAFEPATHCHARS_URLENCODER to avoid
-  // its escape as required by spec. See
-  // http://yaml.org/spec/1.1/#escaping%20in%20URI/
-  private static final String SAFE_CHARS = PercentEscaper.SAFEPATHCHARS_URLENCODER + "[]/";
-  private static final Escaper escaper = new PercentEscaper(SAFE_CHARS, false);
 
   /**
    * Escape special characters with '%'
@@ -42,7 +57,13 @@ public abstract class UriEncoder {
    * @return encoded URI
    */
   public static String encode(String uri) {
-    return escaper.escape(uri);
+      try {
+          byte[] rawdata = URLCodec.encodeUrl(allowedCharacters,
+                  uri.getBytes("UTF-8"));
+          return new String(rawdata, 0, rawdata.length, "US-ASCII");
+      } catch (UnsupportedEncodingException e) {
+          throw new YAMLException(e);
+      }
   }
 
   /**
-- 
2.37.3

openSUSE Build Service is sponsored by