Merge "Delete general sounding "CharArrayBuffers" class."
This commit is contained in:
@@ -1,89 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2008 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed 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 android.net.http;
|
|
||||||
|
|
||||||
import org.apache.http.util.CharArrayBuffer;
|
|
||||||
import org.apache.http.protocol.HTTP;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility methods for working on CharArrayBuffers.
|
|
||||||
*
|
|
||||||
* {@hide}
|
|
||||||
*/
|
|
||||||
class CharArrayBuffers {
|
|
||||||
|
|
||||||
static final char uppercaseAddon = 'a' - 'A';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the buffer contains the given string. Ignores leading
|
|
||||||
* whitespace and case.
|
|
||||||
*
|
|
||||||
* @param buffer to search
|
|
||||||
* @param beginIndex index at which we should start
|
|
||||||
* @param str to search for
|
|
||||||
*/
|
|
||||||
static boolean containsIgnoreCaseTrimmed(CharArrayBuffer buffer,
|
|
||||||
int beginIndex, final String str) {
|
|
||||||
int len = buffer.length();
|
|
||||||
char[] chars = buffer.buffer();
|
|
||||||
while (beginIndex < len && HTTP.isWhitespace(chars[beginIndex])) {
|
|
||||||
beginIndex++;
|
|
||||||
}
|
|
||||||
int size = str.length();
|
|
||||||
boolean ok = len >= beginIndex + size;
|
|
||||||
for (int j=0; ok && (j<size); j++) {
|
|
||||||
char a = chars[beginIndex+j];
|
|
||||||
char b = str.charAt(j);
|
|
||||||
if (a != b) {
|
|
||||||
a = toLower(a);
|
|
||||||
b = toLower(b);
|
|
||||||
ok = a == b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns index of first occurence ch. Lower cases characters leading up
|
|
||||||
* to first occurrence of ch.
|
|
||||||
*/
|
|
||||||
static int setLowercaseIndexOf(CharArrayBuffer buffer, final int ch) {
|
|
||||||
|
|
||||||
int beginIndex = 0;
|
|
||||||
int endIndex = buffer.length();
|
|
||||||
char[] chars = buffer.buffer();
|
|
||||||
|
|
||||||
for (int i = beginIndex; i < endIndex; i++) {
|
|
||||||
char current = chars[i];
|
|
||||||
if (current == ch) {
|
|
||||||
return i;
|
|
||||||
} else if (current >= 'A' && current <= 'Z'){
|
|
||||||
// make lower case
|
|
||||||
current += uppercaseAddon;
|
|
||||||
chars[i] = current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static char toLower(char c) {
|
|
||||||
if (c >= 'A' && c <= 'Z'){
|
|
||||||
c += uppercaseAddon;
|
|
||||||
}
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -158,7 +158,7 @@ public final class Headers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void parseHeader(CharArrayBuffer buffer) {
|
public void parseHeader(CharArrayBuffer buffer) {
|
||||||
int pos = CharArrayBuffers.setLowercaseIndexOf(buffer, ':');
|
int pos = setLowercaseIndexOf(buffer, ':');
|
||||||
if (pos == -1) {
|
if (pos == -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -459,12 +459,63 @@ public final class Headers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setConnectionType(CharArrayBuffer buffer, int pos) {
|
private void setConnectionType(CharArrayBuffer buffer, int pos) {
|
||||||
if (CharArrayBuffers.containsIgnoreCaseTrimmed(
|
if (containsIgnoreCaseTrimmed(buffer, pos, HTTP.CONN_CLOSE)) {
|
||||||
buffer, pos, HTTP.CONN_CLOSE)) {
|
|
||||||
connectionType = CONN_CLOSE;
|
connectionType = CONN_CLOSE;
|
||||||
} else if (CharArrayBuffers.containsIgnoreCaseTrimmed(
|
} else if (containsIgnoreCaseTrimmed(
|
||||||
buffer, pos, HTTP.CONN_KEEP_ALIVE)) {
|
buffer, pos, HTTP.CONN_KEEP_ALIVE)) {
|
||||||
connectionType = CONN_KEEP_ALIVE;
|
connectionType = CONN_KEEP_ALIVE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the buffer contains the given string. Ignores leading
|
||||||
|
* whitespace and case.
|
||||||
|
*
|
||||||
|
* @param buffer to search
|
||||||
|
* @param beginIndex index at which we should start
|
||||||
|
* @param str to search for
|
||||||
|
*/
|
||||||
|
static boolean containsIgnoreCaseTrimmed(CharArrayBuffer buffer,
|
||||||
|
int beginIndex, final String str) {
|
||||||
|
int len = buffer.length();
|
||||||
|
char[] chars = buffer.buffer();
|
||||||
|
while (beginIndex < len && HTTP.isWhitespace(chars[beginIndex])) {
|
||||||
|
beginIndex++;
|
||||||
|
}
|
||||||
|
int size = str.length();
|
||||||
|
boolean ok = len >= (beginIndex + size);
|
||||||
|
for (int j=0; ok && (j < size); j++) {
|
||||||
|
char a = chars[beginIndex + j];
|
||||||
|
char b = str.charAt(j);
|
||||||
|
if (a != b) {
|
||||||
|
a = Character.toLowerCase(a);
|
||||||
|
b = Character.toLowerCase(b);
|
||||||
|
ok = a == b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns index of first occurence ch. Lower cases characters leading up
|
||||||
|
* to first occurrence of ch.
|
||||||
|
*/
|
||||||
|
static int setLowercaseIndexOf(CharArrayBuffer buffer, final int ch) {
|
||||||
|
|
||||||
|
int beginIndex = 0;
|
||||||
|
int endIndex = buffer.length();
|
||||||
|
char[] chars = buffer.buffer();
|
||||||
|
|
||||||
|
for (int i = beginIndex; i < endIndex; i++) {
|
||||||
|
char current = chars[i];
|
||||||
|
if (current == ch) {
|
||||||
|
return i;
|
||||||
|
} else {
|
||||||
|
chars[i] = Character.toLowerCase(current);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ import javax.net.ssl.X509TrustManager;
|
|||||||
*/
|
*/
|
||||||
public class X509TrustManagerExtensions {
|
public class X509TrustManagerExtensions {
|
||||||
|
|
||||||
TrustManagerImpl mDelegate;
|
final TrustManagerImpl mDelegate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new X509TrustManagerExtensions wrapper.
|
* Constructs a new X509TrustManagerExtensions wrapper.
|
||||||
@@ -48,6 +48,7 @@ public class X509TrustManagerExtensions {
|
|||||||
if (tm instanceof TrustManagerImpl) {
|
if (tm instanceof TrustManagerImpl) {
|
||||||
mDelegate = (TrustManagerImpl) tm;
|
mDelegate = (TrustManagerImpl) tm;
|
||||||
} else {
|
} else {
|
||||||
|
mDelegate = null;
|
||||||
throw new IllegalArgumentException("tm is an instance of " + tm.getClass().getName() +
|
throw new IllegalArgumentException("tm is an instance of " + tm.getClass().getName() +
|
||||||
" which is not a supported type of X509TrustManager");
|
" which is not a supported type of X509TrustManager");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user