|
@@ -33,9 +33,10 @@ import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.TimeZone;
|
|
|
import java.util.List;
|
|
|
-import org.apache.commons.httpclient.URIException;
|
|
|
-import org.apache.commons.httpclient.util.URIUtil;
|
|
|
+import org.apache.commons.codec.DecoderException;
|
|
|
+import org.apache.commons.codec.net.URLCodec;
|
|
|
import org.apache.commons.lang.NotImplementedException;
|
|
|
+import org.apache.http.client.utils.URIBuilder;
|
|
|
|
|
|
import com.microsoft.azure.storage.AccessCondition;
|
|
|
import com.microsoft.azure.storage.CloudStorageAccount;
|
|
@@ -68,6 +69,7 @@ public class MockStorageInterface extends StorageInterface {
|
|
|
private final ArrayList<PreExistingContainer> preExistingContainers =
|
|
|
new ArrayList<MockStorageInterface.PreExistingContainer>();
|
|
|
private String baseUriString;
|
|
|
+ private static final URLCodec codec = new URLCodec();
|
|
|
|
|
|
public InMemoryBlockBlobStore getBackingStore() {
|
|
|
return backingStore;
|
|
@@ -126,22 +128,17 @@ public class MockStorageInterface extends StorageInterface {
|
|
|
*/
|
|
|
private static String convertUriToDecodedString(URI uri) {
|
|
|
try {
|
|
|
- String result = URIUtil.decode(uri.toString());
|
|
|
- return result;
|
|
|
- } catch (URIException e) {
|
|
|
+ return codec.decode(uri.toString());
|
|
|
+ } catch (DecoderException e) {
|
|
|
throw new AssertionError("Failed to decode URI: " + uri.toString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private static URI convertKeyToEncodedUri(String key) {
|
|
|
try {
|
|
|
- String encodedKey = URIUtil.encodePath(key);
|
|
|
- URI uri = new URI(encodedKey);
|
|
|
- return uri;
|
|
|
+ return new URIBuilder().setPath(key).build();
|
|
|
} catch (URISyntaxException e) {
|
|
|
throw new AssertionError("Failed to encode key: " + key);
|
|
|
- } catch (URIException e) {
|
|
|
- throw new AssertionError("Failed to encode key: " + key);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -149,11 +146,8 @@ public class MockStorageInterface extends StorageInterface {
|
|
|
public CloudBlobContainerWrapper getContainerReference(String name)
|
|
|
throws URISyntaxException, StorageException {
|
|
|
String fullUri;
|
|
|
- try {
|
|
|
- fullUri = baseUriString + "/" + URIUtil.encodePath(name);
|
|
|
- } catch (URIException e) {
|
|
|
- throw new RuntimeException("problem encoding fullUri", e);
|
|
|
- }
|
|
|
+ URIBuilder builder = new URIBuilder(baseUriString);
|
|
|
+ fullUri = builder.setPath(builder.getPath() + "/" + name).toString();
|
|
|
|
|
|
MockCloudBlobContainerWrapper container = new MockCloudBlobContainerWrapper(
|
|
|
fullUri, name);
|
|
@@ -243,8 +237,6 @@ public class MockStorageInterface extends StorageInterface {
|
|
|
// helper to create full URIs for directory and blob.
|
|
|
// use withTrailingSlash=true to get a good path for a directory.
|
|
|
private String fullUriString(String relativePath, boolean withTrailingSlash) {
|
|
|
- String fullUri;
|
|
|
-
|
|
|
String baseUri = this.baseUri;
|
|
|
if (!baseUri.endsWith("/")) {
|
|
|
baseUri += "/";
|
|
@@ -255,12 +247,11 @@ public class MockStorageInterface extends StorageInterface {
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- fullUri = baseUri + URIUtil.encodePath(relativePath);
|
|
|
- } catch (URIException e) {
|
|
|
+ URIBuilder builder = new URIBuilder(baseUri);
|
|
|
+ return builder.setPath(builder.getPath() + relativePath).toString();
|
|
|
+ } catch (URISyntaxException e) {
|
|
|
throw new RuntimeException("problem encoding fullUri", e);
|
|
|
}
|
|
|
-
|
|
|
- return fullUri;
|
|
|
}
|
|
|
}
|
|
|
|