You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2017/01/23 23:52:01 UTC
jclouds git commit: JCLOUDS-1228: Include PublicAccess in responses
Repository: jclouds
Updated Branches:
refs/heads/master 32bb2db06 -> 87a6f2a61
JCLOUDS-1228: Include PublicAccess in responses
REST API version 2016-05-31 includes PublicAccess in List Containers
and Get Container Properties APIs.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/87a6f2a6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/87a6f2a6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/87a6f2a6
Branch: refs/heads/master
Commit: 87a6f2a615d2986490e85e26b86ce0ed6f04ac17
Parents: 32bb2db
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Jan 20 00:29:48 2017 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Fri Jan 20 12:02:18 2017 -0800
----------------------------------------------------------------------
.../azureblob/domain/ContainerProperties.java | 2 ++
.../MutableContainerPropertiesWithMetadata.java | 2 ++
.../jclouds/azureblob/domain/PublicAccess.java | 3 +++
.../internal/ContainerPropertiesImpl.java | 21 +++++++++++++++++++-
...ableContainerPropertiesWithMetadataImpl.java | 18 +++++++++++++++++
.../ParseContainerPropertiesFromHeaders.java | 1 +
.../AccountNameEnumerationResultsHandler.java | 7 ++++++-
.../azureblob/AzureBlobClientLiveTest.java | 17 +++++++++++-----
...ccountNameEnumerationResultsHandlerTest.java | 13 ++++++------
.../src/test/resources/test_list_containers.xml | 2 ++
.../resources/test_list_containers_options.xml | 2 ++
11 files changed, 75 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/ContainerProperties.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/ContainerProperties.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/ContainerProperties.java
index 59fb7f6..2cdabdf 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/ContainerProperties.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/ContainerProperties.java
@@ -29,5 +29,7 @@ public interface ContainerProperties extends Comparable<ContainerProperties> {
String getETag();
+ PublicAccess getPublicAccess();
+
Map<String, String> getMetadata();
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableContainerPropertiesWithMetadata.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableContainerPropertiesWithMetadata.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableContainerPropertiesWithMetadata.java
index b4a6ed7..2055d5c 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableContainerPropertiesWithMetadata.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/MutableContainerPropertiesWithMetadata.java
@@ -46,6 +46,8 @@ public interface MutableContainerPropertiesWithMetadata extends ContainerPropert
*/
void setETag(String eTag);
+ void setPublicAccess(PublicAccess publicAccess);
+
/**
* @see ListableContainerProperties#setMetadata
*/
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/PublicAccess.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/PublicAccess.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/PublicAccess.java
index 61d0a1a..7ea4ec2 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/PublicAccess.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/PublicAccess.java
@@ -40,4 +40,7 @@ public enum PublicAccess {
*/
PRIVATE;
+ public static PublicAccess fromString(String string) {
+ return valueOf(string.toUpperCase());
+ }
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/ContainerPropertiesImpl.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/ContainerPropertiesImpl.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/ContainerPropertiesImpl.java
index 128e0a0..f9ffb95 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/ContainerPropertiesImpl.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/ContainerPropertiesImpl.java
@@ -23,6 +23,7 @@ import java.util.Date;
import java.util.Map;
import org.jclouds.azureblob.domain.ContainerProperties;
+import org.jclouds.azureblob.domain.PublicAccess;
import com.google.common.collect.Maps;
@@ -35,14 +36,21 @@ public class ContainerPropertiesImpl implements ContainerProperties {
private final URI url;
private final Date lastModified;
private final String eTag;
+ private final PublicAccess publicAccess;
private final Map<String, String> metadata = Maps.newLinkedHashMap();
- public ContainerPropertiesImpl(URI url, Date lastModified, String eTag, Map<String, String> metadata) {
+ public ContainerPropertiesImpl(URI url, Date lastModified, String eTag, Map<String, String> metadata, PublicAccess publicAccess) {
this.url = checkNotNull(url, "url");
this.name = checkNotNull(url.getPath(), "url.getPath()").replaceFirst("/", "");
this.lastModified = checkNotNull(lastModified, "lastModified");
this.eTag = checkNotNull(eTag, "eTag");
this.metadata.putAll(checkNotNull(metadata, "metadata"));
+ this.publicAccess = checkNotNull(publicAccess);
+ }
+
+ @Deprecated
+ public ContainerPropertiesImpl(URI url, Date lastModified, String eTag, Map<String, String> metadata) {
+ this(url, lastModified, eTag, metadata, PublicAccess.PRIVATE);
}
/**
@@ -90,6 +98,11 @@ public class ContainerPropertiesImpl implements ContainerProperties {
}
@Override
+ public PublicAccess getPublicAccess() {
+ return publicAccess;
+ }
+
+ @Override
public int hashCode() {
final int prime = 31;
int result = 1;
@@ -97,6 +110,7 @@ public class ContainerPropertiesImpl implements ContainerProperties {
result = prime * result + ((lastModified == null) ? 0 : lastModified.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((url == null) ? 0 : url.hashCode());
+ result = prime * result + ((publicAccess == null) ? 0 : publicAccess.hashCode());
return result;
}
@@ -129,6 +143,11 @@ public class ContainerPropertiesImpl implements ContainerProperties {
return false;
} else if (!url.equals(other.url))
return false;
+ if (publicAccess == null) {
+ if (other.publicAccess != null)
+ return false;
+ } else if (!publicAccess.equals(other.publicAccess))
+ return false;
return true;
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableContainerPropertiesWithMetadataImpl.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableContainerPropertiesWithMetadataImpl.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableContainerPropertiesWithMetadataImpl.java
index a424b56..4c10033 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableContainerPropertiesWithMetadataImpl.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/domain/internal/MutableContainerPropertiesWithMetadataImpl.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.jclouds.azureblob.domain.ContainerProperties;
import org.jclouds.azureblob.domain.MutableContainerPropertiesWithMetadata;
+import org.jclouds.azureblob.domain.PublicAccess;
import com.google.common.collect.Maps;
@@ -35,6 +36,7 @@ public class MutableContainerPropertiesWithMetadataImpl implements
private URI url;
private Date lastModified;
private String eTag;
+ private PublicAccess publicAccess;
private Map<String, String> metadata = Maps.newHashMap();
@@ -65,6 +67,11 @@ public class MutableContainerPropertiesWithMetadataImpl implements
return eTag;
}
+ @Override
+ public PublicAccess getPublicAccess() {
+ return publicAccess;
+ }
+
/**
*{@inheritDoc}
*/
@@ -89,6 +96,11 @@ public class MutableContainerPropertiesWithMetadataImpl implements
this.eTag = eTag;
}
+ @Override
+ public void setPublicAccess(PublicAccess publicAccess) {
+ this.publicAccess = publicAccess;
+ }
+
/**
*{@inheritDoc}
*/
@@ -130,6 +142,7 @@ public class MutableContainerPropertiesWithMetadataImpl implements
result = prime * result + ((metadata == null) ? 0 : metadata.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((url == null) ? 0 : url.hashCode());
+ result = prime * result + ((publicAccess == null) ? 0 : publicAccess.hashCode());
return result;
}
@@ -167,6 +180,11 @@ public class MutableContainerPropertiesWithMetadataImpl implements
return false;
} else if (!url.equals(other.url))
return false;
+ if (publicAccess == null) {
+ if (other.publicAccess != null)
+ return false;
+ } else if (!publicAccess.equals(other.publicAccess))
+ return false;
return true;
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseContainerPropertiesFromHeaders.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseContainerPropertiesFromHeaders.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseContainerPropertiesFromHeaders.java
index a4f407c..9fd9be2 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseContainerPropertiesFromHeaders.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/functions/ParseContainerPropertiesFromHeaders.java
@@ -63,6 +63,7 @@ public class ParseContainerPropertiesFromHeaders implements Function<HttpRespons
parseLastModifiedOrThrowException(from, to);
addETagTo(from, to);
to.setUrl(request.getEndpoint());
+ to.setPublicAccess(new ParsePublicAccessHeader().apply(from));
return to;
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandler.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandler.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandler.java
index 1d71aeb..48b3a6e 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandler.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandler.java
@@ -29,6 +29,7 @@ import javax.inject.Inject;
import org.jclouds.azure.storage.domain.BoundedSet;
import org.jclouds.azure.storage.domain.internal.BoundedHashSet;
import org.jclouds.azureblob.domain.ContainerProperties;
+import org.jclouds.azureblob.domain.PublicAccess;
import org.jclouds.azureblob.domain.internal.ContainerPropertiesImpl;
import org.jclouds.date.DateService;
import org.jclouds.http.functions.ParseSax;
@@ -56,6 +57,7 @@ public class AccountNameEnumerationResultsHandler extends
private String currentName;
private Date currentLastModified;
private String currentETag;
+ private PublicAccess currentPublicAccess = PublicAccess.PRIVATE;
private boolean inMetadata;
private Map<String, String> currentMetadata = Maps.newHashMap();
@@ -111,10 +113,11 @@ public class AccountNameEnumerationResultsHandler extends
throw propagate(use);
}
containerMetadata.add(new ContainerPropertiesImpl(currentUrl, currentLastModified,
- currentETag, currentMetadata));
+ currentETag, currentMetadata, currentPublicAccess));
currentName = null;
currentLastModified = null;
currentETag = null;
+ currentPublicAccess = PublicAccess.PRIVATE;
currentMetadata = Maps.newHashMap();
} else if (qName.equals("Name")) {
currentName = currentText.toString().trim();
@@ -122,6 +125,8 @@ public class AccountNameEnumerationResultsHandler extends
currentLastModified = dateParser.rfc822DateParse(currentText.toString().trim());
} else if (qName.equals("Etag")) {
currentETag = currentText.toString().trim();
+ } else if (qName.equals("PublicAccess")) {
+ currentPublicAccess = PublicAccess.fromString(currentText.toString().trim());
}
currentText.setLength(0);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
index 07f1944..2489ea2 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
@@ -129,11 +129,18 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest {
throw e;
}
}
- // TODO
- // URL url = new URL(String.format("http://%s.blob.core.windows.net/%s",
- // identity,
- // publicContainer));
- // Utils.toStringAndClose(url.openStream());
+
+ ContainerProperties properties = null;
+ for (ContainerProperties p : getApi().listContainers(includeMetadata())) {
+ if (p.getName().equals(publicContainer)) {
+ properties = p;
+ break;
+ }
+ }
+ assertThat(properties.getPublicAccess()).isEqualTo(PublicAccess.BLOB);
+
+ properties = getApi().getContainerProperties(publicContainer);
+ assertThat(properties.getPublicAccess()).isEqualTo(PublicAccess.BLOB);
}
@Test(timeOut = 10 * 60 * 1000)
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandlerTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandlerTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandlerTest.java
index ac08fb4..fd42d99 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandlerTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/xml/AccountNameEnumerationResultsHandlerTest.java
@@ -25,6 +25,7 @@ import java.util.SortedSet;
import org.jclouds.azure.storage.domain.BoundedSet;
import org.jclouds.azure.storage.domain.internal.BoundedHashSet;
import org.jclouds.azureblob.domain.ContainerProperties;
+import org.jclouds.azureblob.domain.PublicAccess;
import org.jclouds.azureblob.domain.internal.ContainerPropertiesImpl;
import org.jclouds.date.DateService;
import org.jclouds.http.functions.BaseHandlerTest;
@@ -57,15 +58,15 @@ public class AccountNameEnumerationResultsHandlerTest extends BaseHandlerTest {
contents.add(new ContainerPropertiesImpl(URI
.create("http://myaccount.blob.core.windows.net/audio"), dateService
.rfc822DateParse("Wed, 13 Aug 2008 20:39:39 GMT"), "0x8CACB9BD7C6B1B2", Maps
- .<String, String> newHashMap()));
+ .<String, String> newHashMap(), PublicAccess.CONTAINER));
contents.add(new ContainerPropertiesImpl(URI
.create("http://myaccount.blob.core.windows.net/images"), dateService
.rfc822DateParse("Wed, 14 Aug 2008 20:39:39 GMT"), "0x8CACB9BD7C1EEEC", Maps
- .<String, String> newHashMap()));
+ .<String, String> newHashMap(), PublicAccess.BLOB));
contents.add(new ContainerPropertiesImpl(URI
.create("http://myaccount.blob.core.windows.net/textfiles"), dateService
.rfc822DateParse("Wed, 15 Aug 2008 20:39:39 GMT"), "0x8CACB9BD7BACAC3", Maps
- .<String, String> newHashMap()));
+ .<String, String> newHashMap(), PublicAccess.PRIVATE));
BoundedSet<ContainerProperties> list = new BoundedHashSet<ContainerProperties>(contents, URI
.create("http://myaccount.blob.core.windows.net/"), null, null, 3, "video");
@@ -80,15 +81,15 @@ public class AccountNameEnumerationResultsHandlerTest extends BaseHandlerTest {
contents.add(new ContainerPropertiesImpl(URI
.create("http://myaccount.blob.core.windows.net/audio"), dateService
.rfc822DateParse("Wed, 13 Aug 2008 20:39:39 GMT"), "0x8CACB9BD7C6B1B2", Maps
- .<String, String> newHashMap()));
+ .<String, String> newHashMap(), PublicAccess.CONTAINER));
contents.add(new ContainerPropertiesImpl(URI
.create("http://myaccount.blob.core.windows.net/images"), dateService
.rfc822DateParse("Wed, 14 Aug 2008 20:39:39 GMT"), "0x8CACB9BD7C1EEEC", Maps
- .<String, String> newHashMap()));
+ .<String, String> newHashMap(), PublicAccess.BLOB));
contents.add(new ContainerPropertiesImpl(URI
.create("http://myaccount.blob.core.windows.net/textfiles"), dateService
.rfc822DateParse("Wed, 15 Aug 2008 20:39:39 GMT"), "0x8CACB9BD7BACAC3", Maps
- .<String, String> newHashMap()));
+ .<String, String> newHashMap(), PublicAccess.PRIVATE));
InputStream is = getClass().getResourceAsStream("/test_list_containers_options.xml");
BoundedSet<ContainerProperties> list = new BoundedHashSet<ContainerProperties>(contents, URI
.create("http://myaccount.blob.core.windows.net"), "prefix", "marker", 1, "video");
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/test/resources/test_list_containers.xml
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/resources/test_list_containers.xml b/providers/azureblob/src/test/resources/test_list_containers.xml
index 348f266..facadaa 100644
--- a/providers/azureblob/src/test/resources/test_list_containers.xml
+++ b/providers/azureblob/src/test/resources/test_list_containers.xml
@@ -6,11 +6,13 @@
<Name>audio</Name>
<Last-Modified>Wed, 13 Aug 2008 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7C6B1B2</Etag>
+ <PublicAccess>container</PublicAccess>
</Container>
<Container>
<Name>images</Name>
<Last-Modified>Wed, 14 Aug 2008 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7C1EEEC</Etag>
+ <PublicAccess>blob</PublicAccess>
</Container>
<Container>
<Name>textfiles</Name>
http://git-wip-us.apache.org/repos/asf/jclouds/blob/87a6f2a6/providers/azureblob/src/test/resources/test_list_containers_options.xml
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/resources/test_list_containers_options.xml b/providers/azureblob/src/test/resources/test_list_containers_options.xml
index 4a1c45e..76b86bd 100644
--- a/providers/azureblob/src/test/resources/test_list_containers_options.xml
+++ b/providers/azureblob/src/test/resources/test_list_containers_options.xml
@@ -8,11 +8,13 @@
<Name>audio</Name>
<Last-Modified>Wed, 13 Aug 2008 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7C6B1B2</Etag>
+ <PublicAccess>container</PublicAccess>
</Container>
<Container>
<Name>images</Name>
<Last-Modified>Wed, 14 Aug 2008 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7C1EEEC</Etag>
+ <PublicAccess>blob</PublicAccess>
</Container>
<Container>
<Name>textfiles</Name>