diff --git a/README.md b/README.md
index af16757..3de5622 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
### pyLoad Android Client
-This is the official Android client for the **pyLoad** Download Manager. You need to have pyLoad running on your pc or server.
+This is the official Android client for the **pyLoad-ng** Download Manager. You need to have pyLoad running on your pc or server.
In case you don't already have it, download it from https://pyload.net, its free, open-source and available for many platforms.
Please report any issues with the client here: https://github.com/pyload/pyload-android/issues
-In order to use the Android client make sure the newest pyLoad Core with version 0.4.9 and up is running on your system, accessible over the network, the ip/hostname is correct, and the port forwarded if necessary.
+In order to use the Android client make sure the newest pyLoad Core with version 0.5 and up is running on your system, accessible over the network, the ip/hostname is correct, and the port forwarded if necessary.
#### Features
- Modern UI (Android 4+ components)
diff --git a/app/build.gradle b/app/build.gradle
index a018ea3..f70007c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,11 +2,10 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 30
- buildToolsVersion "30.0.2"
defaultConfig {
applicationId "org.pyload.android.client"
- minSdkVersion 17
+ minSdkVersion 21
targetSdkVersion 30
}
@@ -18,8 +17,8 @@ android {
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
}
}
@@ -27,4 +26,10 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.activity:activity:1.3.0'
implementation 'org.slf4j:slf4j-android:1.6.1-RC1'
+ implementation 'com.squareup.retrofit2:retrofit:2.11.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
+ implementation 'com.squareup.retrofit2:converter-scalars:2.11.0'
+ implementation 'javax.annotation:javax.annotation-api:1.3.2'
+ implementation 'com.google.code.findbugs:jsr305:3.0.2'
+ implementation 'io.gsonfire:gson-fire:1.9.0'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ad2e736..fb65142 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="22"
+ android:versionName="0.4.0">
@@ -12,6 +12,7 @@
android:name="pyLoadApp"
android:icon="@drawable/ic_launcher"
android:allowBackup="true"
+ android:usesCleartextTraffic="true"
android:theme="@android:style/Theme.DeviceDefault">
diff --git a/app/src/main/java/org/apache/commons/codec/BinaryDecoder.java b/app/src/main/java/org/apache/commons/codec/BinaryDecoder.java
deleted file mode 100644
index 823f04b..0000000
--- a/app/src/main/java/org/apache/commons/codec/BinaryDecoder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Defines common decoding methods for byte array decoders.
- *
- * @author Apache Software Foundation
- * @version $Id: BinaryDecoder.java 651573 2008-04-25 11:11:21Z niallp $
- */
-public interface BinaryDecoder extends Decoder {
-
- /**
- * Decodes a byte array and returns the results as a byte array.
- *
- * @param pArray A byte array which has been encoded with the
- * appropriate encoder
- *
- * @return a byte array that contains decoded content
- *
- * @throws DecoderException A decoder exception is thrown
- * if a Decoder encounters a failure condition during
- * the decode process.
- */
- byte[] decode(byte[] pArray) throws DecoderException;
-}
-
diff --git a/app/src/main/java/org/apache/commons/codec/BinaryEncoder.java b/app/src/main/java/org/apache/commons/codec/BinaryEncoder.java
deleted file mode 100644
index a00e7e4..0000000
--- a/app/src/main/java/org/apache/commons/codec/BinaryEncoder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Defines common encoding methods for byte array encoders.
- *
- * @author Apache Software Foundation
- * @version $Id: BinaryEncoder.java 651573 2008-04-25 11:11:21Z niallp $
- */
-public interface BinaryEncoder extends Encoder {
-
- /**
- * Encodes a byte array and return the encoded data
- * as a byte array.
- *
- * @param pArray Data to be encoded
- *
- * @return A byte array containing the encoded data
- *
- * @throws EncoderException thrown if the Encoder
- * encounters a failure condition during the
- * encoding process.
- */
- byte[] encode(byte[] pArray) throws EncoderException;
-}
-
diff --git a/app/src/main/java/org/apache/commons/codec/CharEncoding.java b/app/src/main/java/org/apache/commons/codec/CharEncoding.java
deleted file mode 100644
index cf8136d..0000000
--- a/app/src/main/java/org/apache/commons/codec/CharEncoding.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Character encoding names required of every implementation of the Java platform.
- *
- * From the Java documentation Standard
- * charsets:
- *
- * Every implementation of the Java platform is required to support the following character encodings. Consult the
- * release documentation for your implementation to see if any other encodings are supported. Consult the release
- * documentation for your implementation to see if any other encodings are supported.
- *
- *
- *
- *
US-ASCII
- * Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set.
- *
ISO-8859-1
- * ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1.
UTF-16BE
- * Sixteen-bit Unicode Transformation Format, big-endian byte order.
- *
UTF-16LE
- * Sixteen-bit Unicode Transformation Format, little-endian byte order.
- *
UTF-16
- * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either order
- * accepted on input, big-endian used on output.)
- *
- *
- * This perhaps would best belong in the [lang] project. Even if a similar interface is defined in [lang], it is not
- * forseen that [codec] would be made to depend on [lang].
- *
- * @see Standard charsets
- * @author Apache Software Foundation
- * @since 1.4
- * @version $Id: CharEncoding.java 797857 2009-07-25 23:43:33Z ggregory $
- */
-public class CharEncoding {
- /**
- * CharEncodingISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1.
- *
- * Every implementation of the Java platform is required to support this character encoding.
- *
- *
- * @see Standard charsets
- */
- public static final String ISO_8859_1 = "ISO-8859-1";
-
- /**
- *
- * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set.
- *
- *
- * Every implementation of the Java platform is required to support this character encoding.
- *
- *
- * @see Standard charsets
- */
- public static final String US_ASCII = "US-ASCII";
-
- /**
- *
- * Sixteen-bit Unicode Transformation Format, The byte order specified by a mandatory initial byte-order mark
- * (either order accepted on input, big-endian used on output)
- *
- *
- * Every implementation of the Java platform is required to support this character encoding.
- *
- *
- * @see Standard charsets
- */
- public static final String UTF_16 = "UTF-16";
-
- /**
- *
- * Every implementation of the Java platform is required to support this character encoding.
- *
- *
- * @see Standard charsets
- */
- public static final String UTF_16LE = "UTF-16LE";
-
- /**
- *
- * Eight-bit Unicode Transformation Format.
- *
- *
- * Every implementation of the Java platform is required to support this character encoding.
- *
- *
- * @see Standard charsets
- */
- public static final String UTF_8 = "UTF-8";
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/commons/codec/Decoder.java b/app/src/main/java/org/apache/commons/codec/Decoder.java
deleted file mode 100644
index f24c363..0000000
--- a/app/src/main/java/org/apache/commons/codec/Decoder.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- *
Provides the highest level of abstraction for Decoders.
- * This is the sister interface of {@link Encoder}. All
- * Decoders implement this common generic interface.
- *
- *
Allows a user to pass a generic Object to any Decoder
- * implementation in the codec package.
- *
- *
One of the two interfaces at the center of the codec package.
- *
- * @author Apache Software Foundation
- * @version $Id: Decoder.java 797690 2009-07-24 23:28:35Z ggregory $
- */
-public interface Decoder {
-
- /**
- * Decodes an "encoded" Object and returns a "decoded"
- * Object. Note that the implementation of this
- * interface will try to cast the Object parameter
- * to the specific type expected by a particular Decoder
- * implementation. If a {@link ClassCastException} occurs
- * this decode method will throw a DecoderException.
- *
- * @param pObject an object to "decode"
- *
- * @return a 'decoded" object
- *
- * @throws DecoderException a decoder exception can
- * be thrown for any number of reasons. Some good
- * candidates are that the parameter passed to this
- * method is null, a param cannot be cast to the
- * appropriate type for a specific encoder.
- */
- Object decode(Object pObject) throws DecoderException;
-}
-
diff --git a/app/src/main/java/org/apache/commons/codec/DecoderException.java b/app/src/main/java/org/apache/commons/codec/DecoderException.java
deleted file mode 100644
index 7f04842..0000000
--- a/app/src/main/java/org/apache/commons/codec/DecoderException.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Thrown when a Decoder has encountered a failure condition during a decode.
- *
- * @author Apache Software Foundation
- * @version $Id: DecoderException.java 797804 2009-07-25 17:27:04Z ggregory $
- */
-public class DecoderException extends Exception {
-
- /**
- * Declares the Serial Version Uid.
- *
- * @see Always Declare Serial Version Uid
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructs a new exception with null as its detail message. The cause is not initialized, and may
- * subsequently be initialized by a call to {@link #initCause}.
- *
- * @since 1.4
- */
- public DecoderException() {
- super();
- }
-
- /**
- * Constructs a new exception with the specified detail message. The cause is not initialized, and may subsequently
- * be initialized by a call to {@link #initCause}.
- *
- * @param message
- * The detail message which is saved for later retrieval by the {@link #getMessage()} method.
- */
- public DecoderException(String message) {
- super(message);
- }
-
- /**
- * Constructsa new exception with the specified detail message and cause.
- *
- *
- * Note that the detail message associated with cause is not automatically incorporated into this
- * exception's detail message.
- *
- *
- * @param message
- * The detail message which is saved for later retrieval by the {@link #getMessage()} method.
- * @param cause
- * The cause which is saved for later retrieval by the {@link #getCause()} method. A null
- * value is permitted, and indicates that the cause is nonexistent or unknown.
- * @since 1.4
- */
- public DecoderException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Constructs a new exception with the specified cause and a detail message of (cause==null ?
- * null : cause.toString()) (which typically contains the class and detail message of cause).
- * This constructor is useful for exceptions that are little more than wrappers for other throwables.
- *
- * @param cause
- * The cause which is saved for later retrieval by the {@link #getCause()} method. A null
- * value is permitted, and indicates that the cause is nonexistent or unknown.
- * @since 1.4
- */
- public DecoderException(Throwable cause) {
- super(cause);
- }
-}
diff --git a/app/src/main/java/org/apache/commons/codec/Encoder.java b/app/src/main/java/org/apache/commons/codec/Encoder.java
deleted file mode 100644
index d152fd0..0000000
--- a/app/src/main/java/org/apache/commons/codec/Encoder.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- *
Provides the highest level of abstraction for Encoders.
- * This is the sister interface of {@link Decoder}. Every implementation of
- * Encoder provides this common generic interface whic allows a user to pass a
- * generic Object to any Encoder implementation in the codec package.
- *
- * @author Apache Software Foundation
- * @version $Id: Encoder.java 634915 2008-03-08 09:30:25Z bayard $
- */
-public interface Encoder {
-
- /**
- * Encodes an "Object" and returns the encoded content
- * as an Object. The Objects here may just be byte[]
- * or Strings depending on the implementation used.
- *
- * @param pObject An object ot encode
- *
- * @return An "encoded" Object
- *
- * @throws EncoderException an encoder exception is
- * thrown if the encoder experiences a failure
- * condition during the encoding process.
- */
- Object encode(Object pObject) throws EncoderException;
-}
-
diff --git a/app/src/main/java/org/apache/commons/codec/EncoderException.java b/app/src/main/java/org/apache/commons/codec/EncoderException.java
deleted file mode 100644
index 69da07c..0000000
--- a/app/src/main/java/org/apache/commons/codec/EncoderException.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Thrown when there is a failure condition during the encoding process. This exception is thrown when an Encoder
- * encounters a encoding specific exception such as invalid data, inability to calculate a checksum, characters outside
- * of the expected range.
- *
- * @author Apache Software Foundation
- * @version $Id: EncoderException.java 797804 2009-07-25 17:27:04Z ggregory $
- */
-public class EncoderException extends Exception {
-
- /**
- * Declares the Serial Version Uid.
- *
- * @see Always Declare Serial Version Uid
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Constructs a new exception with null as its detail message. The cause is not initialized, and may
- * subsequently be initialized by a call to {@link #initCause}.
- *
- * @since 1.4
- */
- public EncoderException() {
- super();
- }
-
- /**
- * Constructs a new exception with the specified detail message. The cause is not initialized, and may subsequently
- * be initialized by a call to {@link #initCause}.
- *
- * @param message
- * a useful message relating to the encoder specific error.
- */
- public EncoderException(String message) {
- super(message);
- }
-
- /**
- * Constructs a new exception with the specified detail message and cause.
- *
- *
- * Note that the detail message associated with cause is not automatically incorporated into this
- * exception's detail message.
- *
- *
- * @param message
- * The detail message which is saved for later retrieval by the {@link #getMessage()} method.
- * @param cause
- * The cause which is saved for later retrieval by the {@link #getCause()} method. A null
- * value is permitted, and indicates that the cause is nonexistent or unknown.
- * @since 1.4
- */
- public EncoderException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Constructs a new exception with the specified cause and a detail message of (cause==null ?
- * null : cause.toString()) (which typically contains the class and detail message of cause).
- * This constructor is useful for exceptions that are little more than wrappers for other throwables.
- *
- * @param cause
- * The cause which is saved for later retrieval by the {@link #getCause()} method. A null
- * value is permitted, and indicates that the cause is nonexistent or unknown.
- * @since 1.4
- */
- public EncoderException(Throwable cause) {
- super(cause);
- }
-}
diff --git a/app/src/main/java/org/apache/commons/codec/StringDecoder.java b/app/src/main/java/org/apache/commons/codec/StringDecoder.java
deleted file mode 100644
index 360d042..0000000
--- a/app/src/main/java/org/apache/commons/codec/StringDecoder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Decodes a String into a String.
- *
- * @author Apache Software Foundation
- * @version $Id: StringDecoder.java 634915 2008-03-08 09:30:25Z bayard $
- */
-public interface StringDecoder extends Decoder {
-
- /**
- * Decodes a String and returns a String.
- *
- * @param pString a String to encode
- *
- * @return the encoded String
- *
- * @throws DecoderException thrown if there is
- * an error conidition during the Encoding process.
- */
- String decode(String pString) throws DecoderException;
-}
-
diff --git a/app/src/main/java/org/apache/commons/codec/StringEncoder.java b/app/src/main/java/org/apache/commons/codec/StringEncoder.java
deleted file mode 100644
index def78ea..0000000
--- a/app/src/main/java/org/apache/commons/codec/StringEncoder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec;
-
-/**
- * Encodes a String into a String.
- *
- * @author Apache Software Foundation
- * @version $Id: StringEncoder.java 651573 2008-04-25 11:11:21Z niallp $
- */
-public interface StringEncoder extends Encoder {
-
- /**
- * Encodes a String and returns a String.
- *
- * @param pString a String to encode
- *
- * @return the encoded String
- *
- * @throws EncoderException thrown if there is
- * an error conidition during the Encoding process.
- */
- String encode(String pString) throws EncoderException;
-}
-
diff --git a/app/src/main/java/org/apache/commons/codec/binary/Base64.java b/app/src/main/java/org/apache/commons/codec/binary/Base64.java
deleted file mode 100644
index f65c9c7..0000000
--- a/app/src/main/java/org/apache/commons/codec/binary/Base64.java
+++ /dev/null
@@ -1,1055 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec.binary;
-
-import java.math.BigInteger;
-
-import org.apache.commons.codec.BinaryDecoder;
-import org.apache.commons.codec.BinaryEncoder;
-import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.EncoderException;
-
-/**
- * Provides Base64 encoding and decoding as defined by RFC 2045.
- *
- *
- * This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose
- * Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein.
- *
- *
- * The class can be parameterized in the following manner with various constructors:
- *
- *
URL-safe mode: Default off.
- *
Line length: Default 76. Line length that aren't multiples of 4 will still essentially end up being multiples of
- * 4 in the encoded data.
- *
Line separator: Default is CRLF ("\r\n")
- *
- *
- *
- * Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode
- * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
- *
- *
- * @see RFC 2045
- * @author Apache Software Foundation
- * @since 1.0
- * @version $Id: Base64.java 801706 2009-08-06 16:27:06Z niallp $
- */
-public class Base64 implements BinaryEncoder, BinaryDecoder {
- private static final int DEFAULT_BUFFER_RESIZE_FACTOR = 2;
-
- private static final int DEFAULT_BUFFER_SIZE = 8192;
-
- /**
- * Chunk size per RFC 2045 section 6.8.
- *
- *
- * The {@value} character limit does not count the trailing CRLF, but counts all other characters, including any
- * equal signs.
- *
- * N.B. The next major release may break compatibility and make this field private.
- *
- *
- * @see RFC 2045 section 2.1
- */
- static final byte[] CHUNK_SEPARATOR = {'\r', '\n'};
-
- /**
- * This array is a lookup table that translates 6-bit positive integer index values into their "Base64 Alphabet"
- * equivalents as specified in Table 1 of RFC 2045.
- *
- * Thanks to "commons" project in ws.apache.org for this code.
- * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
- */
- private static final byte[] STANDARD_ENCODE_TABLE = {
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
- 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
- };
-
- /**
- * This is a copy of the STANDARD_ENCODE_TABLE above, but with + and /
- * changed to - and _ to make the encoded Base64 results more URL-SAFE.
- * This table is only used when the Base64's mode is set to URL-SAFE.
- */
- private static final byte[] URL_SAFE_ENCODE_TABLE = {
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
- 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'
- };
-
- /**
- * Byte used to pad output.
- */
- private static final byte PAD = '=';
-
- /**
- * This array is a lookup table that translates Unicode characters drawn from the "Base64 Alphabet" (as specified in
- * Table 1 of RFC 2045) into their 6-bit positive integer equivalents. Characters that are not in the Base64
- * alphabet but fall within the bounds of the array are translated to -1.
- *
- * Note: '+' and '-' both decode to 62. '/' and '_' both decode to 63. This means decoder seamlessly handles both
- * URL_SAFE and STANDARD base64. (The encoder, on the other hand, needs to know ahead of time what to emit).
- *
- * Thanks to "commons" project in ws.apache.org for this code.
- * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
- */
- private static final byte[] DECODE_TABLE = {
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, -1, -1, -1, -1, 63, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
- };
-
- /** Mask used to extract 6 bits, used when encoding */
- private static final int MASK_6BITS = 0x3f;
-
- /** Mask used to extract 8 bits, used in decoding base64 bytes */
- private static final int MASK_8BITS = 0xff;
-
- // The static final fields above are used for the original static byte[] methods on Base64.
- // The private member fields below are used with the new streaming approach, which requires
- // some state be preserved between calls of encode() and decode().
-
- /**
- * Encode table to use: either STANDARD or URL_SAFE. Note: the DECODE_TABLE above remains static because it is able
- * to decode both STANDARD and URL_SAFE streams, but the encodeTable must be a member variable so we can switch
- * between the two modes.
- */
- private final byte[] encodeTable;
-
- /**
- * Line length for encoding. Not used when decoding. A value of zero or less implies no chunking of the base64
- * encoded data.
- */
- private final int lineLength;
-
- /**
- * Line separator for encoding. Not used when decoding. Only used if lineLength > 0.
- */
- private final byte[] lineSeparator;
-
- /**
- * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing.
- * decodeSize = 3 + lineSeparator.length;
- */
- private final int decodeSize;
-
- /**
- * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing.
- * encodeSize = 4 + lineSeparator.length;
- */
- private final int encodeSize;
-
- /**
- * Buffer for streaming.
- */
- private byte[] buffer;
-
- /**
- * Position where next character should be written in the buffer.
- */
- private int pos;
-
- /**
- * Position where next character should be read from the buffer.
- */
- private int readPos;
-
- /**
- * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to
- * make sure each encoded line never goes beyond lineLength (if lineLength > 0).
- */
- private int currentLinePos;
-
- /**
- * Writes to the buffer only occur after every 3 reads when encoding, an every 4 reads when decoding. This variable
- * helps track that.
- */
- private int modulus;
-
- /**
- * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this Base64 object becomes useless,
- * and must be thrown away.
- */
- private boolean eof;
-
- /**
- * Place holder for the 3 bytes we're dealing with for our base64 logic. Bitwise operations store and extract the
- * base64 encoding or decoding from this variable.
- */
- private int x;
-
- /**
- * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
- *
- * When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE.
- *
- *
- *
- * When decoding all variants are supported.
- *
- */
- public Base64() {
- this(false);
- }
-
- /**
- * Creates a Base64 codec used for decoding (all modes) and encoding in the given URL-safe mode.
- *
- * When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE.
- *
- *
- *
- * When decoding all variants are supported.
- *
- *
- * @param urlSafe
- * if true, URL-safe encoding is used. In most cases this should be set to
- * false.
- * @since 1.4
- */
- public Base64(boolean urlSafe) {
- this(CHUNK_SIZE, CHUNK_SEPARATOR, urlSafe);
- }
-
- /**
- * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
- *
- * When encoding the line length is given in the constructor, the line separator is CRLF, and the encoding table is
- * STANDARD_ENCODE_TABLE.
- *
- *
- * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
- *
- *
- * When decoding all variants are supported.
- *
- *
- * @param lineLength
- * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4).
- * If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
- * @since 1.4
- */
- public Base64(int lineLength) {
- this(lineLength, CHUNK_SEPARATOR);
- }
-
- /**
- * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
- *
- * When encoding the line length and line separator are given in the constructor, and the encoding table is
- * STANDARD_ENCODE_TABLE.
- *
- *
- * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
- *
- *
- * When decoding all variants are supported.
- *
- *
- * @param lineLength
- * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4).
- * If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
- * @param lineSeparator
- * Each line of encoded data will end with this sequence of bytes.
- * @throws IllegalArgumentException
- * Thrown when the provided lineSeparator included some base64 characters.
- * @since 1.4
- */
- public Base64(int lineLength, byte[] lineSeparator) {
- this(lineLength, lineSeparator, false);
- }
-
- /**
- * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
- *
- * When encoding the line length and line separator are given in the constructor, and the encoding table is
- * STANDARD_ENCODE_TABLE.
- *
- *
- * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
- *
- *
- * When decoding all variants are supported.
- *
- *
- * @param lineLength
- * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4).
- * If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
- * @param lineSeparator
- * Each line of encoded data will end with this sequence of bytes.
- * @param urlSafe
- * Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode
- * operations. Decoding seamlessly handles both modes.
- * @throws IllegalArgumentException
- * The provided lineSeparator included some base64 characters. That's not going to work!
- * @since 1.4
- */
- public Base64(int lineLength, byte[] lineSeparator, boolean urlSafe) {
- if (lineSeparator == null) {
- lineLength = 0; // disable chunk-separating
- lineSeparator = CHUNK_SEPARATOR; // this just gets ignored
- }
- this.lineLength = lineLength > 0 ? (lineLength / 4) * 4 : 0;
- this.lineSeparator = new byte[lineSeparator.length];
- System.arraycopy(lineSeparator, 0, this.lineSeparator, 0, lineSeparator.length);
- if (lineLength > 0) {
- this.encodeSize = 4 + lineSeparator.length;
- } else {
- this.encodeSize = 4;
- }
- this.decodeSize = this.encodeSize - 1;
- if (containsBase64Byte(lineSeparator)) {
- String sep = StringUtils.newStringUtf8(lineSeparator);
- throw new IllegalArgumentException("lineSeperator must not contain base64 characters: [" + sep + "]");
- }
- this.encodeTable = urlSafe ? URL_SAFE_ENCODE_TABLE : STANDARD_ENCODE_TABLE;
- }
-
- /**
- * Returns our current encode mode. True if we're URL-SAFE, false otherwise.
- *
- * @return true if we're in URL-SAFE mode, false otherwise.
- * @since 1.4
- */
- public boolean isUrlSafe() {
- return this.encodeTable == URL_SAFE_ENCODE_TABLE;
- }
-
- /**
- * Returns true if this Base64 object has buffered data for reading.
- *
- * @return true if there is Base64 object still available for reading.
- */
- boolean hasData() {
- return this.buffer != null;
- }
-
- /**
- * Returns the amount of buffered data available for reading.
- *
- * @return The amount of buffered data available for reading.
- */
- int avail() {
- return buffer != null ? pos - readPos : 0;
- }
-
- /** Doubles our buffer. */
- private void resizeBuffer() {
- if (buffer == null) {
- buffer = new byte[DEFAULT_BUFFER_SIZE];
- pos = 0;
- readPos = 0;
- } else {
- byte[] b = new byte[buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR];
- System.arraycopy(buffer, 0, b, 0, buffer.length);
- buffer = b;
- }
- }
-
- /**
- * Extracts buffered data into the provided byte[] array, starting at position bPos, up to a maximum of bAvail
- * bytes. Returns how many bytes were actually extracted.
- *
- * @param b
- * byte[] array to extract the buffered data into.
- * @param bPos
- * position in byte[] array to start extraction at.
- * @param bAvail
- * amount of bytes we're allowed to extract. We may extract fewer (if fewer are available).
- * @return The number of bytes successfully extracted into the provided byte[] array.
- */
- int readResults(byte[] b, int bPos, int bAvail) {
- if (buffer != null) {
- int len = Math.min(avail(), bAvail);
- if (buffer != b) {
- System.arraycopy(buffer, readPos, b, bPos, len);
- readPos += len;
- if (readPos >= pos) {
- buffer = null;
- }
- } else {
- // Re-using the original consumer's output array is only
- // allowed for one round.
- buffer = null;
- }
- return len;
- }
- return eof ? -1 : 0;
- }
-
- /**
- * Sets the streaming buffer. This is a small optimization where we try to buffer directly to the consumer's output
- * array for one round (if the consumer calls this method first) instead of starting our own buffer.
- *
- * @param out
- * byte[] array to buffer directly to.
- * @param outPos
- * Position to start buffering into.
- * @param outAvail
- * Amount of bytes available for direct buffering.
- */
- void setInitialBuffer(byte[] out, int outPos, int outAvail) {
- // We can re-use consumer's original output array under
- // special circumstances, saving on some System.arraycopy().
- if (out != null && out.length == outAvail) {
- buffer = out;
- pos = outPos;
- readPos = outPos;
- }
- }
-
- /**
- *
- * Encodes all of the provided data, starting at inPos, for inAvail bytes. Must be called at least twice: once with
- * the data to encode, and once with inAvail set to "-1" to alert encoder that EOF has been reached, so flush last
- * remaining bytes (if not multiple of 3).
- *
- *
- * Thanks to "commons" project in ws.apache.org for the bitwise operations, and general approach.
- * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
- *
- *
- * @param in
- * byte[] array of binary data to base64 encode.
- * @param inPos
- * Position to start reading data from.
- * @param inAvail
- * Amount of bytes available from input for encoding.
- */
- void encode(byte[] in, int inPos, int inAvail) {
- if (eof) {
- return;
- }
- // inAvail < 0 is how we're informed of EOF in the underlying data we're
- // encoding.
- if (inAvail < 0) {
- eof = true;
- if (buffer == null || buffer.length - pos < encodeSize) {
- resizeBuffer();
- }
- switch (modulus) {
- case 1 :
- buffer[pos++] = encodeTable[(x >> 2) & MASK_6BITS];
- buffer[pos++] = encodeTable[(x << 4) & MASK_6BITS];
- // URL-SAFE skips the padding to further reduce size.
- if (encodeTable == STANDARD_ENCODE_TABLE) {
- buffer[pos++] = PAD;
- buffer[pos++] = PAD;
- }
- break;
-
- case 2 :
- buffer[pos++] = encodeTable[(x >> 10) & MASK_6BITS];
- buffer[pos++] = encodeTable[(x >> 4) & MASK_6BITS];
- buffer[pos++] = encodeTable[(x << 2) & MASK_6BITS];
- // URL-SAFE skips the padding to further reduce size.
- if (encodeTable == STANDARD_ENCODE_TABLE) {
- buffer[pos++] = PAD;
- }
- break;
- }
- if (lineLength > 0 && pos > 0) {
- System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
- pos += lineSeparator.length;
- }
- } else {
- for (int i = 0; i < inAvail; i++) {
- if (buffer == null || buffer.length - pos < encodeSize) {
- resizeBuffer();
- }
- modulus = (++modulus) % 3;
- int b = in[inPos++];
- if (b < 0) {
- b += 256;
- }
- x = (x << 8) + b;
- if (0 == modulus) {
- buffer[pos++] = encodeTable[(x >> 18) & MASK_6BITS];
- buffer[pos++] = encodeTable[(x >> 12) & MASK_6BITS];
- buffer[pos++] = encodeTable[(x >> 6) & MASK_6BITS];
- buffer[pos++] = encodeTable[x & MASK_6BITS];
- currentLinePos += 4;
- if (lineLength > 0 && lineLength <= currentLinePos) {
- System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
- pos += lineSeparator.length;
- currentLinePos = 0;
- }
- }
- }
- }
- }
-
- /**
- *
- * Decodes all of the provided data, starting at inPos, for inAvail bytes. Should be called at least twice: once
- * with the data to decode, and once with inAvail set to "-1" to alert decoder that EOF has been reached. The "-1"
- * call is not necessary when decoding, but it doesn't hurt, either.
- *
- *
- * Ignores all non-base64 characters. This is how chunked (e.g. 76 character) data is handled, since CR and LF are
- * silently ignored, but has implications for other bytes, too. This method subscribes to the garbage-in,
- * garbage-out philosophy: it will not check the provided data for validity.
- *
- *
- * Thanks to "commons" project in ws.apache.org for the bitwise operations, and general approach.
- * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
- *
- *
- * @param in
- * byte[] array of ascii data to base64 decode.
- * @param inPos
- * Position to start reading data from.
- * @param inAvail
- * Amount of bytes available from input for encoding.
- */
- void decode(byte[] in, int inPos, int inAvail) {
- if (eof) {
- return;
- }
- if (inAvail < 0) {
- eof = true;
- }
- for (int i = 0; i < inAvail; i++) {
- if (buffer == null || buffer.length - pos < decodeSize) {
- resizeBuffer();
- }
- byte b = in[inPos++];
- if (b == PAD) {
- // We're done.
- eof = true;
- break;
- } else {
- if (b >= 0 && b < DECODE_TABLE.length) {
- int result = DECODE_TABLE[b];
- if (result >= 0) {
- modulus = (++modulus) % 4;
- x = (x << 6) + result;
- if (modulus == 0) {
- buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS);
- buffer[pos++] = (byte) ((x >> 8) & MASK_8BITS);
- buffer[pos++] = (byte) (x & MASK_8BITS);
- }
- }
- }
- }
- }
-
- // Two forms of EOF as far as base64 decoder is concerned: actual
- // EOF (-1) and first time '=' character is encountered in stream.
- // This approach makes the '=' padding characters completely optional.
- if (eof && modulus != 0) {
- x = x << 6;
- switch (modulus) {
- case 2 :
- x = x << 6;
- buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS);
- break;
- case 3 :
- buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS);
- buffer[pos++] = (byte) ((x >> 8) & MASK_8BITS);
- break;
- }
- }
- }
-
- /**
- * Returns whether or not the octet is in the base 64 alphabet.
- *
- * @param octet
- * The value to test
- * @return true if the value is defined in the the base 64 alphabet, false otherwise.
- * @since 1.4
- */
- public static boolean isBase64(byte octet) {
- return octet == PAD || (octet >= 0 && octet < DECODE_TABLE.length && DECODE_TABLE[octet] != -1);
- }
-
- /**
- * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet. Currently the
- * method treats whitespace as valid.
- *
- * @param arrayOctet
- * byte array to test
- * @return true if all bytes are valid characters in the Base64 alphabet or if the byte array is empty;
- * false, otherwise
- */
- public static boolean isArrayByteBase64(byte[] arrayOctet) {
- for (int i = 0; i < arrayOctet.length; i++) {
- if (!isBase64(arrayOctet[i]) && !isWhiteSpace(arrayOctet[i])) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.
- *
- * @param arrayOctet
- * byte array to test
- * @return true if any byte is a valid character in the Base64 alphabet; false herwise
- */
- private static boolean containsBase64Byte(byte[] arrayOctet) {
- for (int i = 0; i < arrayOctet.length; i++) {
- if (isBase64(arrayOctet[i])) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Encodes binary data using the base64 algorithm but does not chunk the output.
- *
- * @param binaryData
- * binary data to encode
- * @return byte[] containing Base64 characters in their UTF-8 representation.
- */
- public static byte[] encodeBase64(byte[] binaryData) {
- return encodeBase64(binaryData, false);
- }
-
- /**
- * Encodes binary data using the base64 algorithm into 76 character blocks separated by CRLF.
- *
- * @param binaryData
- * binary data to encode
- * @return String containing Base64 characters.
- * @since 1.4
- */
- public static String encodeBase64String(byte[] binaryData) {
- return StringUtils.newStringUtf8(encodeBase64(binaryData, true));
- }
-
- /**
- * Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The
- * url-safe variation emits - and _ instead of + and / characters.
- *
- * @param binaryData
- * binary data to encode
- * @return byte[] containing Base64 characters in their UTF-8 representation.
- * @since 1.4
- */
- public static byte[] encodeBase64URLSafe(byte[] binaryData) {
- return encodeBase64(binaryData, false, true);
- }
-
- /**
- * Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The
- * url-safe variation emits - and _ instead of + and / characters.
- *
- * @param binaryData
- * binary data to encode
- * @return String containing Base64 characters
- * @since 1.4
- */
- public static String encodeBase64URLSafeString(byte[] binaryData) {
- return StringUtils.newStringUtf8(encodeBase64(binaryData, false, true));
- }
-
- /**
- * Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks
- *
- * @param binaryData
- * binary data to encode
- * @return Base64 characters chunked in 76 character blocks
- */
- public static byte[] encodeBase64Chunked(byte[] binaryData) {
- return encodeBase64(binaryData, true);
- }
-
- /**
- * Decodes an Object using the base64 algorithm. This method is provided in order to satisfy the requirements of the
- * Decoder interface, and will throw a DecoderException if the supplied object is not of type byte[] or String.
- *
- * @param pObject
- * Object to decode
- * @return An object (of type byte[]) containing the binary data which corresponds to the byte[] or String supplied.
- * @throws DecoderException
- * if the parameter supplied is not of type byte[]
- */
- public Object decode(Object pObject) throws DecoderException {
- if (pObject instanceof byte[]) {
- return decode((byte[]) pObject);
- } else if (pObject instanceof String) {
- return decode((String) pObject);
- } else {
- throw new DecoderException("Parameter supplied to Base64 decode is not a byte[] or a String");
- }
- }
-
- /**
- * Decodes a String containing containing characters in the Base64 alphabet.
- *
- * @param pArray
- * A String containing Base64 character data
- * @return a byte array containing binary data
- * @since 1.4
- */
- public byte[] decode(String pArray) {
- return decode(StringUtils.getBytesUtf8(pArray));
- }
-
- /**
- * Decodes a byte[] containing containing characters in the Base64 alphabet.
- *
- * @param pArray
- * A byte array containing Base64 character data
- * @return a byte array containing binary data
- */
- public byte[] decode(byte[] pArray) {
- reset();
- if (pArray == null || pArray.length == 0) {
- return pArray;
- }
- long len = (pArray.length * 3) / 4;
- byte[] buf = new byte[(int) len];
- setInitialBuffer(buf, 0, buf.length);
- decode(pArray, 0, pArray.length);
- decode(pArray, 0, -1); // Notify decoder of EOF.
-
- // Would be nice to just return buf (like we sometimes do in the encode
- // logic), but we have no idea what the line-length was (could even be
- // variable). So we cannot determine ahead of time exactly how big an
- // array is necessary. Hence the need to construct a 2nd byte array to
- // hold the final result:
-
- byte[] result = new byte[pos];
- readResults(result, 0, result.length);
- return result;
- }
-
- /**
- * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
- *
- * @param binaryData
- * Array containing binary data to encode.
- * @param isChunked
- * if true this encoder will chunk the base64 output into 76 character blocks
- * @return Base64-encoded data.
- * @throws IllegalArgumentException
- * Thrown when the input array needs an output array bigger than {@link Integer#MAX_VALUE}
- */
- public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
- return encodeBase64(binaryData, isChunked, false);
- }
-
- /**
- * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
- *
- * @param binaryData
- * Array containing binary data to encode.
- * @param isChunked
- * if true this encoder will chunk the base64 output into 76 character blocks
- * @param urlSafe
- * if true this encoder will emit - and _ instead of the usual + and / characters.
- * @return Base64-encoded data.
- * @throws IllegalArgumentException
- * Thrown when the input array needs an output array bigger than {@link Integer#MAX_VALUE}
- * @since 1.4
- */
- public static byte[] encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe) {
- return encodeBase64(binaryData, isChunked, urlSafe, Integer.MAX_VALUE);
- }
-
- /**
- * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
- *
- * @param binaryData
- * Array containing binary data to encode.
- * @param isChunked
- * if true this encoder will chunk the base64 output into 76 character blocks
- * @param urlSafe
- * if true this encoder will emit - and _ instead of the usual + and / characters.
- * @param maxResultSize
- * The maximum result size to accept.
- * @return Base64-encoded data.
- * @throws IllegalArgumentException
- * Thrown when the input array needs an output array bigger than maxResultSize
- * @since 1.4
- */
- public static byte[] encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe, int maxResultSize) {
- if (binaryData == null || binaryData.length == 0) {
- return binaryData;
- }
-
- long len = getEncodeLength(binaryData, CHUNK_SIZE, CHUNK_SEPARATOR);
- if (len > maxResultSize) {
- throw new IllegalArgumentException("Input array too big, the output array would be bigger (" +
- len +
- ") than the specified maxium size of " +
- maxResultSize);
- }
-
- Base64 b64 = isChunked ? new Base64(urlSafe) : new Base64(0, CHUNK_SEPARATOR, urlSafe);
- return b64.encode(binaryData);
- }
-
- /**
- * Decodes a Base64 String into octets
- *
- * @param base64String
- * String containing Base64 data
- * @return Array containing decoded data.
- * @since 1.4
- */
- public static byte[] decodeBase64(String base64String) {
- return new Base64().decode(base64String);
- }
-
- /**
- * Decodes Base64 data into octets
- *
- * @param base64Data
- * Byte array containing Base64 data
- * @return Array containing decoded data.
- */
- public static byte[] decodeBase64(byte[] base64Data) {
- return new Base64().decode(base64Data);
- }
-
- /**
- * Discards any whitespace from a base-64 encoded block.
- *
- * @param data
- * The base-64 encoded data to discard the whitespace from.
- * @return The data, less whitespace (see RFC 2045).
- * @deprecated This method is no longer needed
- */
- static byte[] discardWhitespace(byte[] data) {
- byte groomedData[] = new byte[data.length];
- int bytesCopied = 0;
- for (int i = 0; i < data.length; i++) {
- switch (data[i]) {
- case ' ' :
- case '\n' :
- case '\r' :
- case '\t' :
- break;
- default :
- groomedData[bytesCopied++] = data[i];
- }
- }
- byte packedData[] = new byte[bytesCopied];
- System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
- return packedData;
- }
-
- /**
- * Checks if a byte value is whitespace or not.
- *
- * @param byteToCheck
- * the byte to check
- * @return true if byte is whitespace, false otherwise
- */
- private static boolean isWhiteSpace(byte byteToCheck) {
- switch (byteToCheck) {
- case ' ' :
- case '\n' :
- case '\r' :
- case '\t' :
- return true;
- default :
- return false;
- }
- }
-
- // Implementation of the Encoder Interface
-
- /**
- * Encodes an Object using the base64 algorithm. This method is provided in order to satisfy the requirements of the
- * Encoder interface, and will throw an EncoderException if the supplied object is not of type byte[].
- *
- * @param pObject
- * Object to encode
- * @return An object (of type byte[]) containing the base64 encoded data which corresponds to the byte[] supplied.
- * @throws EncoderException
- * if the parameter supplied is not of type byte[]
- */
- public Object encode(Object pObject) throws EncoderException {
- if (!(pObject instanceof byte[])) {
- throw new EncoderException("Parameter supplied to Base64 encode is not a byte[]");
- }
- return encode((byte[]) pObject);
- }
-
- /**
- * Encodes a byte[] containing binary data, into a String containing characters in the Base64 alphabet.
- *
- * @param pArray
- * a byte array containing binary data
- * @return A String containing only Base64 character data
- * @since 1.4
- */
- public String encodeToString(byte[] pArray) {
- return StringUtils.newStringUtf8(encode(pArray));
- }
-
- /**
- * Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.
- *
- * @param pArray
- * a byte array containing binary data
- * @return A byte array containing only Base64 character data
- */
- public byte[] encode(byte[] pArray) {
- reset();
- if (pArray == null || pArray.length == 0) {
- return pArray;
- }
- long len = getEncodeLength(pArray, lineLength, lineSeparator);
- byte[] buf = new byte[(int) len];
- setInitialBuffer(buf, 0, buf.length);
- encode(pArray, 0, pArray.length);
- encode(pArray, 0, -1); // Notify encoder of EOF.
- // Encoder might have resized, even though it was unnecessary.
- if (buffer != buf) {
- readResults(buf, 0, buf.length);
- }
- // In URL-SAFE mode we skip the padding characters, so sometimes our
- // final length is a bit smaller.
- if (isUrlSafe() && pos < buf.length) {
- byte[] smallerBuf = new byte[pos];
- System.arraycopy(buf, 0, smallerBuf, 0, pos);
- buf = smallerBuf;
- }
- return buf;
- }
-
- /**
- * Pre-calculates the amount of space needed to base64-encode the supplied array.
- *
- * @param pArray byte[] array which will later be encoded
- * @param chunkSize line-length of the output (<= 0 means no chunking) between each
- * chunkSeparator (e.g. CRLF).
- * @param chunkSeparator the sequence of bytes used to separate chunks of output (e.g. CRLF).
- *
- * @return amount of space needed to encoded the supplied array. Returns
- * a long since a max-len array will require Integer.MAX_VALUE + 33%.
- */
- private static long getEncodeLength(byte[] pArray, int chunkSize, byte[] chunkSeparator) {
- // base64 always encodes to multiples of 4.
- chunkSize = (chunkSize / 4) * 4;
-
- long len = (pArray.length * 4) / 3;
- long mod = len % 4;
- if (mod != 0) {
- len += 4 - mod;
- }
- if (chunkSize > 0) {
- boolean lenChunksPerfectly = len % chunkSize == 0;
- len += (len / chunkSize) * chunkSeparator.length;
- if (!lenChunksPerfectly) {
- len += chunkSeparator.length;
- }
- }
- return len;
- }
-
- // Implementation of integer encoding used for crypto
- /**
- * Decodes a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
- *
- * @param pArray
- * a byte array containing base64 character data
- * @return A BigInteger
- * @since 1.4
- */
- public static BigInteger decodeInteger(byte[] pArray) {
- return new BigInteger(1, decodeBase64(pArray));
- }
-
- /**
- * Encodes to a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
- *
- * @param bigInt
- * a BigInteger
- * @return A byte array containing base64 character data
- * @throws NullPointerException
- * if null is passed in
- * @since 1.4
- */
- public static byte[] encodeInteger(BigInteger bigInt) {
- if (bigInt == null) {
- throw new NullPointerException("encodeInteger called with null parameter");
- }
- return encodeBase64(toIntegerBytes(bigInt), false);
- }
-
- /**
- * Returns a byte-array representation of a BigInteger without sign bit.
- *
- * @param bigInt
- * BigInteger to be converted
- * @return a byte array representation of the BigInteger parameter
- */
- static byte[] toIntegerBytes(BigInteger bigInt) {
- int bitlen = bigInt.bitLength();
- // round bitlen
- bitlen = ((bitlen + 7) >> 3) << 3;
- byte[] bigBytes = bigInt.toByteArray();
-
- if (((bigInt.bitLength() % 8) != 0) && (((bigInt.bitLength() / 8) + 1) == (bitlen / 8))) {
- return bigBytes;
- }
- // set up params for copying everything but sign bit
- int startSrc = 0;
- int len = bigBytes.length;
-
- // if bigInt is exactly byte-aligned, just skip signbit in copy
- if ((bigInt.bitLength() % 8) == 0) {
- startSrc = 1;
- len--;
- }
- int startDst = bitlen / 8 - len; // to pad w/ nulls as per spec
- byte[] resizedBytes = new byte[bitlen / 8];
- System.arraycopy(bigBytes, startSrc, resizedBytes, startDst, len);
- return resizedBytes;
- }
-
- /**
- * Resets this Base64 object to its initial newly constructed state.
- */
- private void reset() {
- buffer = null;
- pos = 0;
- readPos = 0;
- currentLinePos = 0;
- modulus = 0;
- eof = false;
- }
-
-}
diff --git a/app/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java b/app/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
deleted file mode 100644
index 0f1cfe8..0000000
--- a/app/src/main/java/org/apache/commons/codec/binary/Base64InputStream.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec.binary;
-
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Provides Base64 encoding and decoding in a streaming fashion (unlimited size). When encoding the default lineLength
- * is 76 characters and the default lineEnding is CRLF, but these can be overridden by using the appropriate
- * constructor.
- *
- * The default behaviour of the Base64InputStream is to DECODE, whereas the default behaviour of the Base64OutputStream
- * is to ENCODE, but this behaviour can be overridden by using a different constructor.
- *
- *
- * This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose
- * Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein.
- *
- *
- * Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode
- * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
- *
- *
- * @author Apache Software Foundation
- * @version $Id: Base64InputStream.java 799805 2009-08-01 04:33:05Z ggregory $
- * @see RFC 2045
- * @since 1.4
- */
-public class Base64InputStream extends FilterInputStream {
-
- private final boolean doEncode;
-
- private final Base64 base64;
-
- private final byte[] singleByte = new byte[1];
-
- /**
- * Creates a Base64InputStream such that all data read is Base64-decoded from the original provided InputStream.
- *
- * @param in
- * InputStream to wrap.
- */
- public Base64InputStream(InputStream in) {
- this(in, false);
- }
-
- /**
- * Creates a Base64InputStream such that all data read is either Base64-encoded or Base64-decoded from the original
- * provided InputStream.
- *
- * @param in
- * InputStream to wrap.
- * @param doEncode
- * true if we should encode all data read from us, false if we should decode.
- */
- public Base64InputStream(InputStream in, boolean doEncode) {
- super(in);
- this.doEncode = doEncode;
- this.base64 = new Base64();
- }
-
- /**
- * Creates a Base64InputStream such that all data read is either Base64-encoded or Base64-decoded from the original
- * provided InputStream.
- *
- * @param in
- * InputStream to wrap.
- * @param doEncode
- * true if we should encode all data read from us, false if we should decode.
- * @param lineLength
- * If doEncode is true, each line of encoded data will contain lineLength characters (rounded down to
- * nearest multiple of 4). If lineLength <=0, the encoded data is not divided into lines. If doEncode is
- * false, lineLength is ignored.
- * @param lineSeparator
- * If doEncode is true, each line of encoded data will be terminated with this byte sequence (e.g. \r\n).
- * If lineLength <= 0, the lineSeparator is not used. If doEncode is false lineSeparator is ignored.
- */
- public Base64InputStream(InputStream in, boolean doEncode, int lineLength, byte[] lineSeparator) {
- super(in);
- this.doEncode = doEncode;
- this.base64 = new Base64(lineLength, lineSeparator);
- }
-
- /**
- * Reads one byte from this input stream.
- *
- * @return the byte as an integer in the range 0 to 255. Returns -1 if EOF has been reached.
- * @throws IOException
- * if an I/O error occurs.
- */
- public int read() throws IOException {
- int r = read(singleByte, 0, 1);
- while (r == 0) {
- r = read(singleByte, 0, 1);
- }
- if (r > 0) {
- return singleByte[0] < 0 ? 256 + singleByte[0] : singleByte[0];
- }
- return -1;
- }
-
- /**
- * Attempts to read len bytes into the specified b array starting at offset
- * from this InputStream.
- *
- * @param b
- * destination byte array
- * @param offset
- * where to start writing the bytes
- * @param len
- * maximum number of bytes to read
- *
- * @return number of bytes read
- * @throws IOException
- * if an I/O error occurs.
- * @throws NullPointerException
- * if the byte array parameter is null
- * @throws IndexOutOfBoundsException
- * if offset, len or buffer size are invalid
- */
- public int read(byte b[], int offset, int len) throws IOException {
- if (b == null) {
- throw new NullPointerException();
- } else if (offset < 0 || len < 0) {
- throw new IndexOutOfBoundsException();
- } else if (offset > b.length || offset + len > b.length) {
- throw new IndexOutOfBoundsException();
- } else if (len == 0) {
- return 0;
- } else {
- if (!base64.hasData()) {
- byte[] buf = new byte[doEncode ? 4096 : 8192];
- int c = in.read(buf);
- // A little optimization to avoid System.arraycopy()
- // when possible.
- if (c > 0 && b.length == len) {
- base64.setInitialBuffer(b, offset, len);
- }
- if (doEncode) {
- base64.encode(buf, 0, c);
- } else {
- base64.decode(buf, 0, c);
- }
- }
- return base64.readResults(b, offset, len);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @return false
- */
- public boolean markSupported() {
- return false; // not an easy job to support marks
- }
-}
diff --git a/app/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java b/app/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
deleted file mode 100644
index b4c0d20..0000000
--- a/app/src/main/java/org/apache/commons/codec/binary/Base64OutputStream.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec.binary;
-
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * Provides Base64 encoding and decoding in a streaming fashion (unlimited size). When encoding the default lineLength
- * is 76 characters and the default lineEnding is CRLF, but these can be overridden by using the appropriate
- * constructor.
- *
- * The default behaviour of the Base64OutputStream is to ENCODE, whereas the default behaviour of the Base64InputStream
- * is to DECODE. But this behaviour can be overridden by using a different constructor.
- *
- *
- * This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose
- * Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein.
- *
- *
- * Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode
- * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
- *
- *
- * @author Apache Software Foundation
- * @version $Id: Base64OutputStream.java 799806 2009-08-01 04:33:17Z ggregory $
- * @see RFC 2045
- * @since 1.4
- */
-public class Base64OutputStream extends FilterOutputStream {
- private final boolean doEncode;
-
- private final Base64 base64;
-
- private final byte[] singleByte = new byte[1];
-
- /**
- * Creates a Base64OutputStream such that all data written is Base64-encoded to the original provided OutputStream.
- *
- * @param out
- * OutputStream to wrap.
- */
- public Base64OutputStream(OutputStream out) {
- this(out, true);
- }
-
- /**
- * Creates a Base64OutputStream such that all data written is either Base64-encoded or Base64-decoded to the
- * original provided OutputStream.
- *
- * @param out
- * OutputStream to wrap.
- * @param doEncode
- * true if we should encode all data written to us, false if we should decode.
- */
- public Base64OutputStream(OutputStream out, boolean doEncode) {
- super(out);
- this.doEncode = doEncode;
- this.base64 = new Base64();
- }
-
- /**
- * Creates a Base64OutputStream such that all data written is either Base64-encoded or Base64-decoded to the
- * original provided OutputStream.
- *
- * @param out
- * OutputStream to wrap.
- * @param doEncode
- * true if we should encode all data written to us, false if we should decode.
- * @param lineLength
- * If doEncode is true, each line of encoded data will contain lineLength characters (rounded down to
- * nearest multiple of 4). If lineLength <=0, the encoded data is not divided into lines. If doEncode is
- * false, lineLength is ignored.
- * @param lineSeparator
- * If doEncode is true, each line of encoded data will be terminated with this byte sequence (e.g. \r\n).
- * If lineLength <= 0, the lineSeparator is not used. If doEncode is false lineSeparator is ignored.
- */
- public Base64OutputStream(OutputStream out, boolean doEncode, int lineLength, byte[] lineSeparator) {
- super(out);
- this.doEncode = doEncode;
- this.base64 = new Base64(lineLength, lineSeparator);
- }
-
- /**
- * Writes the specified byte to this output stream.
- *
- * @param i
- * source byte
- * @throws IOException
- * if an I/O error occurs.
- */
- public void write(int i) throws IOException {
- singleByte[0] = (byte) i;
- write(singleByte, 0, 1);
- }
-
- /**
- * Writes len bytes from the specified b array starting at offset to this
- * output stream.
- *
- * @param b
- * source byte array
- * @param offset
- * where to start reading the bytes
- * @param len
- * maximum number of bytes to write
- *
- * @throws IOException
- * if an I/O error occurs.
- * @throws NullPointerException
- * if the byte array parameter is null
- * @throws IndexOutOfBoundsException
- * if offset, len or buffer size are invalid
- */
- public void write(byte b[], int offset, int len) throws IOException {
- if (b == null) {
- throw new NullPointerException();
- } else if (offset < 0 || len < 0) {
- throw new IndexOutOfBoundsException();
- } else if (offset > b.length || offset + len > b.length) {
- throw new IndexOutOfBoundsException();
- } else if (len > 0) {
- if (doEncode) {
- base64.encode(b, offset, len);
- } else {
- base64.decode(b, offset, len);
- }
- flush(false);
- }
- }
-
- /**
- * Flushes this output stream and forces any buffered output bytes to be written out to the stream. If propogate is
- * true, the wrapped stream will also be flushed.
- *
- * @param propogate
- * boolean flag to indicate whether the wrapped OutputStream should also be flushed.
- * @throws IOException
- * if an I/O error occurs.
- */
- private void flush(boolean propogate) throws IOException {
- int avail = base64.avail();
- if (avail > 0) {
- byte[] buf = new byte[avail];
- int c = base64.readResults(buf, 0, avail);
- if (c > 0) {
- out.write(buf, 0, c);
- }
- }
- if (propogate) {
- out.flush();
- }
- }
-
- /**
- * Flushes this output stream and forces any buffered output bytes to be written out to the stream.
- *
- * @throws IOException
- * if an I/O error occurs.
- */
- public void flush() throws IOException {
- flush(true);
- }
-
- /**
- * Closes this output stream and releases any system resources associated with the stream.
- *
- * @throws IOException
- * if an I/O error occurs.
- */
- public void close() throws IOException {
- // Notify encoder of EOF (-1).
- if (doEncode) {
- base64.encode(singleByte, 0, -1);
- } else {
- base64.decode(singleByte, 0, -1);
- }
- flush();
- out.close();
- }
-
-}
diff --git a/app/src/main/java/org/apache/commons/codec/binary/StringUtils.java b/app/src/main/java/org/apache/commons/codec/binary/StringUtils.java
deleted file mode 100644
index 0d1a752..0000000
--- a/app/src/main/java/org/apache/commons/codec/binary/StringUtils.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * 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
- *
- * http://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.commons.codec.binary;
-
-import java.io.UnsupportedEncodingException;
-
-import org.apache.commons.codec.CharEncoding;
-
-/**
- * Converts String to and from bytes using the encodings required by the Java specification. These encodings are specified in Standard charsets
- *
- * @see CharEncoding
- * @see Standard charsets
- * @author Gary Gregory
- * @version $Id: StringUtils.java 801391 2009-08-05 19:55:54Z ggregory $
- * @since 1.4
- */
-public class StringUtils {
-
- /**
- * Encodes the given string into a sequence of bytes using the ISO-8859-1 charset, storing the result into a new
- * byte array.
- *
- * @param string
- * the String to encode
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when the charset is missing, which should be never according the the Java specification.
- * @see Standard charsets
- * @see #getBytesUnchecked(String, String)
- */
- public static byte[] getBytesIso8859_1(String string) {
- return StringUtils.getBytesUnchecked(string, CharEncoding.ISO_8859_1);
- }
-
- /**
- * Encodes the given string into a sequence of bytes using the US-ASCII charset, storing the result into a new byte
- * array.
- *
- * @param string
- * the String to encode
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when the charset is missing, which should be never according the the Java specification.
- * @see Standard charsets
- * @see #getBytesUnchecked(String, String)
- */
- public static byte[] getBytesUsAscii(String string) {
- return StringUtils.getBytesUnchecked(string, CharEncoding.US_ASCII);
- }
-
- /**
- * Encodes the given string into a sequence of bytes using the UTF-16 charset, storing the result into a new byte
- * array.
- *
- * @param string
- * the String to encode
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when the charset is missing, which should be never according the the Java specification.
- * @see Standard charsets
- * @see #getBytesUnchecked(String, String)
- */
- public static byte[] getBytesUtf16(String string) {
- return StringUtils.getBytesUnchecked(string, CharEncoding.UTF_16);
- }
-
- /**
- * Encodes the given string into a sequence of bytes using the UTF-16BE charset, storing the result into a new byte
- * array.
- *
- * @param string
- * the String to encode
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when the charset is missing, which should be never according the the Java specification.
- * @see Standard charsets
- * @see #getBytesUnchecked(String, String)
- */
- public static byte[] getBytesUtf16Be(String string) {
- return StringUtils.getBytesUnchecked(string, CharEncoding.UTF_16BE);
- }
-
- /**
- * Encodes the given string into a sequence of bytes using the UTF-16LE charset, storing the result into a new byte
- * array.
- *
- * @param string
- * the String to encode
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when the charset is missing, which should be never according the the Java specification.
- * @see Standard charsets
- * @see #getBytesUnchecked(String, String)
- */
- public static byte[] getBytesUtf16Le(String string) {
- return StringUtils.getBytesUnchecked(string, CharEncoding.UTF_16LE);
- }
-
- /**
- * Encodes the given string into a sequence of bytes using the UTF-8 charset, storing the result into a new byte
- * array.
- *
- * @param string
- * the String to encode
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when the charset is missing, which should be never according the the Java specification.
- * @see Standard charsets
- * @see #getBytesUnchecked(String, String)
- */
- public static byte[] getBytesUtf8(String string) {
- return StringUtils.getBytesUnchecked(string, CharEncoding.UTF_8);
- }
-
- /**
- * Encodes the given string into a sequence of bytes using the named charset, storing the result into a new byte
- * array.
- *
- * This method catches {@link UnsupportedEncodingException} and rethrows it as {@link IllegalStateException}, which
- * should never happen for a required charset name. Use this method when the encoding is required to be in the JRE.
- *
- *
- * @param string
- * the String to encode
- * @param charsetName
- * The name of a required {@link java.nio.charset.Charset}
- * @return encoded bytes
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen for a
- * required charset name.
- * @see CharEncoding
- * @see String#getBytes(String)
- */
- public static byte[] getBytesUnchecked(String string, String charsetName) {
- if (string == null) {
- return null;
- }
- try {
- return string.getBytes(charsetName);
- } catch (UnsupportedEncodingException e) {
- throw StringUtils.newIllegalStateException(charsetName, e);
- }
- }
-
- private static IllegalStateException newIllegalStateException(String charsetName, UnsupportedEncodingException e) {
- return new IllegalStateException(charsetName + ": " + e);
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the given charset.
- *
- * This method catches {@link UnsupportedEncodingException} and re-throws it as {@link IllegalStateException}, which
- * should never happen for a required charset name. Use this method when the encoding is required to be in the JRE.
- *
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @param charsetName
- * The name of a required {@link java.nio.charset.Charset}
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen for a
- * required charset name.
- * @see CharEncoding
- * @see String#String(byte[], String)
- */
- public static String newString(byte[] bytes, String charsetName) {
- if (bytes == null) {
- return null;
- }
- try {
- return new String(bytes, charsetName);
- } catch (UnsupportedEncodingException e) {
- throw StringUtils.newIllegalStateException(charsetName, e);
- }
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the ISO-8859-1 charset.
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen since the
- * charset is required.
- */
- public static String newStringIso8859_1(byte[] bytes) {
- return StringUtils.newString(bytes, CharEncoding.ISO_8859_1);
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the US-ASCII charset.
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen since the
- * charset is required.
- */
- public static String newStringUsAscii(byte[] bytes) {
- return StringUtils.newString(bytes, CharEncoding.US_ASCII);
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the UTF-16 charset.
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen since the
- * charset is required.
- */
- public static String newStringUtf16(byte[] bytes) {
- return StringUtils.newString(bytes, CharEncoding.UTF_16);
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the UTF-16BE charset.
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen since the
- * charset is required.
- */
- public static String newStringUtf16Be(byte[] bytes) {
- return StringUtils.newString(bytes, CharEncoding.UTF_16BE);
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the UTF-16LE charset.
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen since the
- * charset is required.
- */
- public static String newStringUtf16Le(byte[] bytes) {
- return StringUtils.newString(bytes, CharEncoding.UTF_16LE);
- }
-
- /**
- * Constructs a new String by decoding the specified array of bytes using the UTF-8 charset.
- *
- * @param bytes
- * The bytes to be decoded into characters
- * @return A new String decoded from the specified array of bytes using the given charset.
- * @throws IllegalStateException
- * Thrown when a {@link UnsupportedEncodingException} is caught, which should never happen since the
- * charset is required.
- */
- public static String newStringUtf8(byte[] bytes) {
- return StringUtils.newString(bytes, CharEncoding.UTF_8);
- }
-
-}
diff --git a/app/src/main/java/org/apache/commons/lang/NotImplementedException.java b/app/src/main/java/org/apache/commons/lang/NotImplementedException.java
deleted file mode 100644
index d1d397b..0000000
--- a/app/src/main/java/org/apache/commons/lang/NotImplementedException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.apache.commons.lang;
-
-public class NotImplementedException extends UnsupportedOperationException {
-
- /**
- *
- */
- private static final long serialVersionUID = -4502410745294068699L;
-
-}
diff --git a/app/src/main/java/org/apache/thrift/EncodingUtils.java b/app/src/main/java/org/apache/thrift/EncodingUtils.java
deleted file mode 100644
index 072de93..0000000
--- a/app/src/main/java/org/apache/thrift/EncodingUtils.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-/**
- * Utility methods for use when encoding/decoding raw data as byte arrays.
- */
-public class EncodingUtils {
-
- /**
- * Encode integer as a series of 4 bytes into buf
- * starting at position 0 within that buffer.
- *
- * @param integer
- * The integer to encode.
- * @param buf
- * The buffer to write to.
- */
- public static final void encodeBigEndian(final int integer, final byte[] buf) {
- encodeBigEndian(integer, buf, 0);
- }
-
- /**
- * Encode integer as a series of 4 bytes into buf
- * starting at position offset.
- *
- * @param integer
- * The integer to encode.
- * @param buf
- * The buffer to write to.
- * @param offset
- * The offset within buf to start the encoding.
- */
- public static final void encodeBigEndian(final int integer, final byte[] buf, int offset) {
- buf[offset] = (byte) (0xff & (integer >> 24));
- buf[offset + 1] = (byte) (0xff & (integer >> 16));
- buf[offset + 2] = (byte) (0xff & (integer >> 8));
- buf[offset + 3] = (byte) (0xff & (integer));
- }
-
- /**
- * Decode a series of 4 bytes from buf, starting at position 0,
- * and interpret them as an integer.
- *
- * @param buf
- * The buffer to read from.
- * @return An integer, as read from the buffer.
- */
- public static final int decodeBigEndian(final byte[] buf) {
- return decodeBigEndian(buf, 0);
- }
-
- /**
- * Decode a series of 4 bytes from buf, start at
- * offset, and interpret them as an integer.
- *
- * @param buf
- * The buffer to read from.
- * @param offset
- * The offset with buf to start the decoding.
- * @return An integer, as read from the buffer.
- */
- public static final int decodeBigEndian(final byte[] buf, int offset) {
- return ((buf[offset] & 0xff) << 24) | ((buf[offset + 1] & 0xff) << 16)
- | ((buf[offset + 2] & 0xff) << 8) | ((buf[offset + 3] & 0xff));
- }
-
-}
diff --git a/app/src/main/java/org/apache/thrift/ProcessFunction.java b/app/src/main/java/org/apache/thrift/ProcessFunction.java
deleted file mode 100644
index e0cdc7b..0000000
--- a/app/src/main/java/org/apache/thrift/ProcessFunction.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- *
- */
-package org.apache.thrift;
-
-import org.apache.thrift.protocol.TMessage;
-import org.apache.thrift.protocol.TMessageType;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-
-public abstract class ProcessFunction {
- private final String methodName;
-
- public ProcessFunction(String methodName) {
- this.methodName = methodName;
- }
-
- public final void process(int seqid, TProtocol iprot, TProtocol oprot, I iface) throws TException {
- T args = getEmptyArgsInstance();
- try {
- args.read(iprot);
- } catch (TProtocolException e) {
- iprot.readMessageEnd();
- TApplicationException x = new TApplicationException(TApplicationException.PROTOCOL_ERROR, e.getMessage());
- oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.EXCEPTION, seqid));
- x.write(oprot);
- oprot.writeMessageEnd();
- oprot.getTransport().flush();
- return;
- }
- iprot.readMessageEnd();
- TBase result = getResult(iface, args);
- oprot.writeMessageBegin(new TMessage(getMethodName(), TMessageType.REPLY, seqid));
- result.write(oprot);
- oprot.writeMessageEnd();
- oprot.getTransport().flush();
- }
-
- protected abstract TBase getResult(I iface, T args) throws TException;
-
- protected abstract T getEmptyArgsInstance();
-
- public String getMethodName() {
- return methodName;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/thrift/ShortStack.java b/app/src/main/java/org/apache/thrift/ShortStack.java
deleted file mode 100644
index 4957d1c..0000000
--- a/app/src/main/java/org/apache/thrift/ShortStack.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-/**
- * ShortStack is a short-specific Stack implementation written for the express
- * purpose of very fast operations on TCompactProtocol's field id stack. This
- * implementation performs at least 10x faster than java.util.Stack.
- */
-public class ShortStack {
-
- private short[] vector;
- private int top = -1;
-
- public ShortStack(int initialCapacity) {
- vector = new short[initialCapacity];
- }
-
- public short pop() {
- return vector[top--];
- }
-
- public void push(short pushed) {
- if (vector.length == top + 1) {
- grow();
- }
- vector[++top] = pushed;
- }
-
- private void grow() {
- short[] newVector = new short[vector.length * 2];
- System.arraycopy(vector, 0, newVector, 0, vector.length);
- vector = newVector;
- }
-
- public short peek() {
- return vector[top];
- }
-
- public void clear() {
- top = -1;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append(">");
- }
-
- sb.append(vector[i]);
-
- if (i == top) {
- sb.append("<<");
- }
- }
- sb.append("]>");
- return sb.toString();
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TApplicationException.java b/app/src/main/java/org/apache/thrift/TApplicationException.java
deleted file mode 100644
index c294fc3..0000000
--- a/app/src/main/java/org/apache/thrift/TApplicationException.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import org.apache.thrift.protocol.TField;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolUtil;
-import org.apache.thrift.protocol.TStruct;
-import org.apache.thrift.protocol.TType;
-
-/**
- * Application level exception
- *
- */
-public class TApplicationException extends TException {
-
- private static final TStruct TAPPLICATION_EXCEPTION_STRUCT = new TStruct("TApplicationException");
- private static final TField MESSAGE_FIELD = new TField("message", TType.STRING, (short)1);
- private static final TField TYPE_FIELD = new TField("type", TType.I32, (short)2);
-
- private static final long serialVersionUID = 1L;
-
- public static final int UNKNOWN = 0;
- public static final int UNKNOWN_METHOD = 1;
- public static final int INVALID_MESSAGE_TYPE = 2;
- public static final int WRONG_METHOD_NAME = 3;
- public static final int BAD_SEQUENCE_ID = 4;
- public static final int MISSING_RESULT = 5;
- public static final int INTERNAL_ERROR = 6;
- public static final int PROTOCOL_ERROR = 7;
-
- protected int type_ = UNKNOWN;
-
- public TApplicationException() {
- super();
- }
-
- public TApplicationException(int type) {
- super();
- type_ = type;
- }
-
- public TApplicationException(int type, String message) {
- super(message);
- type_ = type;
- }
-
- public TApplicationException(String message) {
- super(message);
- }
-
- public int getType() {
- return type_;
- }
-
- public static TApplicationException read(TProtocol iprot) throws TException {
- TField field;
- iprot.readStructBegin();
-
- String message = null;
- int type = UNKNOWN;
-
- while (true) {
- field = iprot.readFieldBegin();
- if (field.type == TType.STOP) {
- break;
- }
- switch (field.id) {
- case 1:
- if (field.type == TType.STRING) {
- message = iprot.readString();
- } else {
- TProtocolUtil.skip(iprot, field.type);
- }
- break;
- case 2:
- if (field.type == TType.I32) {
- type = iprot.readI32();
- } else {
- TProtocolUtil.skip(iprot, field.type);
- }
- break;
- default:
- TProtocolUtil.skip(iprot, field.type);
- break;
- }
- iprot.readFieldEnd();
- }
- iprot.readStructEnd();
-
- return new TApplicationException(type, message);
- }
-
- public void write(TProtocol oprot) throws TException {
- oprot.writeStructBegin(TAPPLICATION_EXCEPTION_STRUCT);
- if (getMessage() != null) {
- oprot.writeFieldBegin(MESSAGE_FIELD);
- oprot.writeString(getMessage());
- oprot.writeFieldEnd();
- }
- oprot.writeFieldBegin(TYPE_FIELD);
- oprot.writeI32(type_);
- oprot.writeFieldEnd();
- oprot.writeFieldStop();
- oprot.writeStructEnd();
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TBase.java b/app/src/main/java/org/apache/thrift/TBase.java
deleted file mode 100644
index b3ed1bc..0000000
--- a/app/src/main/java/org/apache/thrift/TBase.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import java.io.Serializable;
-
-import org.apache.thrift.protocol.TProtocol;
-
-/**
- * Generic base interface for generated Thrift objects.
- *
- */
-public interface TBase, F extends TFieldIdEnum> extends Comparable, Serializable {
-
- /**
- * Reads the TObject from the given input protocol.
- *
- * @param iprot Input protocol
- */
- public void read(TProtocol iprot) throws TException;
-
- /**
- * Writes the objects out to the protocol
- *
- * @param oprot Output protocol
- */
- public void write(TProtocol oprot) throws TException;
-
- /**
- * Get the F instance that corresponds to fieldId.
- */
- public F fieldForId(int fieldId);
-
- /**
- * Check if a field is currently set or unset.
- *
- * @param field
- */
- public boolean isSet(F field);
-
- /**
- * Get a field's value by field variable. Primitive types will be wrapped in
- * the appropriate "boxed" types.
- *
- * @param field
- */
- public Object getFieldValue(F field);
-
- /**
- * Set a field's value by field variable. Primitive types must be "boxed" in
- * the appropriate object wrapper type.
- *
- * @param field
- */
- public void setFieldValue(F field, Object value);
-
- public TBase deepCopy();
-
- /**
- * Return to the state of having just been initialized, as though you had just
- * called the default constructor.
- */
- public void clear();
-}
diff --git a/app/src/main/java/org/apache/thrift/TBaseHelper.java b/app/src/main/java/org/apache/thrift/TBaseHelper.java
deleted file mode 100644
index eec648b..0000000
--- a/app/src/main/java/org/apache/thrift/TBaseHelper.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/**
- * 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
- *
- * http://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.thrift;
-
-import java.nio.ByteBuffer;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-public final class TBaseHelper {
-
- private TBaseHelper(){}
-
- private static final Comparator comparator = new NestedStructureComparator();
-
- public static int compareTo(Object o1, Object o2) {
- if (o1 instanceof Comparable) {
- return compareTo((Comparable)o1, (Comparable)o2);
- } else if (o1 instanceof List) {
- return compareTo((List)o1, (List)o2);
- } else if (o1 instanceof Set) {
- return compareTo((Set)o1, (Set)o2);
- } else if (o1 instanceof Map) {
- return compareTo((Map)o1, (Map)o2);
- } else if (o1 instanceof byte[]) {
- return compareTo((byte[])o1, (byte[])o2);
- } else {
- throw new IllegalArgumentException("Cannot compare objects of type " + o1.getClass());
- }
- }
-
- public static int compareTo(boolean a, boolean b) {
- return Boolean.valueOf(a).compareTo(b);
- }
-
- public static int compareTo(byte a, byte b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
- }
-
- public static int compareTo(short a, short b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
- }
-
- public static int compareTo(int a, int b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
- }
-
- public static int compareTo(long a, long b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
- }
-
- public static int compareTo(double a, double b) {
- if (a < b) {
- return -1;
- } else if (b < a) {
- return 1;
- } else {
- return 0;
- }
- }
-
- public static int compareTo(String a, String b) {
- return a.compareTo(b);
- }
-
- public static int compareTo(byte[] a, byte[] b) {
- int sizeCompare = compareTo(a.length, b.length);
- if (sizeCompare != 0) {
- return sizeCompare;
- }
- for (int i = 0; i < a.length; i++) {
- int byteCompare = compareTo(a[i], b[i]);
- if (byteCompare != 0) {
- return byteCompare;
- }
- }
- return 0;
- }
-
- public static int compareTo(Comparable a, Comparable b) {
- return a.compareTo(b);
- }
-
- public static int compareTo(List a, List b) {
- int lastComparison = compareTo(a.size(), b.size());
- if (lastComparison != 0) {
- return lastComparison;
- }
- for (int i = 0; i < a.size(); i++) {
- lastComparison = comparator.compare(a.get(i), b.get(i));
- if (lastComparison != 0) {
- return lastComparison;
- }
- }
- return 0;
- }
-
- public static int compareTo(Set a, Set b) {
- int lastComparison = compareTo(a.size(), b.size());
- if (lastComparison != 0) {
- return lastComparison;
- }
- SortedSet sortedA = new TreeSet(comparator);
- sortedA.addAll(a);
- SortedSet sortedB = new TreeSet(comparator);
- sortedB.addAll(b);
-
- Iterator iterA = sortedA.iterator();
- Iterator iterB = sortedB.iterator();
-
- // Compare each item.
- while (iterA.hasNext() && iterB.hasNext()) {
- lastComparison = comparator.compare(iterA.next(), iterB.next());
- if (lastComparison != 0) {
- return lastComparison;
- }
- }
-
- return 0;
- }
-
- public static int compareTo(Map a, Map b) {
- int lastComparison = compareTo(a.size(), b.size());
- if (lastComparison != 0) {
- return lastComparison;
- }
-
- // Sort a and b so we can compare them.
- SortedMap sortedA = new TreeMap(comparator);
- sortedA.putAll(a);
- Iterator iterA = sortedA.entrySet().iterator();
- SortedMap sortedB = new TreeMap(comparator);
- sortedB.putAll(b);
- Iterator iterB = sortedB.entrySet().iterator();
-
- // Compare each item.
- while (iterA.hasNext() && iterB.hasNext()) {
- Map.Entry entryA = iterA.next();
- Map.Entry entryB = iterB.next();
- lastComparison = comparator.compare(entryA.getKey(), entryB.getKey());
- if (lastComparison != 0) {
- return lastComparison;
- }
- lastComparison = comparator.compare(entryA.getValue(), entryB.getValue());
- if (lastComparison != 0) {
- return lastComparison;
- }
- }
-
- return 0;
- }
-
- /**
- * Comparator to compare items inside a structure (e.g. a list, set, or map).
- */
- private static class NestedStructureComparator implements Comparator {
- public int compare(Object oA, Object oB) {
- if (oA == null && oB == null) {
- return 0;
- } else if (oA == null) {
- return -1;
- } else if (oB == null) {
- return 1;
- } else if (oA instanceof List) {
- return compareTo((List)oA, (List)oB);
- } else if (oA instanceof Set) {
- return compareTo((Set)oA, (Set)oB);
- } else if (oA instanceof Map) {
- return compareTo((Map)oA, (Map)oB);
- } else if (oA instanceof byte[]) {
- return compareTo((byte[])oA, (byte[])oB);
- } else {
- return compareTo((Comparable)oA, (Comparable)oB);
- }
- }
- }
-
- public static void toString(ByteBuffer bb, StringBuilder sb) {
- byte[] buf = bb.array();
-
- int arrayOffset = bb.arrayOffset();
- int offset = arrayOffset + bb.position();
- int origLimit = arrayOffset + bb.limit();
- int limit = (origLimit - offset > 128) ? offset + 128 : origLimit;
-
- for (int i = offset; i < limit; i++) {
- if (i > offset) {
- sb.append(" ");
- }
- sb.append(paddedByteString(buf[i]));
- }
- if (origLimit != limit) {
- sb.append("...");
- }
- }
-
- public static String paddedByteString(byte b) {
- int extended = (b | 0x100) & 0x1ff;
- return Integer.toHexString(extended).toUpperCase().substring(1);
- }
-
- public static byte[] byteBufferToByteArray(ByteBuffer byteBuffer) {
- if (wrapsFullArray(byteBuffer)) {
- return byteBuffer.array();
- }
- byte[] target = new byte[byteBuffer.remaining()];
- byteBufferToByteArray(byteBuffer, target, 0);
- return target;
- }
-
- public static boolean wrapsFullArray(ByteBuffer byteBuffer) {
- return byteBuffer.hasArray()
- && byteBuffer.position() == 0
- && byteBuffer.arrayOffset() == 0
- && byteBuffer.remaining() == byteBuffer.capacity();
- }
-
- public static int byteBufferToByteArray(ByteBuffer byteBuffer, byte[] target, int offset) {
- int remaining = byteBuffer.remaining();
- System.arraycopy(byteBuffer.array(),
- byteBuffer.arrayOffset() + byteBuffer.position(),
- target,
- offset,
- remaining);
- return remaining;
- }
-
- public static ByteBuffer rightSize(ByteBuffer in) {
- if (in == null) {
- return null;
- }
- if (wrapsFullArray(in)) {
- return in;
- }
- return ByteBuffer.wrap(byteBufferToByteArray(in));
- }
-
- public static ByteBuffer copyBinary(final ByteBuffer orig) {
- if (orig == null) {
- return null;
- }
- ByteBuffer copy = ByteBuffer.wrap(new byte[orig.remaining()]);
- if (orig.hasArray()) {
- System.arraycopy(orig.array(), orig.arrayOffset() + orig.position(), copy.array(), 0, orig.remaining());
- } else {
- orig.slice().get(copy.array());
- }
-
- return copy;
- }
-
- public static byte[] copyBinary(final byte[] orig) {
- if (orig == null) {
- return null;
- }
-
- byte[] copy = new byte[orig.length];
- System.arraycopy(orig, 0, copy, 0, orig.length);
- return copy;
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TBaseProcessor.java b/app/src/main/java/org/apache/thrift/TBaseProcessor.java
deleted file mode 100644
index f93b133..0000000
--- a/app/src/main/java/org/apache/thrift/TBaseProcessor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.thrift;
-
-import java.util.Map;
-
-import org.apache.thrift.protocol.TMessage;
-import org.apache.thrift.protocol.TMessageType;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolUtil;
-import org.apache.thrift.protocol.TType;
-
-public abstract class TBaseProcessor implements TProcessor {
- private final I iface;
- private final Map> processMap;
-
- protected TBaseProcessor(I iface, Map> processFunctionMap) {
- this.iface = iface;
- this.processMap = processFunctionMap;
- }
-
- @Override
- public boolean process(TProtocol in, TProtocol out) throws TException {
- TMessage msg = in.readMessageBegin();
- ProcessFunction fn = processMap.get(msg.name);
- if (fn == null) {
- TProtocolUtil.skip(in, TType.STRUCT);
- in.readMessageEnd();
- TApplicationException x = new TApplicationException(TApplicationException.UNKNOWN_METHOD, "Invalid method name: '"+msg.name+"'");
- out.writeMessageBegin(new TMessage(msg.name, TMessageType.EXCEPTION, msg.seqid));
- x.write(out);
- out.writeMessageEnd();
- out.getTransport().flush();
- return true;
- }
- fn.process(msg.seqid, in, out, iface);
- return true;
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TByteArrayOutputStream.java b/app/src/main/java/org/apache/thrift/TByteArrayOutputStream.java
deleted file mode 100644
index 9ed83c0..0000000
--- a/app/src/main/java/org/apache/thrift/TByteArrayOutputStream.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * Class that allows access to the underlying buf without doing deep
- * copies on it.
- *
- */
-public class TByteArrayOutputStream extends ByteArrayOutputStream {
- public TByteArrayOutputStream(int size) {
- super(size);
- }
-
- public TByteArrayOutputStream() {
- super();
- }
-
- public byte[] get() {
- return buf;
- }
-
- public int len() {
- return count;
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TDeserializer.java b/app/src/main/java/org/apache/thrift/TDeserializer.java
deleted file mode 100644
index 803d9c6..0000000
--- a/app/src/main/java/org/apache/thrift/TDeserializer.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TField;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolFactory;
-import org.apache.thrift.protocol.TProtocolUtil;
-import org.apache.thrift.protocol.TType;
-import org.apache.thrift.transport.TMemoryInputTransport;
-
-/**
- * Generic utility for easily deserializing objects from a byte array or Java
- * String.
- *
- */
-public class TDeserializer {
- private final TProtocol protocol_;
- private final TMemoryInputTransport trans_;
-
- /**
- * Create a new TDeserializer that uses the TBinaryProtocol by default.
- */
- public TDeserializer() {
- this(new TBinaryProtocol.Factory());
- }
-
- /**
- * Create a new TDeserializer. It will use the TProtocol specified by the
- * factory that is passed in.
- *
- * @param protocolFactory Factory to create a protocol
- */
- public TDeserializer(TProtocolFactory protocolFactory) {
- trans_ = new TMemoryInputTransport();
- protocol_ = protocolFactory.getProtocol(trans_);
- }
-
- /**
- * Deserialize the Thrift object from a byte array.
- *
- * @param base The object to read into
- * @param bytes The array to read from
- */
- public void deserialize(TBase base, byte[] bytes) throws TException {
- try {
- trans_.reset(bytes);
- base.read(protocol_);
- } finally {
- trans_.clear();
- protocol_.reset();
- }
- }
-
- /**
- * Deserialize the Thrift object from a Java string, using a specified
- * character set for decoding.
- *
- * @param base The object to read into
- * @param data The string to read from
- * @param charset Valid JVM charset
- */
- public void deserialize(TBase base, String data, String charset) throws TException {
- try {
- deserialize(base, data.getBytes(charset));
- } catch (UnsupportedEncodingException uex) {
- throw new TException("JVM DOES NOT SUPPORT ENCODING: " + charset);
- } finally {
- protocol_.reset();
- }
- }
-
- /**
- * Deserialize only a single Thrift object (addressed by recursively using field id)
- * from a byte record.
- * @param tb The object to read into
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path tb
- * @param fieldIdPathRest The rest FieldId's that define a path tb
- * @throws TException
- */
- public void partialDeserialize(TBase tb, byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- try {
- if (locateField(bytes, fieldIdPathFirst, fieldIdPathRest) != null) {
- // if this line is reached, iprot will be positioned at the start of tb.
- tb.read(protocol_);
- }
- } catch (Exception e) {
- throw new TException(e);
- } finally {
- trans_.clear();
- protocol_.reset();
- }
- }
-
- /**
- * Deserialize only a boolean field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to a boolean field
- * @param fieldIdPathRest The rest FieldId's that define a path to a boolean field
- * @throws TException
- */
- public Boolean partialDeserializeBool(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (Boolean) partialDeserializeField(TType.BOOL, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only a byte field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to a byte field
- * @param fieldIdPathRest The rest FieldId's that define a path to a byte field
- * @throws TException
- */
- public Byte partialDeserializeByte(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (Byte) partialDeserializeField(TType.BYTE, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only a double field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to a double field
- * @param fieldIdPathRest The rest FieldId's that define a path to a double field
- * @throws TException
- */
- public Double partialDeserializeDouble(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (Double) partialDeserializeField(TType.DOUBLE, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only an i16 field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to an i16 field
- * @param fieldIdPathRest The rest FieldId's that define a path to an i16 field
- * @throws TException
- */
- public Short partialDeserializeI16(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (Short) partialDeserializeField(TType.I16, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only an i32 field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to an i32 field
- * @param fieldIdPathRest The rest FieldId's that define a path to an i32 field
- * @throws TException
- */
- public Integer partialDeserializeI32(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (Integer) partialDeserializeField(TType.I32, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only an i64 field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to an i64 field
- * @param fieldIdPathRest The rest FieldId's that define a path to an i64 field
- * @throws TException
- */
- public Long partialDeserializeI64(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (Long) partialDeserializeField(TType.I64, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only a string field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to a string field
- * @param fieldIdPathRest The rest FieldId's that define a path to a string field
- * @throws TException
- */
- public String partialDeserializeString(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- return (String) partialDeserializeField(TType.STRING, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only a binary field (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to a binary field
- * @param fieldIdPathRest The rest FieldId's that define a path to a binary field
- * @throws TException
- */
- public ByteBuffer partialDeserializeByteArray(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- // TType does not have binary, so we use the arbitrary num 100
- return (ByteBuffer) partialDeserializeField((byte)100, bytes, fieldIdPathFirst, fieldIdPathRest);
- }
-
- /**
- * Deserialize only the id of the field set in a TUnion (addressed by recursively using field id)
- * from a byte record.
- * @param bytes The serialized object to read from
- * @param fieldIdPathFirst First of the FieldId's that define a path to a TUnion
- * @param fieldIdPathRest The rest FieldId's that define a path to a TUnion
- * @throws TException
- */
- public Short partialDeserializeSetFieldIdInUnion(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- try {
- TField field = locateField(bytes, fieldIdPathFirst, fieldIdPathRest);
- if (field != null){
- protocol_.readStructBegin(); // The Union
- return protocol_.readFieldBegin().id; // The field set in the union
- }
- return null;
- } catch (Exception e) {
- throw new TException(e);
- } finally {
- trans_.clear();
- protocol_.reset();
- }
- }
-
- private Object partialDeserializeField(byte ttype, byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- try {
- TField field = locateField(bytes, fieldIdPathFirst, fieldIdPathRest);
- if (field != null) {
- // if this point is reached, iprot will be positioned at the start of the field.
- switch(ttype){
- case TType.BOOL:
- if (field.type == TType.BOOL){
- return protocol_.readBool();
- }
- break;
- case TType.BYTE:
- if (field.type == TType.BYTE) {
- return protocol_.readByte();
- }
- break;
- case TType.DOUBLE:
- if (field.type == TType.DOUBLE) {
- return protocol_.readDouble();
- }
- break;
- case TType.I16:
- if (field.type == TType.I16) {
- return protocol_.readI16();
- }
- break;
- case TType.I32:
- if (field.type == TType.I32) {
- return protocol_.readI32();
- }
- break;
- case TType.I64:
- if (field.type == TType.I64) {
- return protocol_.readI64();
- }
- break;
- case TType.STRING:
- if (field.type == TType.STRING) {
- return protocol_.readString();
- }
- break;
- case 100: // hack to differentiate between string and binary
- if (field.type == TType.STRING) {
- return protocol_.readBinary();
- }
- break;
- }
- }
- return null;
- } catch (Exception e) {
- throw new TException(e);
- } finally {
- trans_.clear();
- protocol_.reset();
- }
- }
-
- private TField locateField(byte[] bytes, TFieldIdEnum fieldIdPathFirst, TFieldIdEnum ... fieldIdPathRest) throws TException {
- trans_.reset(bytes);
-
- TFieldIdEnum[] fieldIdPath= new TFieldIdEnum[fieldIdPathRest.length + 1];
- fieldIdPath[0] = fieldIdPathFirst;
- for (int i = 0; i < fieldIdPathRest.length; i++){
- fieldIdPath[i + 1] = fieldIdPathRest[i];
- }
-
- // index into field ID path being currently searched for
- int curPathIndex = 0;
-
- // this will be the located field, or null if it is not located
- TField field = null;
-
- protocol_.readStructBegin();
-
- while (curPathIndex < fieldIdPath.length) {
- field = protocol_.readFieldBegin();
- // we can stop searching if we either see a stop or we go past the field
- // id we're looking for (since fields should now be serialized in asc
- // order).
- if (field.type == TType.STOP || field.id > fieldIdPath[curPathIndex].getThriftFieldId()) {
- return null;
- }
-
- if (field.id != fieldIdPath[curPathIndex].getThriftFieldId()) {
- // Not the field we're looking for. Skip field.
- TProtocolUtil.skip(protocol_, field.type);
- protocol_.readFieldEnd();
- } else {
- // This field is the next step in the path. Step into field.
- curPathIndex++;
- if (curPathIndex < fieldIdPath.length) {
- protocol_.readStructBegin();
- }
- }
- }
- return field;
- }
-
- /**
- * Deserialize the Thrift object from a Java string, using the default JVM
- * charset encoding.
- *
- * @param base The object to read into
- * @param data The string to read from
- */
- public void fromString(TBase base, String data) throws TException {
- deserialize(base, data.getBytes());
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TEnum.java b/app/src/main/java/org/apache/thrift/TEnum.java
deleted file mode 100644
index 325fdec..0000000
--- a/app/src/main/java/org/apache/thrift/TEnum.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-public interface TEnum {
- public int getValue();
-}
diff --git a/app/src/main/java/org/apache/thrift/TEnumHelper.java b/app/src/main/java/org/apache/thrift/TEnumHelper.java
deleted file mode 100644
index c17d661..0000000
--- a/app/src/main/java/org/apache/thrift/TEnumHelper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import java.lang.InstantiationException;
-import java.lang.NoSuchMethodException;
-import java.lang.IllegalAccessException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * Utility class with static methods for interacting with TEnum
- */
-public class TEnumHelper {
-
- /**
- * Given a TEnum class and integer value, this method will return
- * the associated constant from the given TEnum class.
- * This method MUST be modified should the name of the 'findByValue' method
- * change.
- *
- * @param enumClass TEnum from which to return a matching constant.
- * @param value Value for which to return the constant.
- *
- * @return The constant in 'enumClass' whose value is 'value' or null if
- * something went wrong.
- */
- public static TEnum getByValue(Class extends TEnum> enumClass, int value) {
- try {
- Method method = enumClass.getMethod("findByValue", int.class);
- return (TEnum) method.invoke(null, value);
- } catch (NoSuchMethodException nsme) {
- return null;
- } catch (IllegalAccessException iae) {
- return null;
- } catch (InvocationTargetException ite) {
- return null;
- }
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TException.java b/app/src/main/java/org/apache/thrift/TException.java
deleted file mode 100644
index cc3160f..0000000
--- a/app/src/main/java/org/apache/thrift/TException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-/**
- * Generic exception class for Thrift.
- *
- */
-public class TException extends RuntimeException {
-
- private static final long serialVersionUID = 1L;
-
- public TException() {
- super();
- }
-
- public TException(String message) {
- super(message);
- }
-
- public TException(Throwable cause) {
- super(cause);
- }
-
- public TException(String message, Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TFieldIdEnum.java b/app/src/main/java/org/apache/thrift/TFieldIdEnum.java
deleted file mode 100644
index 2956fba..0000000
--- a/app/src/main/java/org/apache/thrift/TFieldIdEnum.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-/**
- * Interface for all generated struct Fields objects.
- */
-public interface TFieldIdEnum {
- /**
- * Get the Thrift field id for the named field.
- */
- public short getThriftFieldId();
-
- /**
- * Get the field's name, exactly as in the IDL.
- */
- public String getFieldName();
-}
diff --git a/app/src/main/java/org/apache/thrift/TFieldRequirementType.java b/app/src/main/java/org/apache/thrift/TFieldRequirementType.java
deleted file mode 100644
index 74bac4e..0000000
--- a/app/src/main/java/org/apache/thrift/TFieldRequirementType.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-/**
- * Requirement type constants.
- *
- */
-public final class TFieldRequirementType {
- public static final byte REQUIRED = 1;
- public static final byte OPTIONAL = 2;
- public static final byte DEFAULT = 3;
-}
diff --git a/app/src/main/java/org/apache/thrift/TProcessor.java b/app/src/main/java/org/apache/thrift/TProcessor.java
deleted file mode 100644
index d79522c..0000000
--- a/app/src/main/java/org/apache/thrift/TProcessor.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import org.apache.thrift.protocol.TProtocol;
-
-/**
- * A processor is a generic object which operates upon an input stream and
- * writes to some output stream.
- *
- */
-public interface TProcessor {
- public boolean process(TProtocol in, TProtocol out)
- throws TException;
-}
diff --git a/app/src/main/java/org/apache/thrift/TProcessorFactory.java b/app/src/main/java/org/apache/thrift/TProcessorFactory.java
deleted file mode 100644
index bcd8a38..0000000
--- a/app/src/main/java/org/apache/thrift/TProcessorFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import org.apache.thrift.transport.TTransport;
-
-/**
- * The default processor factory just returns a singleton
- * instance.
- */
-public class TProcessorFactory {
-
- private final TProcessor processor_;
-
- public TProcessorFactory(TProcessor processor) {
- processor_ = processor;
- }
-
- public TProcessor getProcessor(TTransport trans) {
- return processor_;
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TSerializer.java b/app/src/main/java/org/apache/thrift/TSerializer.java
deleted file mode 100644
index 4e1ce61..0000000
--- a/app/src/main/java/org/apache/thrift/TSerializer.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import java.io.ByteArrayOutputStream;
-import java.io.UnsupportedEncodingException;
-
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolFactory;
-import org.apache.thrift.transport.TIOStreamTransport;
-
-/**
- * Generic utility for easily serializing objects into a byte array or Java
- * String.
- *
- */
-public class TSerializer {
-
- /**
- * This is the byte array that data is actually serialized into
- */
- private final ByteArrayOutputStream baos_ = new ByteArrayOutputStream();
-
- /**
- * This transport wraps that byte array
- */
- private final TIOStreamTransport transport_ = new TIOStreamTransport(baos_);
-
- /**
- * Internal protocol used for serializing objects.
- */
- private TProtocol protocol_;
-
- /**
- * Create a new TSerializer that uses the TBinaryProtocol by default.
- */
- public TSerializer() {
- this(new TBinaryProtocol.Factory());
- }
-
- /**
- * Create a new TSerializer. It will use the TProtocol specified by the
- * factory that is passed in.
- *
- * @param protocolFactory Factory to create a protocol
- */
- public TSerializer(TProtocolFactory protocolFactory) {
- protocol_ = protocolFactory.getProtocol(transport_);
- }
-
- /**
- * Serialize the Thrift object into a byte array. The process is simple,
- * just clear the byte array output, write the object into it, and grab the
- * raw bytes.
- *
- * @param base The object to serialize
- * @return Serialized object in byte[] format
- */
- public byte[] serialize(TBase base) throws TException {
- baos_.reset();
- base.write(protocol_);
- return baos_.toByteArray();
- }
-
- /**
- * Serialize the Thrift object into a Java string, using a specified
- * character set for encoding.
- *
- * @param base The object to serialize
- * @param charset Valid JVM charset
- * @return Serialized object as a String
- */
- public String toString(TBase base, String charset) throws TException {
- try {
- return new String(serialize(base), charset);
- } catch (UnsupportedEncodingException uex) {
- throw new TException("JVM DOES NOT SUPPORT ENCODING: " + charset);
- }
- }
-
- /**
- * Serialize the Thrift object into a Java string, using the default JVM
- * charset encoding.
- *
- * @param base The object to serialize
- * @return Serialized object as a String
- */
- public String toString(TBase base) throws TException {
- return new String(serialize(base));
- }
-}
-
diff --git a/app/src/main/java/org/apache/thrift/TServiceClient.java b/app/src/main/java/org/apache/thrift/TServiceClient.java
deleted file mode 100644
index 15715f1..0000000
--- a/app/src/main/java/org/apache/thrift/TServiceClient.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import org.apache.thrift.protocol.TMessage;
-import org.apache.thrift.protocol.TMessageType;
-import org.apache.thrift.protocol.TProtocol;
-
-/**
- * A TServiceClient is used to communicate with a TService implementation
- * across protocols and transports.
- */
-public abstract class TServiceClient {
- public TServiceClient(TProtocol prot) {
- this(prot, prot);
- }
-
- public TServiceClient(TProtocol iprot, TProtocol oprot) {
- iprot_ = iprot;
- oprot_ = oprot;
- }
-
- protected TProtocol iprot_;
- protected TProtocol oprot_;
-
- protected int seqid_;
-
- /**
- * Get the TProtocol being used as the input (read) protocol.
- * @return the TProtocol being used as the input (read) protocol.
- */
- public TProtocol getInputProtocol() {
- return this.iprot_;
- }
-
- /**
- * Get the TProtocol being used as the output (write) protocol.
- * @return the TProtocol being used as the output (write) protocol.
- */
- public TProtocol getOutputProtocol() {
- return this.oprot_;
- }
-
- protected void sendBase(String methodName, TBase args) throws TException {
- oprot_.writeMessageBegin(new TMessage(methodName, TMessageType.CALL, ++seqid_));
- args.write(oprot_);
- oprot_.writeMessageEnd();
- oprot_.getTransport().flush();
- }
-
- protected void receiveBase(TBase result, String methodName) throws TException {
- TMessage msg = iprot_.readMessageBegin();
- if (msg.type == TMessageType.EXCEPTION) {
- TApplicationException x = TApplicationException.read(iprot_);
- iprot_.readMessageEnd();
- throw x;
- }
- if (msg.seqid != seqid_) {
- throw new TApplicationException(TApplicationException.BAD_SEQUENCE_ID, methodName + " failed: out of sequence response");
- }
- result.read(iprot_);
- iprot_.readMessageEnd();
- }
-}
diff --git a/app/src/main/java/org/apache/thrift/TServiceClientFactory.java b/app/src/main/java/org/apache/thrift/TServiceClientFactory.java
deleted file mode 100644
index 988e655..0000000
--- a/app/src/main/java/org/apache/thrift/TServiceClientFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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
- *
- * http://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.thrift;
-
-import org.apache.thrift.protocol.TProtocol;
-
-/**
- * A TServiceClientFactory provides a general way to get a TServiceClient
- * connected to a remote TService via a protocol.
- * @param
- */
-public interface TServiceClientFactory {
- /**
- * Get a brand-new T using prot as both the input and output protocol.
- * @param prot
- * @return A brand-new T using prot as both the input and output protocol.
- */
- public T getClient(TProtocol prot);
-
- /**
- * Get a brand new T using the specified input and output protocols. The
- * input and output protocols may be the same instance.
- * @param iprot
- * @param oprot
- * @return a brand new T using the specified input and output protocols
- */
- public T getClient(TProtocol iprot, TProtocol oprot);
-}
diff --git a/app/src/main/java/org/apache/thrift/TUnion.java b/app/src/main/java/org/apache/thrift/TUnion.java
deleted file mode 100644
index 0173f9b..0000000
--- a/app/src/main/java/org/apache/thrift/TUnion.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/**
- * 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
- *
- * http://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.thrift;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.nio.ByteBuffer;
-
-import org.apache.thrift.TUnion.TUnionStandardScheme;
-import org.apache.thrift.protocol.TField;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolException;
-import org.apache.thrift.protocol.TStruct;
-import org.apache.thrift.scheme.IScheme;
-import org.apache.thrift.scheme.SchemeFactory;
-import org.apache.thrift.scheme.StandardScheme;
-import org.apache.thrift.scheme.TupleScheme;
-
-public abstract class TUnion, F extends TFieldIdEnum> implements TBase {
-
- protected Object value_;
- protected F setField_;
-
- protected TUnion() {
- setField_ = null;
- value_ = null;
- }
-
- private static final Map, SchemeFactory> schemes = new HashMap, SchemeFactory>();
- static {
- schemes.put(StandardScheme.class, new TUnionStandardSchemeFactory());
- schemes.put(TupleScheme.class, new TUnionTupleSchemeFactory());
- }
-
- protected TUnion(F setField, Object value) {
- setFieldValue(setField, value);
- }
-
- protected TUnion(TUnion other) {
- if (!other.getClass().equals(this.getClass())) {
- throw new ClassCastException();
- }
- setField_ = other.setField_;
- value_ = deepCopyObject(other.value_);
- }
-
- private static Object deepCopyObject(Object o) {
- if (o instanceof TBase) {
- return ((TBase)o).deepCopy();
- } else if (o instanceof ByteBuffer) {
- return TBaseHelper.copyBinary((ByteBuffer)o);
- } else if (o instanceof List) {
- return deepCopyList((List)o);
- } else if (o instanceof Set) {
- return deepCopySet((Set)o);
- } else if (o instanceof Map) {
- return deepCopyMap((Map)o);
- } else {
- return o;
- }
- }
-
- private static Map deepCopyMap(Map