From f9c4fe6c6fd0a47e2d35017fe369eef8429a2a9c Mon Sep 17 00:00:00 2001 From: byeX012 Date: Sat, 14 Dec 2019 17:45:49 +0800 Subject: [PATCH] package init --- java-base64-2.3.8-elasticsearch.patch | 148 ++++++++++++++++++++++++++ java-base64.spec | 60 +++++++++++ release-2.3.8.tar.gz | Bin 0 -> 19509 bytes 3 files changed, 208 insertions(+) create mode 100644 java-base64-2.3.8-elasticsearch.patch create mode 100644 java-base64.spec create mode 100644 release-2.3.8.tar.gz diff --git a/java-base64-2.3.8-elasticsearch.patch b/java-base64-2.3.8-elasticsearch.patch new file mode 100644 index 0000000..79b70ca --- /dev/null +++ b/java-base64-2.3.8-elasticsearch.patch @@ -0,0 +1,148 @@ +--- base64/src/main/java/net/iharder/Base64.java 2010-03-29 20:54:45.000000000 +0200 ++++ base64/src/main/java/net/iharder/Base64.java.elasticsearch 2015-02-18 23:43:01.174030315 +0100 +@@ -1,5 +1,8 @@ + package net.iharder; + ++import java.nio.charset.Charset; ++import java.util.Locale; ++ + /** + *

Encodes and decodes to and from Base64 notation.

+ *

Homepage: http://iharder.net/base64.

+@@ -208,7 +211,7 @@ + + + /** Preferred encoding. */ +- private final static String PREFERRED_ENCODING = "US-ASCII"; ++ public final static Charset PREFERRED_ENCODING = Charset.forName("US-ASCII"); + + + private final static byte WHITE_SPACE_ENC = -5; // Indicates white space in encoding +@@ -690,13 +693,7 @@ + } // end finally + + // Return value according to relevant encoding. +- try { +- return new String( baos.toByteArray(), PREFERRED_ENCODING ); +- } // end try +- catch (java.io.UnsupportedEncodingException uue){ +- // Fall back to some Java default +- return new String( baos.toByteArray() ); +- } // end catch ++ return new String(baos.toByteArray(), PREFERRED_ENCODING); + + } // end encode + +@@ -831,12 +828,7 @@ + byte[] encoded = encodeBytesToBytes( source, off, len, options ); + + // Return value according to relevant encoding. +- try { +- return new String( encoded, PREFERRED_ENCODING ); +- } // end try +- catch (java.io.UnsupportedEncodingException uue) { +- return new String( encoded ); +- } // end catch ++ return new String(encoded, PREFERRED_ENCODING); + + } // end encodeBytes + +@@ -899,7 +891,7 @@ + + if( off + len > source.length ){ + throw new IllegalArgumentException( +- String.format( "Cannot have offset of %d and length of %d with array of length %d", off,len,source.length)); ++ String.format(Locale.ROOT, "Cannot have offset of %d and length of %d with array of length %d", off, len, source.length)); + } // end if: off < 0 + + +@@ -1039,12 +1031,12 @@ + throw new NullPointerException( "Destination array was null." ); + } // end if + if( srcOffset < 0 || srcOffset + 3 >= source.length ){ +- throw new IllegalArgumentException( String.format( +- "Source array with length %d cannot have offset of %d and still process four bytes.", source.length, srcOffset ) ); ++ throw new IllegalArgumentException(String.format(Locale.ROOT, ++ "Source array with length %d cannot have offset of %d and still process four bytes.", source.length, srcOffset)); + } // end if + if( destOffset < 0 || destOffset +2 >= destination.length ){ +- throw new IllegalArgumentException( String.format( +- "Destination array with length %d cannot have offset of %d and still store three bytes.", destination.length, destOffset ) ); ++ throw new IllegalArgumentException(String.format(Locale.ROOT, ++ "Destination array with length %d cannot have offset of %d and still store three bytes.", destination.length, destOffset)); + } // end if + + +@@ -1153,8 +1145,8 @@ + throw new NullPointerException( "Cannot decode null source array." ); + } // end if + if( off < 0 || off + len > source.length ){ +- throw new IllegalArgumentException( String.format( +- "Source array with length %d cannot have offset of %d and process %d bytes.", source.length, off, len ) ); ++ throw new IllegalArgumentException(String.format(Locale.ROOT, ++ "Source array with length %d cannot have offset of %d and process %d bytes.", source.length, off, len)); + } // end if + + if( len == 0 ){ +@@ -1191,15 +1183,26 @@ + + // If that was the equals sign, break out of 'for' loop + if( source[i] == EQUALS_SIGN ) { ++ // check if the equals sign is somewhere in between ++ if (i + 1 < len + off) { ++ throw new java.io.IOException(String.format(Locale.ROOT, ++ "Found equals sign at position %d of the base64 string, not at the end", i)); ++ } + break; + } // end if: equals sign + } // end if: quartet built ++ else { ++ if (source[i] == EQUALS_SIGN && len + off > i && source[i + 1] != EQUALS_SIGN) { ++ throw new java.io.IOException(String.format(Locale.ROOT, ++ "Found equals sign at position %d of the base64 string, not at the end", i)); ++ } // enf if: equals sign and next character not as well ++ } // end else: + } // end if: equals sign or better + } // end if: white space, equals sign or better + else { + // There's a bad input character in the Base64 stream. +- throw new java.io.IOException( String.format( +- "Bad Base64 input character decimal %d in array position %d", ((int)source[i])&0xFF, i ) ); ++ throw new java.io.IOException(String.format(Locale.ROOT, ++ "Bad Base64 input character decimal %d in array position %d", ((int) source[i]) & 0xFF, i)); + } // end else: + } // each input character + +@@ -1243,13 +1246,7 @@ + throw new NullPointerException( "Input string was null." ); + } // end if + +- byte[] bytes; +- try { +- bytes = s.getBytes( PREFERRED_ENCODING ); +- } // end try +- catch( java.io.UnsupportedEncodingException uee ) { +- bytes = s.getBytes(); +- } // end catch ++ byte[] bytes = s.getBytes(PREFERRED_ENCODING); + // + + // Decode +@@ -1282,7 +1279,7 @@ + + } // end try + catch( java.io.IOException e ) { +- e.printStackTrace(); ++ // e.printStackTrace(); + // Just return originally-decoded bytes + } // end catch + finally { +@@ -1359,7 +1356,7 @@ + @Override + public Class resolveClass(java.io.ObjectStreamClass streamClass) + throws java.io.IOException, ClassNotFoundException { +- Class c = Class.forName(streamClass.getName(), false, loader); ++ Class c = Class.forName(streamClass.getName(), false, loader); + if( c == null ){ + return super.resolveClass(streamClass); + } else { diff --git a/java-base64.spec b/java-base64.spec new file mode 100644 index 0000000..b606c2c --- /dev/null +++ b/java-base64.spec @@ -0,0 +1,60 @@ +Name: java-base64 +Version: 2.3.8 +Release: 15 +Summary: A Java class providing Base64 encoding and decoding +License: Public Domain +URL: http://iharder.net/base64/ +Source0: https://github.com/omalley/base64/archive/release-%{version}.tar.gz +Patch0: %{name}-2.3.8-elasticsearch.patch + +BuildArch: noarch +BuildRequires: junit maven-local +Provides: base64 = %{version}-%{release} + +%description +This is a Public Domain Java class providing very fast Base64 encoding +and decoding in the form of convenience methods and input/output +streams. + +%package help +Summary: Javadoc for %{name} + +Provides: %{name}-javadoc = %{version}-%{release} +Obsoletes: %{name}-javadoc < %{version}-%{release} + +%description help +The java-base64-help package contains related documents. + +%prep +%autosetup -n base64-release-%{version} -p1 + +sed -i "s|2.3.9-SNAPSHOT|%{version}|" pom.xml + +%pom_remove_plugin :maven-release-plugin +%pom_remove_plugin :maven-scm-plugin +%pom_remove_plugin :maven-source-plugin +%pom_remove_plugin :maven-javadoc-plugin + +%mvn_file :base64 java-base64 +%mvn_file :base64 base64 + +%build + +%mvn_build + +%install +%mvn_install + +( + cd %{buildroot}%{_javadocdir} + ln -sf %{name} base64 +) + +%files -f .mfiles + +%files help -f .mfiles-javadoc +%{_javadocdir}/base64 + +%changelog +* Sat Dec 14 2019 Jiangping Hu - 2.3.8-15 +- Package init diff --git a/release-2.3.8.tar.gz b/release-2.3.8.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5b8ccb8eaedb847b5c417b3d5352c9eb9a3d9262 GIT binary patch literal 19509 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 YT3_pHeXXzc^+&w^56#=%)d08w0Ne*pBme*a literal 0 HcmV?d00001