public static HttpURLConnection update(final URI rootUri, final TableRequestOptions tableOptions,
            final UriQueryBuilder queryBuilder, final OperationContext opContext, final String tableName,
            final String identity, final String eTag) throws IOException, URISyntaxException, StorageException {
        final HttpURLConnection retConnection = coreCreate(rootUri, tableOptions, queryBuilder, opContext, tableName,
                eTag, identity, "PUT");

        retConnection.setDoOutput(true);
        return retConnection;
    }

public static HttpURLConnection update ( final URI rootUri , final TableRequestOptions tableOptions , final UriQueryBuilder queryBuilder , final OperationContext opContext , final String tableName , final String identity , final String eTag ) throws IOException , URISyntaxException , StorageException { final HttpURLConnection retConnection = coreCreate ( rootUri , tableOptions , queryBuilder , opContext , tableName , eTag , identity , "PUT" ) ; retConnection . setDoOutput ( true ) ; return retConnection ; }

Reserved for internal use. Constructs an HttpURLConnection to perform an update operation.

@param rootUri
A java.net.URI containing an absolute URI to the resource.
@param tableOptions
A {@link TableRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudTableClient}.
@param queryBuilder
The {@link UriQueryBuilder} for the operation.
@param opContext
An {@link OperationContext} object for tracking the current operation. Specify null to
safely ignore operation context.
@param tableName
The name of the table.
@param identity
A String representing the identity of the entity. The resulting request will be formatted
using /tableName(identity) if identity is not >code>null or empty.
@param eTag
The etag of the entity.
@return
An HttpURLConnection to use to perform the operation.

@throws IOException
if there is an error opening the connection.
@throws URISyntaxException
if the resource URI is invalid.
@throws StorageException
if a storage service error occurred during the operation.

Reserved for internal use . Constructs an HttpURLConnection to perform an update operation .


public static HttpURLConnection setAcl(final URI rootUri, final TableRequestOptions options,
            final OperationContext opContext) throws IOException, URISyntaxException, StorageException {

        UriQueryBuilder queryBuilder = new UriQueryBuilder();
        queryBuilder.add(Constants.QueryConstants.COMPONENT, "acl");

        final HttpURLConnection retConnection = BaseRequest.createURLConnection(rootUri, options, queryBuilder,
                opContext);
        retConnection.setRequestMethod("PUT");
        retConnection.setDoOutput(true);

        return retConnection;
    }

public static HttpURLConnection setAcl ( final URI rootUri , final TableRequestOptions options , final OperationContext opContext ) throws IOException , URISyntaxException , StorageException { UriQueryBuilder queryBuilder = new UriQueryBuilder ( ) ; queryBuilder . add ( Constants . QueryConstants . COMPONENT , "acl" ) ; final HttpURLConnection retConnection = BaseRequest . createURLConnection ( rootUri , options , queryBuilder , opContext ) ; retConnection . setRequestMethod ( "PUT" ) ; retConnection . setDoOutput ( true ) ; return retConnection ; }

Sets the ACL for the table. Sign with length of aclBytes.

@param rootUri
A java.net.URI containing an absolute URI to the resource.
@param tableOptions
A {@link TableRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudTableClient}.
@param opContext
An {@link OperationContext} object for tracking the current operation. Specify null to
safely ignore operation context.

@return a HttpURLConnection configured for the operation.
@throws StorageException

Sets the ACL for the table . Sign with length of aclBytes .


public static byte[] serializeToByteArray(final ServiceProperties properties) throws IllegalArgumentException,
            IllegalStateException, IOException {
        final StringWriter outWriter = new StringWriter();
        final XmlSerializer xmlw = Utility.getXmlSerializer(outWriter);

        // default is UTF8
        xmlw.startDocument(Constants.UTF8_CHARSET, true);
        xmlw.startTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.STORAGE_SERVICE_PROPERTIES_ELEMENT);

        if (properties.getLogging() != null) {
            // Logging Properties
            writeLoggingProperties(xmlw, properties.getLogging());
        }

        if (properties.getHourMetrics() != null) {
            // Hour Metrics
            writeMetricsProperties(xmlw, properties.getHourMetrics(), Constants.AnalyticsConstants.HOUR_METRICS_ELEMENT);
        }

        if (properties.getMinuteMetrics() != null) {
            // Minute Metrics
            writeMetricsProperties(xmlw, properties.getMinuteMetrics(),
                    Constants.AnalyticsConstants.MINUTE_METRICS_ELEMENT);
        }

        if (properties.getCors() != null) {
            // CORS Properties
            writeCorsProperties(xmlw, properties.getCors());
        }

        // Default Service Version
        if (properties.getDefaultServiceVersion() != null) {
            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.DEFAULT_SERVICE_VERSION,
                    properties.getDefaultServiceVersion());
        }

        // end StorageServiceProperties
        xmlw.endTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.STORAGE_SERVICE_PROPERTIES_ELEMENT);

        // end doc
        xmlw.endDocument();

        return outWriter.toString().getBytes(Constants.UTF8_CHARSET);
    }

public
static
byte
[
]
serializeToByteArray
(
final
ServiceProperties
properties
)
throws
IllegalArgumentException
,
IllegalStateException
,
IOException
{
final
StringWriter
outWriter
=
new
StringWriter
(
)
;
final
XmlSerializer
xmlw
=
Utility
.
getXmlSerializer
(
outWriter
)
;
// default is UTF8
xmlw
.
startDocument
(
Constants
.
UTF8_CHARSET
,
true
)
;
xmlw
.
startTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
STORAGE_SERVICE_PROPERTIES_ELEMENT
)
;
if
(
properties
.
getLogging
(
)
!=
)
{
// Logging Properties
writeLoggingProperties
(
xmlw
,
properties
.
getLogging
(
)
)
;
}
if
(
properties
.
getHourMetrics
(
)
!=
)
{
// Hour Metrics
writeMetricsProperties
(
xmlw
,
properties
.
getHourMetrics
(
)
,
Constants
.
AnalyticsConstants
.
HOUR_METRICS_ELEMENT
)
;
}
if
(
properties
.
getMinuteMetrics
(
)
!=
)
{
// Minute Metrics
writeMetricsProperties
(
xmlw
,
properties
.
getMinuteMetrics
(
)
,
Constants
.
AnalyticsConstants
.
MINUTE_METRICS_ELEMENT
)
;
}
if
(
properties
.
getCors
(
)
!=
)
{
// CORS Properties
writeCorsProperties
(
xmlw
,
properties
.
getCors
(
)
)
;
}
// Default Service Version
if
(
properties
.
getDefaultServiceVersion
(
)
!=
)
{
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
DEFAULT_SERVICE_VERSION
,
properties
.
getDefaultServiceVersion
(
)
)
;
}
// end StorageServiceProperties
xmlw
.
endTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
STORAGE_SERVICE_PROPERTIES_ELEMENT
)
;
// end doc
xmlw
.
endDocument
(
)
;
return
outWriter
.
toString
(
)
.
getBytes
(
Constants
.
UTF8_CHARSET
)
;
}

Writes the contents of the ServiceProperties to the stream in xml format.

@return a byte array of the content to write to the stream.
@throws IOException
if there is an error writing the service properties.
@throws IllegalStateException
if there is an error writing the service properties.
@throws IllegalArgumentException
if there is an error writing the service properties.

Writes the contents of the ServiceProperties to the stream in xml format .


private static void writeRetentionPolicy(final XmlSerializer xmlw, final Integer val)
            throws IllegalArgumentException, IllegalStateException, IOException {
        xmlw.startTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.RETENTION_POLICY_ELEMENT);

        // Enabled
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.ENABLED_ELEMENT, val != null ? Constants.TRUE
                : Constants.FALSE);

        if (val != null) {
            // Days
            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.DAYS_ELEMENT, val.toString());
        }

        // End Retention Policy
        xmlw.endTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.RETENTION_POLICY_ELEMENT);
    }

private
static
void
writeRetentionPolicy
(
final
XmlSerializer
xmlw
,
final
Integer
val
)
throws
IllegalArgumentException
,
IllegalStateException
,
IOException
{
xmlw
.
startTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
RETENTION_POLICY_ELEMENT
)
;
// Enabled
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
ENABLED_ELEMENT
,
val
!=
Constants
.
TRUE
:
Constants
.
FALSE
)
;
if
(
val
!=
)
{
// Days
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
DAYS_ELEMENT
,
val
.
toString
(
)
)
;
}
// End Retention Policy
xmlw
.
endTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
RETENTION_POLICY_ELEMENT
)
;
}

Writes the retention policy to the XMLStreamWriter.

@param xmlw
the XMLStreamWriter to write to.
@param val
the nullable Integer indicating if the retention policy is enabled, and how long
@throws IOException
if there is an error writing the service properties.
@throws IllegalStateException
if there is an error writing the service properties.
@throws IllegalArgumentException
if there is an error writing the service properties.

Writes the retention policy to the XMLStreamWriter .


private static void writeCorsProperties(final XmlSerializer xmlw, final CorsProperties cors)
            throws IllegalArgumentException, IllegalStateException, IOException {
        Utility.assertNotNull("CorsRules", cors.getCorsRules());

        // CORS
        xmlw.startTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.CORS_ELEMENT);

        for (CorsRule rule : cors.getCorsRules()) {
            if (rule.getAllowedOrigins().isEmpty() || rule.getAllowedMethods().isEmpty()
                    || rule.getMaxAgeInSeconds() < 0) {
                throw new IllegalArgumentException(SR.INVALID_CORS_RULE);
            }

            xmlw.startTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.CORS_RULE_ELEMENT);

            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.ALLOWED_ORIGINS_ELEMENT,
                    joinToString(rule.getAllowedOrigins(), ","));

            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.ALLOWED_METHODS_ELEMENT,
                    joinToString(rule.getAllowedMethods(), ","));

            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.EXPOSED_HEADERS_ELEMENT,
                    joinToString(rule.getExposedHeaders(), ","));

            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.ALLOWED_HEADERS_ELEMENT,
                    joinToString(rule.getAllowedHeaders(), ","));

            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.MAX_AGE_IN_SECONDS_ELEMENT,
                    Integer.toString(rule.getMaxAgeInSeconds()));

            xmlw.endTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.CORS_RULE_ELEMENT);
        }

        // end CORS
        xmlw.endTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.CORS_ELEMENT);
    }

private
static
void
writeCorsProperties
(
final
XmlSerializer
xmlw
,
final
CorsProperties
cors
)
throws
IllegalArgumentException
,
IllegalStateException
,
IOException
{
Utility
.
assertNotNull
(
"CorsRules"
,
cors
.
getCorsRules
(
)
)
;
// CORS
xmlw
.
startTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
CORS_ELEMENT
)
;
for
(
CorsRule
rule
:
cors
.
getCorsRules
(
)
)
{
if
(
rule
.
getAllowedOrigins
(
)
.
isEmpty
(
)
||
rule
.
getAllowedMethods
(
)
.
isEmpty
(
)
||
rule
.
getMaxAgeInSeconds
(
)
<
0
)
{
throw
new
IllegalArgumentException
(
SR
.
INVALID_CORS_RULE
)
;
}
xmlw
.
startTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
CORS_RULE_ELEMENT
)
;
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
ALLOWED_ORIGINS_ELEMENT
,
joinToString
(
rule
.
getAllowedOrigins
(
)
,
","
)
)
;
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
ALLOWED_METHODS_ELEMENT
,
joinToString
(
rule
.
getAllowedMethods
(
)
,
","
)
)
;
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
EXPOSED_HEADERS_ELEMENT
,
joinToString
(
rule
.
getExposedHeaders
(
)
,
","
)
)
;
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
ALLOWED_HEADERS_ELEMENT
,
joinToString
(
rule
.
getAllowedHeaders
(
)
,
","
)
)
;
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
MAX_AGE_IN_SECONDS_ELEMENT
,
Integer
.
toString
(
rule
.
getMaxAgeInSeconds
(
)
)
)
;
xmlw
.
endTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
CORS_RULE_ELEMENT
)
;
}
// end CORS
xmlw
.
endTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
CORS_ELEMENT
)
;
}

Writes the given CORS properties to the XMLStreamWriter.

@param xmlw
the XMLStreamWriter to write to.
@param cors
the CORS Properties to be written.
@throws IOException
if there is an error writing the service properties.
@throws IllegalStateException
if there is an error writing the service properties.
@throws IllegalArgumentException
if there is an error writing the service properties.

Writes the given CORS properties to the XMLStreamWriter .


private static void writeMetricsProperties(final XmlSerializer xmlw, final MetricsProperties metrics,
            final String metricsName) throws IllegalArgumentException, IllegalStateException, IOException {
        Utility.assertNotNull("metrics.Configuration", metrics.getMetricsLevel());

        // Metrics
        xmlw.startTag(Constants.EMPTY_STRING, metricsName);

        // Version
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.VERSION_ELEMENT, metrics.getVersion());

        // Enabled
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.ENABLED_ELEMENT,
                metrics.getMetricsLevel() != MetricsLevel.DISABLED ? Constants.TRUE : Constants.FALSE);

        if (metrics.getMetricsLevel() != MetricsLevel.DISABLED) {
            // Include APIs
            Utility.serializeElement(xmlw, Constants.AnalyticsConstants.INCLUDE_APIS_ELEMENT,
                    metrics.getMetricsLevel() == MetricsLevel.SERVICE_AND_API ? Constants.TRUE : Constants.FALSE);
        }

        // Retention Policy
        writeRetentionPolicy(xmlw, metrics.getRetentionIntervalInDays());

        // end Metrics
        xmlw.endTag(Constants.EMPTY_STRING, metricsName);
    }

private
static
void
writeMetricsProperties
(
final
XmlSerializer
xmlw
,
final
MetricsProperties
metrics
,
final
String
metricsName
)
throws
IllegalArgumentException
,
IllegalStateException
,
IOException
{
Utility
.
assertNotNull
(
"metrics.Configuration"
,
metrics
.
getMetricsLevel
(
)
)
;
// Metrics
xmlw
.
startTag
(
Constants
.
EMPTY_STRING
,
metricsName
)
;
// Version
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
VERSION_ELEMENT
,
metrics
.
getVersion
(
)
)
;
// Enabled
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
ENABLED_ELEMENT
,
metrics
.
getMetricsLevel
(
)
!=
MetricsLevel
.
DISABLED
Constants
.
TRUE
:
Constants
.
FALSE
)
;
if
(
metrics
.
getMetricsLevel
(
)
!=
MetricsLevel
.
DISABLED
)
{
// Include APIs
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
INCLUDE_APIS_ELEMENT
,
metrics
.
getMetricsLevel
(
)
==
MetricsLevel
.
SERVICE_AND_API
Constants
.
TRUE
:
Constants
.
FALSE
)
;
}
// Retention Policy
writeRetentionPolicy
(
xmlw
,
metrics
.
getRetentionIntervalInDays
(
)
)
;
// end Metrics
xmlw
.
endTag
(
Constants
.
EMPTY_STRING
,
metricsName
)
;
}

Writes the given metrics properties to the XMLStreamWriter.

@param xmlw
the XMLStreamWriter to write to.
@param metrics
the metrics properties to be written.
@param metricsName
the type of metrics properties to be written (Hour or Minute)
@throws IOException
if there is an error writing the service properties.
@throws IllegalStateException
if there is an error writing the service properties.
@throws IllegalArgumentException
if there is an error writing the service properties.

Writes the given metrics properties to the XMLStreamWriter .


private static void writeLoggingProperties(final XmlSerializer xmlw, final LoggingProperties logging)
            throws IllegalArgumentException, IllegalStateException, IOException {
        Utility.assertNotNull("logging.LogOperationTypes", logging.getLogOperationTypes());

        // Logging
        xmlw.startTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.LOGGING_ELEMENT);

        // Version
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.VERSION_ELEMENT, logging.getVersion());

        // Delete
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.DELETE_ELEMENT, logging.getLogOperationTypes()
                .contains(LoggingOperations.DELETE) ? Constants.TRUE : Constants.FALSE);

        // Read
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.READ_ELEMENT, logging.getLogOperationTypes()
                .contains(LoggingOperations.READ) ? Constants.TRUE : Constants.FALSE);

        // Write
        Utility.serializeElement(xmlw, Constants.AnalyticsConstants.WRITE_ELEMENT, logging.getLogOperationTypes()
                .contains(LoggingOperations.WRITE) ? Constants.TRUE : Constants.FALSE);

        // Retention Policy
        writeRetentionPolicy(xmlw, logging.getRetentionIntervalInDays());

        // end Logging
        xmlw.endTag(Constants.EMPTY_STRING, Constants.AnalyticsConstants.LOGGING_ELEMENT);
    }

private
static
void
writeLoggingProperties
(
final
XmlSerializer
xmlw
,
final
LoggingProperties
logging
)
throws
IllegalArgumentException
,
IllegalStateException
,
IOException
{
Utility
.
assertNotNull
(
"logging.LogOperationTypes"
,
logging
.
getLogOperationTypes
(
)
)
;
// Logging
xmlw
.
startTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
LOGGING_ELEMENT
)
;
// Version
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
VERSION_ELEMENT
,
logging
.
getVersion
(
)
)
;
// Delete
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
DELETE_ELEMENT
,
logging
.
getLogOperationTypes
(
)
.
contains
(
LoggingOperations
.
DELETE
)
Constants
.
TRUE
:
Constants
.
FALSE
)
;
// Read
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
READ_ELEMENT
,
logging
.
getLogOperationTypes
(
)
.
contains
(
LoggingOperations
.
READ
)
Constants
.
TRUE
:
Constants
.
FALSE
)
;
// Write
Utility
.
serializeElement
(
xmlw
,
Constants
.
AnalyticsConstants
.
WRITE_ELEMENT
,
logging
.
getLogOperationTypes
(
)
.
contains
(
LoggingOperations
.
WRITE
)
Constants
.
TRUE
:
Constants
.
FALSE
)
;
// Retention Policy
writeRetentionPolicy
(
xmlw
,
logging
.
getRetentionIntervalInDays
(
)
)
;
// end Logging
xmlw
.
endTag
(
Constants
.
EMPTY_STRING
,
Constants
.
AnalyticsConstants
.
LOGGING_ELEMENT
)
;
}

Writes the given logging properties to the XMLStreamWriter.

@param xmlw
the XMLStreamWriter to write to.
@param cors
the logging properties to be written.
@throws IOException
if there is an error writing the service properties.
@throws IllegalStateException
if there is an error writing the service properties.
@throws IllegalArgumentException
if there is an error writing the service properties.

Writes the given logging properties to the XMLStreamWriter .


public static HttpURLConnection abortCopy(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final String copyId)
            throws StorageException, IOException, URISyntaxException {

        final UriQueryBuilder builder = new UriQueryBuilder();

        builder.add(Constants.QueryConstants.COMPONENT, Constants.QueryConstants.COPY);
        builder.add(Constants.QueryConstants.COPY_ID, copyId);

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setFixedLengthStreamingMode(0);
        request.setDoOutput(true);
        request.setRequestMethod(Constants.HTTP_PUT);

        request.setRequestProperty(Constants.HeaderConstants.COPY_ACTION_HEADER,
                Constants.HeaderConstants.COPY_ACTION_ABORT);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection abortCopy ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final String copyId ) throws StorageException , IOException , URISyntaxException { final UriQueryBuilder builder = new UriQueryBuilder ( ) ; builder . add ( Constants . QueryConstants . COMPONENT , Constants . QueryConstants . COPY ) ; builder . add ( Constants . QueryConstants . COPY_ID , copyId ) ; final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setFixedLengthStreamingMode ( 0 ) ; request . setDoOutput ( true ) ; request . setRequestMethod ( Constants . HTTP_PUT ) ; request . setRequestProperty ( Constants . HeaderConstants . COPY_ACTION_HEADER , Constants . HeaderConstants . COPY_ACTION_ABORT ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } return request ; }

Generates a web request to abort a copy operation.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
The access condition to apply to the request. Only lease conditions are supported for this operation.
@param copyId
A String object that identifying the copy operation.
@return a HttpURLConnection configured for the operation.
@throws StorageException
An exception representing any error which occurred during the operation.
@throws IllegalArgumentException
@throws IOException
@throws URISyntaxException

Generates a web request to abort a copy operation .


public static void addShareSnapshot(final UriQueryBuilder builder, final String snapshotVersion)
            throws StorageException {
        if (snapshotVersion != null) {
            builder.add(Constants.QueryConstants.SHARE_SNAPSHOT, snapshotVersion);
        }
    }

public static void addShareSnapshot ( final UriQueryBuilder builder , final String snapshotVersion ) throws StorageException { if ( snapshotVersion != null ) { builder . add ( Constants . QueryConstants . SHARE_SNAPSHOT , snapshotVersion ) ; } }

Adds the share snapshot if present.
Only for listing files and directories which requires a different query param.

@param builder
a query builder.
@param snapshotVersion
the share snapshot version to the query builder.
@throws StorageException

Adds the share snapshot if present . Only for listing files and directories which requires a different query param .


public static HttpURLConnection copyFrom(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition sourceAccessCondition,
            final AccessCondition destinationAccessCondition, String source)
            throws StorageException, IOException, URISyntaxException {

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, null, opContext);

        request.setFixedLengthStreamingMode(0);
        request.setDoOutput(true);
        request.setRequestMethod(Constants.HTTP_PUT);

        request.setRequestProperty(Constants.HeaderConstants.COPY_SOURCE_HEADER, source);

        if (sourceAccessCondition != null) {
            sourceAccessCondition.applyConditionToRequest(request);
        }

        if (destinationAccessCondition != null) {
            destinationAccessCondition.applyConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection copyFrom ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition sourceAccessCondition , final AccessCondition destinationAccessCondition , String source ) throws StorageException , IOException , URISyntaxException { final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , null , opContext ) ; request . setFixedLengthStreamingMode ( 0 ) ; request . setDoOutput ( true ) ; request . setRequestMethod ( Constants . HTTP_PUT ) ; request . setRequestProperty ( Constants . HeaderConstants . COPY_SOURCE_HEADER , source ) ; if ( sourceAccessCondition != null ) { sourceAccessCondition . applyConditionToRequest ( request ) ; } if ( destinationAccessCondition != null ) { destinationAccessCondition . applyConditionToRequest ( request ) ; } return request ; }

Creates a request to copy a file, Sign with 0 length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param source
The canonical path to the source file,
in the form /<account-name>/<share-name>/<directory-path>/<file-name>.
@param sourceAccessConditionType
A type of condition to check on the source file.
@param sourceAccessConditionValue
The value of the condition to check on the source file
@return a HttpURLConnection configured for the operation.
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException
@throws IOException
@throws URISyntaxException

Creates a request to copy a file Sign with 0 length .


public static HttpURLConnection createShare(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final FileShareProperties properties)
            throws IOException, URISyntaxException, StorageException {
        final UriQueryBuilder shareBuilder = getShareUriQueryBuilder();
        final HttpURLConnection request = BaseRequest.create(uri, fileOptions, shareBuilder, opContext);
        addProperties(request, properties);
        return request;
    }

public static HttpURLConnection createShare ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final FileShareProperties properties ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder shareBuilder = getShareUriQueryBuilder ( ) ; final HttpURLConnection request = BaseRequest . create ( uri , fileOptions , shareBuilder , opContext ) ; addProperties ( request , properties ) ; return request ; }

Constructs a web request to create a new share. Sign with 0 length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param properties
The properties to set for the share.
@return a HttpURLConnection configured for the operation.
@throws StorageException
@throws IllegalArgumentException

Constructs a web request to create a new share . Sign with 0 length .


public static HttpURLConnection deleteShare(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, String snapshotVersion, DeleteShareSnapshotsOption deleteSnapshotsOption)
                    throws IOException, URISyntaxException, StorageException {
        final UriQueryBuilder shareBuilder = getShareUriQueryBuilder();
        FileRequest.addShareSnapshot(shareBuilder, snapshotVersion);
        HttpURLConnection request = BaseRequest.delete(uri, fileOptions, shareBuilder, opContext);
        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        switch (deleteSnapshotsOption) {
        case NONE:
            // nop
            break;
        case INCLUDE_SNAPSHOTS:
            request.setRequestProperty(Constants.HeaderConstants.DELETE_SNAPSHOT_HEADER,
                    Constants.HeaderConstants.INCLUDE_SNAPSHOTS_VALUE);
            break;
        default:
            break;
        }

        return request;
    }

public
static
HttpURLConnection
deleteShare
(
final
URI
uri
,
final
FileRequestOptions
fileOptions
,
final
OperationContext
opContext
,
final
AccessCondition
accessCondition
,
String
snapshotVersion
,
DeleteShareSnapshotsOption
deleteSnapshotsOption
)
throws
IOException
,
URISyntaxException
,
StorageException
{
final
UriQueryBuilder
shareBuilder
=
getShareUriQueryBuilder
(
)
;
FileRequest
.
addShareSnapshot
(
shareBuilder
,
snapshotVersion
)
;
HttpURLConnection
request
=
BaseRequest
.
delete
(
uri
,
fileOptions
,
shareBuilder
,
opContext
)
;
if
(
accessCondition
!=
)
{
accessCondition
.
applyConditionToRequest
(
request
)
;
}
switch
(
deleteSnapshotsOption
)
{
case
:
// nop
break
;
case
INCLUDE_SNAPSHOTS
:
request
.
setRequestProperty
(
Constants
.
HeaderConstants
.
DELETE_SNAPSHOT_HEADER
,
Constants
.
HeaderConstants
.
INCLUDE_SNAPSHOTS_VALUE
)
;
break
;
default
:
break
;
}
return
request
;
}

Constructs a web request to delete the share and all of the directories and files within it. Sign with no length
specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the share.
@return a HttpURLConnection configured for the operation.
@throws StorageException
@throws IllegalArgumentException

Constructs a web request to delete the share and all of the directories and files within it . Sign with no length specified .


public static HttpURLConnection getAcl(final URI uri, final FileRequestOptions fileOptions,
            final AccessCondition accessCondition, final OperationContext opContext) throws IOException,
            URISyntaxException, StorageException {
        final UriQueryBuilder builder = getShareUriQueryBuilder();
        builder.add(Constants.QueryConstants.COMPONENT, Constants.QueryConstants.ACL);

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setRequestMethod(Constants.HTTP_GET);

        if (accessCondition != null && !Utility.isNullOrEmpty(accessCondition.getLeaseID())) {
            accessCondition.applyLeaseConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection getAcl ( final URI uri , final FileRequestOptions fileOptions , final AccessCondition accessCondition , final OperationContext opContext ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder builder = getShareUriQueryBuilder ( ) ; builder . add ( Constants . QueryConstants . COMPONENT , Constants . QueryConstants . ACL ) ; final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setRequestMethod ( Constants . HTTP_GET ) ; if ( accessCondition != null && ! Utility . isNullOrEmpty ( accessCondition . getLeaseID ( ) ) ) { accessCondition . applyLeaseConditionToRequest ( request ) ; } return request ; }

Constructs a web request to return the ACL for this share. Sign with no length specified.

@param uri
The absolute URI to the share.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the share.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@return a HttpURLConnection configured for the operation.
@throws StorageException

Constructs a web request to return the ACL for this share . Sign with no length specified .


public static HttpURLConnection getFile(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final String snapshotVersion, final Long offset,
            final Long count, boolean requestRangeContentMD5) throws IOException, URISyntaxException, StorageException {

        if (offset != null && requestRangeContentMD5) {
            Utility.assertNotNull("count", count);
            Utility.assertInBounds("count", count, 1, Constants.MAX_BLOCK_SIZE);
        }

        final UriQueryBuilder builder = new UriQueryBuilder();
        FileRequest.addShareSnapshot(builder, snapshotVersion);
        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);
        request.setRequestMethod(Constants.HTTP_GET);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        if (offset != null) {
            long rangeStart = offset;
            long rangeEnd;
            if (count != null) {
                rangeEnd = offset + count - 1;
                request.setRequestProperty(Constants.HeaderConstants.STORAGE_RANGE_HEADER, String.format(
                        Utility.LOCALE_US, Constants.HeaderConstants.RANGE_HEADER_FORMAT, rangeStart, rangeEnd));
            }
            else {
                request.setRequestProperty(Constants.HeaderConstants.STORAGE_RANGE_HEADER, String.format(
                        Utility.LOCALE_US, Constants.HeaderConstants.BEGIN_RANGE_HEADER_FORMAT, rangeStart));
            }
        }

        if (offset != null && requestRangeContentMD5) {
            request.setRequestProperty(Constants.HeaderConstants.RANGE_GET_CONTENT_MD5, Constants.TRUE);
        }

        return request;
    }

public static HttpURLConnection getFile ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final String snapshotVersion , final Long offset , final Long count , boolean requestRangeContentMD5 ) throws IOException , URISyntaxException , StorageException { if ( offset != null && requestRangeContentMD5 ) { Utility . assertNotNull ( "count" , count ) ; Utility . assertInBounds ( "count" , count , 1 , Constants . MAX_BLOCK_SIZE ) ; } final UriQueryBuilder builder = new UriQueryBuilder ( ) ; FileRequest . addShareSnapshot ( builder , snapshotVersion ) ; final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setRequestMethod ( Constants . HTTP_GET ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } if ( offset != null ) { long rangeStart = offset ; long rangeEnd ; if ( count != null ) { rangeEnd = offset + count - 1 ; request . setRequestProperty ( Constants . HeaderConstants . STORAGE_RANGE_HEADER , String . format ( Utility . LOCALE_US , Constants . HeaderConstants . RANGE_HEADER_FORMAT , rangeStart , rangeEnd ) ) ; } else { request . setRequestProperty ( Constants . HeaderConstants . STORAGE_RANGE_HEADER , String . format ( Utility . LOCALE_US , Constants . HeaderConstants . BEGIN_RANGE_HEADER_FORMAT , rangeStart ) ) ; } } if ( offset != null && requestRangeContentMD5 ) { request . setRequestProperty ( Constants . HeaderConstants . RANGE_GET_CONTENT_MD5 , Constants . TRUE ) ; } return request ; }

Constructs a HttpURLConnection to download the file, Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@param snapshotVersion
The snapshot version, if the share is a snapshot.
@param offset
The offset at which to begin returning content.
@param count
The number of bytes to return.
@param requestRangeContentMD5
If set to true, request an MD5 header for the specified range.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to download the file Sign with no length specified .


public static HttpURLConnection getFileProperties(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final String snapshotVersion) throws StorageException,
            IOException, URISyntaxException {
        final UriQueryBuilder builder = new UriQueryBuilder();
        return getProperties(uri, fileOptions, opContext, accessCondition, builder, snapshotVersion);
    }

public static HttpURLConnection getFileProperties ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final String snapshotVersion ) throws StorageException , IOException , URISyntaxException { final UriQueryBuilder builder = new UriQueryBuilder ( ) ; return getProperties ( uri , fileOptions , opContext , accessCondition , builder , snapshotVersion ) ; }

Constructs a HttpURLConnection to return the file's system properties, Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@return a HttpURLConnection to use to perform the operation.
@param snapshotVersion
the snapshot version to the query builder.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to return the file s system properties Sign with no length specified .


public static HttpURLConnection getFileRanges(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final String snapshotVersion) throws StorageException,
            IOException, URISyntaxException {

        final UriQueryBuilder builder = new UriQueryBuilder();
        addShareSnapshot(builder, snapshotVersion);
        builder.add(Constants.QueryConstants.COMPONENT, RANGE_LIST_QUERY_ELEMENT_NAME);

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);
        request.setRequestMethod(Constants.HTTP_GET);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection getFileRanges ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final String snapshotVersion ) throws StorageException , IOException , URISyntaxException { final UriQueryBuilder builder = new UriQueryBuilder ( ) ; addShareSnapshot ( builder , snapshotVersion ) ; builder . add ( Constants . QueryConstants . COMPONENT , RANGE_LIST_QUERY_ELEMENT_NAME ) ; final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setRequestMethod ( Constants . HTTP_GET ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } return request ; }

Constructs a HttpURLConnection to return a list of the file's file ranges. Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to return a list of the file s file ranges . Sign with no length specified .


public static HttpURLConnection getShareProperties(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, AccessCondition accessCondition, final String snapshotVersion) throws IOException, URISyntaxException,
            StorageException {
        final UriQueryBuilder shareBuilder = getShareUriQueryBuilder();

        return getProperties(uri, fileOptions, opContext, accessCondition, shareBuilder, snapshotVersion);
    }

public static HttpURLConnection getShareProperties ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , AccessCondition accessCondition , final String snapshotVersion ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder shareBuilder = getShareUriQueryBuilder ( ) ; return getProperties ( uri , fileOptions , opContext , accessCondition , shareBuilder , snapshotVersion ) ; }

Constructs a web request to return the user-defined metadata for this share. Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the share.
@param snapshotVersion
the snapshot version to the query builder.
@return a HttpURLConnection configured for the operation.
@throws StorageException

Constructs a web request to return the user - defined metadata for this share . Sign with no length specified .


public static HttpURLConnection getShareStats(final URI uri, final FileRequestOptions options,
            final OperationContext opContext)
            throws IOException, URISyntaxException, StorageException {
        UriQueryBuilder shareBuilder = getShareUriQueryBuilder();
        shareBuilder.add(Constants.QueryConstants.COMPONENT, Constants.QueryConstants.STATS);

        final HttpURLConnection retConnection = BaseRequest.createURLConnection(uri, options, shareBuilder, opContext);
        retConnection.setRequestMethod(Constants.HTTP_GET);

        return retConnection;
    }

public static HttpURLConnection getShareStats ( final URI uri , final FileRequestOptions options , final OperationContext opContext ) throws IOException , URISyntaxException , StorageException { UriQueryBuilder shareBuilder = getShareUriQueryBuilder ( ) ; shareBuilder . add ( Constants . QueryConstants . COMPONENT , Constants . QueryConstants . STATS ) ; final HttpURLConnection retConnection = BaseRequest . createURLConnection ( uri , options , shareBuilder , opContext ) ; retConnection . setRequestMethod ( Constants . HTTP_GET ) ; return retConnection ; }

Constructs a web request to return the stats, such as usage, for this share. Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param options
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.

@return a HttpURLConnection configured for the operation.
@throws StorageException

Constructs a web request to return the stats such as usage for this share . Sign with no length specified .


private static UriQueryBuilder getShareUriQueryBuilder() throws StorageException {
        final UriQueryBuilder uriBuilder = new UriQueryBuilder();
        try {
            uriBuilder.add(Constants.QueryConstants.RESOURCETYPE, "share");
        }
        catch (final IllegalArgumentException e) {
            throw Utility.generateNewUnexpectedStorageException(e);
        }
        return uriBuilder;
    }

private static UriQueryBuilder getShareUriQueryBuilder ( ) throws StorageException { final UriQueryBuilder uriBuilder = new UriQueryBuilder ( ) ; try { uriBuilder . add ( Constants . QueryConstants . RESOURCETYPE , "share" ) ; } catch ( final IllegalArgumentException e ) { throw Utility . generateNewUnexpectedStorageException ( e ) ; } return uriBuilder ; }

Gets the share Uri query builder.

A UriQueryBuilder for the share.

@throws StorageException


private static HttpURLConnection getProperties(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, AccessCondition accessCondition, final UriQueryBuilder builder,
            String snapshotVersion)
            throws IOException, URISyntaxException, StorageException {
        addShareSnapshot(builder, snapshotVersion);
        HttpURLConnection request = BaseRequest.getProperties(uri, fileOptions, builder, opContext);

        if (accessCondition != null) {
            accessCondition.applyLeaseConditionToRequest(request);
        }

        return request;
    }

private static HttpURLConnection getProperties ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , AccessCondition accessCondition , final UriQueryBuilder builder , String snapshotVersion ) throws IOException , URISyntaxException , StorageException { addShareSnapshot ( builder , snapshotVersion ) ; HttpURLConnection request = BaseRequest . getProperties ( uri , fileOptions , builder , opContext ) ; if ( accessCondition != null ) { accessCondition . applyLeaseConditionToRequest ( request ) ; } return request ; }

Constructs a web request to return the user-defined metadata. Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the share.
@param snapshotVersion
the snapshot version to the query builder.
@return a HttpURLConnection configured for the operation.
@throws StorageException

Constructs a web request to return the user - defined metadata . Sign with no length specified .


public static HttpURLConnection listShares(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final ListingContext listingContext,
            final EnumSet<ShareListingDetails> detailsIncluded) throws URISyntaxException, IOException, StorageException {
        final UriQueryBuilder builder = BaseRequest.getListUriQueryBuilder(listingContext);

        if (detailsIncluded != null && detailsIncluded.size() > 0) {
            final StringBuilder sb = new StringBuilder();
            boolean started = false;

            if (detailsIncluded.contains(ShareListingDetails.SNAPSHOTS)) {
                started = true;
                sb.append(SNAPSHOTS_QUERY_ELEMENT_NAME);
            }

            if (detailsIncluded.contains(ShareListingDetails.METADATA)) {
                if (started)
                {
                    sb.append(",");
                }

                sb.append(Constants.QueryConstants.METADATA);
            }

            builder.add(Constants.QueryConstants.INCLUDE, sb.toString());
        }

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setRequestMethod(Constants.HTTP_GET);

        return request;
    }

public static HttpURLConnection listShares ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final ListingContext listingContext , final EnumSet < ShareListingDetails > detailsIncluded ) throws URISyntaxException , IOException , StorageException { final UriQueryBuilder builder = BaseRequest . getListUriQueryBuilder ( listingContext ) ; if ( detailsIncluded != null && detailsIncluded . size ( ) > 0 ) { final StringBuilder sb = new StringBuilder ( ) ; boolean started = false ; if ( detailsIncluded . contains ( ShareListingDetails . SNAPSHOTS ) ) { started = true ; sb . append ( SNAPSHOTS_QUERY_ELEMENT_NAME ) ; } if ( detailsIncluded . contains ( ShareListingDetails . METADATA ) ) { if ( started ) { sb . append ( "," ) ; } sb . append ( Constants . QueryConstants . METADATA ) ; } builder . add ( Constants . QueryConstants . INCLUDE , sb . toString ( ) ) ; } final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setRequestMethod ( Constants . HTTP_GET ) ; return request ; }

Constructs a request to return a listing of all shares in this storage account. Sign with no length
specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param listingContext
A set of parameters for the listing operation.
@param detailsIncluded
A java.util.EnumSet object that contains {@link ShareListingDetails} values that indicate
whether share snapshots and/or metadata will be returned.
@return a HttpURLConnection configured for the operation.
@throws IOException
@throws URISyntaxException
@throws StorageException
@throws IllegalArgumentException

Constructs a request to return a listing of all shares in this storage account . Sign with no length specified .


public static HttpURLConnection setShareMetadata(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition) throws IOException,
            URISyntaxException, StorageException {
        final UriQueryBuilder shareBuilder = getShareUriQueryBuilder();
        return setMetadata(uri, fileOptions, opContext, accessCondition, shareBuilder);
    }

public static HttpURLConnection setShareMetadata ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder shareBuilder = getShareUriQueryBuilder ( ) ; return setMetadata ( uri , fileOptions , opContext , accessCondition , shareBuilder ) ; }

Constructs a web request to set user-defined metadata for the share, Sign with 0 Length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the share.
@return a HttpURLConnection configured for the operation.
@throws StorageException

Constructs a web request to set user - defined metadata for the share Sign with 0 Length .


public static HttpURLConnection setDirectoryMetadata(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition) throws IOException,
            URISyntaxException, StorageException {
        final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder();
        return setMetadata(uri, fileOptions, opContext, accessCondition, directoryBuilder);
    }

public static HttpURLConnection setDirectoryMetadata ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder ( ) ; return setMetadata ( uri , fileOptions , opContext , accessCondition , directoryBuilder ) ; }

Constructs a web request to set user-defined metadata for the directory, Sign with 0 Length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the directory.
@return a HttpURLConnection configured for the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.

Constructs a web request to set user - defined metadata for the directory Sign with 0 Length .


public static HttpURLConnection createDirectory(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext) throws IOException, URISyntaxException, StorageException {
        final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder();
        return BaseRequest.create(uri, fileOptions, directoryBuilder, opContext);
    }

public static HttpURLConnection createDirectory ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder ( ) ; return BaseRequest . create ( uri , fileOptions , directoryBuilder , opContext ) ; }

Constructs a web request to create a new directory. Sign with 0 length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@return a HttpURLConnection configured for the operation.
@throws StorageException
@throws IllegalArgumentException

Constructs a web request to create a new directory . Sign with 0 length .


public static HttpURLConnection deleteDirectory(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition) throws IOException,
            URISyntaxException, StorageException {
        final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder();
        HttpURLConnection request = BaseRequest.delete(uri, fileOptions, directoryBuilder, opContext);
        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection deleteDirectory ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder ( ) ; HttpURLConnection request = BaseRequest . delete ( uri , fileOptions , directoryBuilder , opContext ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } return request ; }

Constructs a web request to delete the directory and all of the directories and files within it. Sign with no
length
specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the directory.
@return a HttpURLConnection configured for the operation.
@throws StorageException
@throws IllegalArgumentException

Constructs a web request to delete the directory and all of the directories and files within it . Sign with no length specified .


public static HttpURLConnection getDirectoryProperties(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, AccessCondition accessCondition, String snapshotVersion) throws IOException, URISyntaxException,
            StorageException {
        final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder();
        return getProperties(uri, fileOptions, opContext, accessCondition, directoryBuilder, snapshotVersion);
    }

public static HttpURLConnection getDirectoryProperties ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , AccessCondition accessCondition , String snapshotVersion ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder directoryBuilder = getDirectoryUriQueryBuilder ( ) ; return getProperties ( uri , fileOptions , opContext , accessCondition , directoryBuilder , snapshotVersion ) ; }

Constructs a web request to return the properties for this directory. Sign with no length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the directory.
@param snapshotVersion
the snapshot version to the query builder.
@return a HttpURLConnection configured for the operation.
@throws StorageException

Constructs a web request to return the properties for this directory . Sign with no length specified .


public static HttpURLConnection listFilesAndDirectories(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final ListingContext listingContext, String snapshotVersion) throws URISyntaxException,
            IOException, StorageException {

        final UriQueryBuilder builder = getDirectoryUriQueryBuilder();
        addShareSnapshot(builder, snapshotVersion);
        builder.add(Constants.QueryConstants.COMPONENT, Constants.QueryConstants.LIST);

        if (listingContext != null) {
            if (!Utility.isNullOrEmpty(listingContext.getMarker())) {
                builder.add(Constants.QueryConstants.MARKER, listingContext.getMarker());
            }

            if (listingContext.getMaxResults() != null && listingContext.getMaxResults() > 0) {
                builder.add(Constants.QueryConstants.MAX_RESULTS, listingContext.getMaxResults().toString());
            }

            if (!Utility.isNullOrEmpty(listingContext.getPrefix())) {
                builder.add(Constants.QueryConstants.PREFIX, listingContext.getPrefix().toString());
            }
        }

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setRequestMethod(Constants.HTTP_GET);

        return request;
    }

public static HttpURLConnection listFilesAndDirectories ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final ListingContext listingContext , String snapshotVersion ) throws URISyntaxException , IOException , StorageException { final UriQueryBuilder builder = getDirectoryUriQueryBuilder ( ) ; addShareSnapshot ( builder , snapshotVersion ) ; builder . add ( Constants . QueryConstants . COMPONENT , Constants . QueryConstants . LIST ) ; if ( listingContext != null ) { if ( ! Utility . isNullOrEmpty ( listingContext . getMarker ( ) ) ) { builder . add ( Constants . QueryConstants . MARKER , listingContext . getMarker ( ) ) ; } if ( listingContext . getMaxResults ( ) != null && listingContext . getMaxResults ( ) > 0 ) { builder . add ( Constants . QueryConstants . MAX_RESULTS , listingContext . getMaxResults ( ) . toString ( ) ) ; } if ( ! Utility . isNullOrEmpty ( listingContext . getPrefix ( ) ) ) { builder . add ( Constants . QueryConstants . PREFIX , listingContext . getPrefix ( ) . toString ( ) ) ; } } final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setRequestMethod ( Constants . HTTP_GET ) ; return request ; }

Constructs a request to return a listing of all files and directories in this storage account. Sign with no
length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param listingContext
A set of parameters for the listing operation.
@param snapshotVersion
the snapshot version to the query builder.
@return a HttpURLConnection configured for the operation.
@throws IOException
@throws URISyntaxException
@throws StorageException
@throws IllegalArgumentException

Constructs a request to return a listing of all files and directories in this storage account . Sign with no length specified .


public static HttpURLConnection putFile(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final FileProperties properties,
            final long fileSize) throws IOException, URISyntaxException, StorageException {
        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, null, opContext);

        request.setDoOutput(true);

        request.setRequestMethod(Constants.HTTP_PUT);

        addProperties(request, properties);

        request.setFixedLengthStreamingMode(0);
        request.setRequestProperty(Constants.HeaderConstants.CONTENT_LENGTH, "0");

        request.setRequestProperty(FileConstants.FILE_TYPE_HEADER, FileConstants.FILE);
        request.setRequestProperty(FileConstants.CONTENT_LENGTH_HEADER, String.valueOf(fileSize));

        properties.setLength(fileSize);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection putFile ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final FileProperties properties , final long fileSize ) throws IOException , URISyntaxException , StorageException { final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , null , opContext ) ; request . setDoOutput ( true ) ; request . setRequestMethod ( Constants . HTTP_PUT ) ; addProperties ( request , properties ) ; request . setFixedLengthStreamingMode ( 0 ) ; request . setRequestProperty ( Constants . HeaderConstants . CONTENT_LENGTH , "0" ) ; request . setRequestProperty ( FileConstants . FILE_TYPE_HEADER , FileConstants . FILE ) ; request . setRequestProperty ( FileConstants . CONTENT_LENGTH_HEADER , String . valueOf ( fileSize ) ) ; properties . setLength ( fileSize ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } return request ; }

Constructs a HttpURLConnection to upload a file.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@param properties
The properties to set for the file.
@param fileSize
The size of the file.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to upload a file .


public static HttpURLConnection putRange(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final FileRange range,
            FileRangeOperationType operationType) throws IOException, URISyntaxException, StorageException {
        final UriQueryBuilder builder = new UriQueryBuilder();
        builder.add(Constants.QueryConstants.COMPONENT, RANGE_QUERY_ELEMENT_NAME);

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setDoOutput(true);
        request.setRequestMethod(Constants.HTTP_PUT);

        if (operationType == FileRangeOperationType.CLEAR) {
            request.setFixedLengthStreamingMode(0);
        }

        // Range write is either update or clear; required
        request.setRequestProperty(FileConstants.FILE_RANGE_WRITE, operationType.toString());
        request.setRequestProperty(Constants.HeaderConstants.STORAGE_RANGE_HEADER, range.toString());

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

Constructs a HttpURLConnection to upload a file range. Sign with file size for update, or 0 for clear.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@param range
a {link @FileRange} representing the file range
@param operationType
a {link @FileRangeOperationType} enumeration value representing the file range operation type.

@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to upload a file range . Sign with file size for update or 0 for clear .


public static HttpURLConnection resize(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final Long newFileSize)
            throws IOException, URISyntaxException, StorageException {
        final HttpURLConnection request = setFileProperties(uri, fileOptions, opContext, accessCondition, null);

        if (newFileSize != null) {
            request.setRequestProperty(FileConstants.CONTENT_LENGTH_HEADER, newFileSize.toString());
        }

        return request;
    }

public static HttpURLConnection resize ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final Long newFileSize ) throws IOException , URISyntaxException , StorageException { final HttpURLConnection request = setFileProperties ( uri , fileOptions , opContext , accessCondition , null ) ; if ( newFileSize != null ) { request . setRequestProperty ( FileConstants . CONTENT_LENGTH_HEADER , newFileSize . toString ( ) ) ; } return request ; }

Constructs a HttpURLConnection to set the file's size, Sign with zero length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@param newFileSize
The new file size. Set this parameter to null to keep the existing file size.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to set the file s size Sign with zero length specified .


private static HttpURLConnection setMetadata(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final UriQueryBuilder builder)
            throws IOException, URISyntaxException, StorageException {
        final HttpURLConnection request = BaseRequest.setMetadata(uri, fileOptions, builder, opContext);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

private static HttpURLConnection setMetadata ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final UriQueryBuilder builder ) throws IOException , URISyntaxException , StorageException { final HttpURLConnection request = BaseRequest . setMetadata ( uri , fileOptions , builder , opContext ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } return request ; }

Constructs a HttpURLConnection to set metadata, Sign with 0 length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to set metadata Sign with 0 length .


public static HttpURLConnection setFileMetadata(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition) throws IOException,
            URISyntaxException, StorageException {
        return setMetadata(uri, fileOptions, opContext, accessCondition, null);
    }

public static HttpURLConnection setFileMetadata ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition ) throws IOException , URISyntaxException , StorageException { return setMetadata ( uri , fileOptions , opContext , accessCondition , null ) ; }

Constructs a HttpURLConnection to set the file's metadata, Sign with 0 length.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to set the file s metadata Sign with 0 length .


public static HttpURLConnection snapshotShare(final URI uri, final FileRequestOptions fileOptions,
                                                  final OperationContext opContext, final AccessCondition accessCondition) throws IOException,
            URISyntaxException, StorageException {
        final UriQueryBuilder builder = new UriQueryBuilder();
        builder.add(Constants.QueryConstants.RESOURCETYPE, "share");
        builder.add(Constants.QueryConstants.COMPONENT, Constants.QueryConstants.SNAPSHOT);
        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setFixedLengthStreamingMode(0);
        request.setDoOutput(true);
        request.setRequestMethod(Constants.HTTP_PUT);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        return request;
    }

public static HttpURLConnection snapshotShare ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder builder = new UriQueryBuilder ( ) ; builder . add ( Constants . QueryConstants . RESOURCETYPE , "share" ) ; builder . add ( Constants . QueryConstants . COMPONENT , Constants . QueryConstants . SNAPSHOT ) ; final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setFixedLengthStreamingMode ( 0 ) ; request . setDoOutput ( true ) ; request . setRequestMethod ( Constants . HTTP_PUT ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } return request ; }

Constructs a HttpURLConnection to create a snapshot of the share.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the share.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to create a snapshot of the share .


public static HttpURLConnection setFileProperties(final URI uri, final FileRequestOptions fileOptions,
            final OperationContext opContext, final AccessCondition accessCondition, final FileProperties properties)
            throws IOException, URISyntaxException, StorageException {
        final UriQueryBuilder builder = new UriQueryBuilder();
        builder.add(Constants.QueryConstants.COMPONENT, Constants.QueryConstants.PROPERTIES);

        final HttpURLConnection request = BaseRequest.createURLConnection(uri, fileOptions, builder, opContext);

        request.setFixedLengthStreamingMode(0);
        request.setDoOutput(true);
        request.setRequestMethod(Constants.HTTP_PUT);

        if (accessCondition != null) {
            accessCondition.applyConditionToRequest(request);
        }

        if (properties != null) {
            addProperties(request, properties);
        }

        return request;
    }

public static HttpURLConnection setFileProperties ( final URI uri , final FileRequestOptions fileOptions , final OperationContext opContext , final AccessCondition accessCondition , final FileProperties properties ) throws IOException , URISyntaxException , StorageException { final UriQueryBuilder builder = new UriQueryBuilder ( ) ; builder . add ( Constants . QueryConstants . COMPONENT , Constants . QueryConstants . PROPERTIES ) ; final HttpURLConnection request = BaseRequest . createURLConnection ( uri , fileOptions , builder , opContext ) ; request . setFixedLengthStreamingMode ( 0 ) ; request . setDoOutput ( true ) ; request . setRequestMethod ( Constants . HTTP_PUT ) ; if ( accessCondition != null ) { accessCondition . applyConditionToRequest ( request ) ; } if ( properties != null ) { addProperties ( request , properties ) ; } return request ; }

Constructs a HttpURLConnection to set the file's properties, Sign with zero length specified.

@param uri
A java.net.URI object that specifies the absolute URI.
@param fileOptions
A {@link FileRequestOptions} object that specifies execution options such as retry policy and timeout
settings for the operation. Specify null to use the request options specified on the
{@link CloudFileClient}.
@param opContext
An {@link OperationContext} object that represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.
@param accessCondition
An {@link AccessCondition} object that represents the access conditions for the file.
@param properties
The properties to upload.
@return a HttpURLConnection to use to perform the operation.
@throws IOException
if there is an error opening the connection
@throws URISyntaxException
if the resource URI is invalid
@throws StorageException
an exception representing any error which occurred during the operation.
@throws IllegalArgumentException

Constructs a HttpURLConnection to set the file s properties Sign with zero length specified .


@Override
    public synchronized void close() throws IOException {
        this.currentBuffer = null;
        this.streamFaulted = true;
        this.lastError = new IOException(SR.STREAM_CLOSED);
    }

@ Override public synchronized void close ( ) throws IOException { this . currentBuffer = null ; this . streamFaulted = true ; this . lastError = new IOException ( SR . STREAM_CLOSED ) ; }

Closes this input stream and releases any system resources associated with the stream.

@throws IOException
If an I/O error occurs.

Closes this input stream and releases any system resources associated with the stream .


@DoesServiceRequest
    private synchronized void dispatchRead(final int readLength) throws IOException {
        try {
            final byte[] byteBuffer = new byte[readLength];

            this.parentFileRef.downloadRangeInternal(this.currentAbsoluteReadPosition, (long) readLength, byteBuffer,
                    0, null /* this.accessCondition */, this.options, this.opContext);

            // Check Etag manually for now -- use access condition once conditional headers supported.
            if (this.accessCondition != null) {
                if (!this.accessCondition.getIfMatch().equals(this.parentFileRef.getProperties().getEtag())) {
                    throw new StorageException(StorageErrorCode.CONDITION_FAILED.toString(),
                            SR.INVALID_CONDITIONAL_HEADERS, HttpURLConnection.HTTP_PRECON_FAILED, null, null);
                }
            }

            this.currentBuffer = new ByteArrayInputStream(byteBuffer);
            this.bufferSize = readLength;
            this.bufferStartOffset = this.currentAbsoluteReadPosition;
        }
        catch (final StorageException e) {
            this.streamFaulted = true;
            this.lastError = Utility.initIOException(e);
            throw this.lastError;
        }
    }

Dispatches a read operation of N bytes.

@param readLength
An int which represents the number of bytes to read.

@throws IOException
If an I/O error occurs.

Dispatches a read operation of N bytes .


@Override
    @DoesServiceRequest
    public int read() throws IOException {
        final byte[] tBuff = new byte[1];
        final int numberOfBytesRead = this.read(tBuff, 0, 1);

        if (numberOfBytesRead > 0) {
            return tBuff[0] & 0xFF;
        }
        else if (numberOfBytesRead == 0) {
            throw new IOException(SR.UNEXPECTED_STREAM_READ_ERROR);
        }
        else {
            return -1;
        }
    }

@ Override @ DoesServiceRequest public int read ( ) throws IOException { final byte [ ] tBuff = new byte [ 1 ] ; final int numberOfBytesRead = this . read ( tBuff , 0 , 1 ) ; if ( numberOfBytesRead > 0 ) { return tBuff [ 0 ] & 0xFF ; } else if ( numberOfBytesRead == 0 ) { throw new IOException ( SR . UNEXPECTED_STREAM_READ_ERROR ) ; } else { return - 1 ; } }

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If
no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks
until input data is available, the end of the stream is detected, or an exception is thrown.

@return An int which represents the total number of bytes read into the buffer, or -1 if
there is no more data because the end of the stream has been reached.

@throws IOException
If an I/O error occurs.

Reads the next byte of data from the input stream . The value byte is returned as an int in the range 0 to 255 . If no byte is available because the end of the stream has been reached the value - 1 is returned . This method blocks until input data is available the end of the stream is detected or an exception is thrown .


@DoesServiceRequest
    private synchronized int readInternal(final byte[] b, final int off, int len) throws IOException {
        this.checkStreamState();

        // if buffer is empty do next get operation
        if ((this.currentBuffer == null || this.currentBuffer.available() == 0)
                && this.currentAbsoluteReadPosition < this.streamLength) {
            this.dispatchRead((int) Math.min(this.readSize, this.streamLength - this.currentAbsoluteReadPosition));
        }

        len = Math.min(len, this.readSize);

        // do read from buffer
        final int numberOfBytesRead = this.currentBuffer.read(b, off, len);

        if (numberOfBytesRead > 0) {
            this.currentAbsoluteReadPosition += numberOfBytesRead;

            if (this.validateFileMd5) {
                this.md5Digest.update(b, off, numberOfBytesRead);

                if (this.currentAbsoluteReadPosition == this.streamLength) {
                    // Reached end of stream, validate md5.
                    final String calculatedMd5 = Base64.encode(this.md5Digest.digest());
                    if (!calculatedMd5.equals(this.retrievedContentMD5Value)) {
                        this.lastError = Utility
                                .initIOException(new StorageException(
                                        StorageErrorCodeStrings.INVALID_MD5,
                                        String.format(
                                                "File data corrupted (integrity check failed), Expected value is %s, retrieved %s",
                                                this.retrievedContentMD5Value, calculatedMd5),
                                        Constants.HeaderConstants.HTTP_UNUSED_306, null, null));
                        this.streamFaulted = true;
                        throw this.lastError;
                    }
                }
            }
        }

        // update markers
        if (this.markExpiry > 0 && this.markedPosition + this.markExpiry < this.currentAbsoluteReadPosition) {
            this.markedPosition = 0;
            this.markExpiry = 0;
        }

        return numberOfBytesRead;
    }

Performs internal read to the given byte buffer.

@param b
A byte array which represents the buffer into which the data is read.
@param off
An int which represents the start offset in the byte array b at
which the data is written.
@param len
An int which represents the maximum number of bytes to read.

@return An int which represents the total number of bytes read into the buffer, or -1 if
there is no more data because the end of the stream has been reached.

@throws IOException
If the first byte cannot be read for any reason other than end of file, or if the input stream has
been closed, or if some other I/O error occurs.

Performs internal read to the given byte buffer .


@Override
    public synchronized void reset() throws IOException {
        if (this.markedPosition + this.markExpiry < this.currentAbsoluteReadPosition) {
            throw new IOException(SR.MARK_EXPIRED);
        }

        this.validateFileMd5 = false;
        this.md5Digest = null;
        this.reposition(this.markedPosition);
    }

@ Override public synchronized void reset ( ) throws IOException { if ( this . markedPosition + this . markExpiry < this . currentAbsoluteReadPosition ) { throw new IOException ( SR . MARK_EXPIRED ) ; } this . validateFileMd5 = false ; this . md5Digest = null ; this . reposition ( this . markedPosition ) ; }

Repositions this stream to the position at the time the mark method was last called on this input stream. Note
repositioning the file read stream will disable file MD5 checking.

@throws IOException
If this stream has not been marked or if the mark has been invalidated.

Repositions this stream to the position at the time the mark method was last called on this input stream . Note repositioning the file read stream will disable file MD5 checking .


@Override
    public synchronized long skip(final long n) throws IOException {
        if (n == 0) {
            return 0;
        }

        if (n < 0 || this.currentAbsoluteReadPosition + n > this.streamLength) {
            throw new IndexOutOfBoundsException();
        }

        this.validateFileMd5 = false;
        this.md5Digest = null;
        this.reposition(this.currentAbsoluteReadPosition + n);
        return n;
    }

@ Override public synchronized long skip ( final long n ) throws IOException { if ( n == 0 ) { return 0 ; } if ( n < 0 || this . currentAbsoluteReadPosition + n > this . streamLength ) { throw new IndexOutOfBoundsException ( ) ; } this . validateFileMd5 = false ; this . md5Digest = null ; this . reposition ( this . currentAbsoluteReadPosition + n ) ; return n ; }

Skips over and discards n bytes of data from this input stream. The skip method may, for a variety of reasons,
end up skipping over some smaller number of bytes, possibly 0. This may result from any of a number of
conditions; reaching end of file before n bytes have been skipped is only one possibility. The actual number of
bytes skipped is returned. If n is negative, no bytes are skipped.

Note repositioning the file read stream will disable file MD5 checking.

@param n
A long which represents the number of bytes to skip.

Skips over and discards n bytes of data from this input stream . The skip method may for a variety of reasons end up skipping over some smaller number of bytes possibly 0 . This may result from any of a number of conditions ; reaching end of file before n bytes have been skipped is only one possibility . The actual number of bytes skipped is returned . If n is negative no bytes are skipped .


public void runBlobGettingStartedSample(View view) {
        new BlobGettingStartedTask(this, (TextView) findViewById(R.id.textView))
                .execute();
    }

public void runBlobGettingStartedSample ( View view ) { new BlobGettingStartedTask ( this , ( TextView ) findViewById ( R . id . textView ) ) . execute ( ) ; }


public void runQueueGettingStartedSample(View view) {
        new QueueGettingStartedTask(this,
                (TextView) findViewById(R.id.textView)).execute();
    }

public void runQueueGettingStartedSample ( View view ) { new QueueGettingStartedTask ( this , ( TextView ) findViewById ( R . id . textView ) ) . execute ( ) ; }


public void runTableGettingStartedSample(View view) {
        new TableGettingStartedTask(this,
                (TextView) findViewById(R.id.textView)).execute();
    }

public void runTableGettingStartedSample ( View view ) { new TableGettingStartedTask ( this , ( TextView ) findViewById ( R . id . textView ) ) . execute ( ) ; }


public void runTablePayloadFormatSample(View view) {
        new TablePayloadFormatTask(this, (TextView) findViewById(R.id.textView))
                .execute();
    }

public void runTablePayloadFormatSample ( View view ) { new TablePayloadFormatTask ( this , ( TextView ) findViewById ( R . id . textView ) ) . execute ( ) ; }


public void outputText(final TextView view, final String value) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                view.append(value + "\n");
                System.out.println(view);
            }
        });
    }

public void outputText ( final TextView view , final String value ) { runOnUiThread ( new Runnable ( ) { @ Override public void run ( ) { view . append ( value + "\n" ) ; System . out . println ( view ) ; } } ) ; }

Prints the specified text value to the view and to LogCat.

@param view
The view to print to.
@param value
The value to print.

Prints the specified text value to the view and to LogCat .


public void printException(Throwable t) {
        StringWriter stringWriter = new StringWriter();
        PrintWriter printWriter = new PrintWriter(stringWriter);
        t.printStackTrace(printWriter);
        outputText(
                (TextView) findViewById(R.id.textView),
                String.format(
                        "Got an exception from running samples. Exception details:\n%s\n",
                        stringWriter.toString()));
    }


public void printSampleStartInfo(String sampleName) {
        TextView view = (TextView) findViewById(R.id.textView);
        clearText(view);
        outputText(view, String.format(
                "The Azure storage client library sample %s is starting...",
                sampleName));
    }

Prints out the sample start information .


public void printSampleCompleteInfo(String sampleName) {
        outputText((TextView) findViewById(R.id.textView), String.format(
                "The Azure storage client library sample %s completed.\n",
                sampleName));
    }

Prints out the sample complete information .


@Override
    protected String canonicalize(final HttpURLConnection conn, final String accountName, final Long contentLength)
            throws StorageException {

        if (contentLength < -1) {
            throw new InvalidParameterException(SR.INVALID_CONTENT_LENGTH);
        }

        return canonicalizeTableHttpRequest(conn.getURL(), accountName, conn.getRequestMethod(),
                Utility.getStandardHeaderValue(conn, Constants.HeaderConstants.CONTENT_TYPE), contentLength, null,
                conn);
    }

@ Override protected String canonicalize ( final HttpURLConnection conn , final String accountName , final Long contentLength ) throws StorageException { if ( contentLength < - 1 ) { throw new InvalidParameterException ( SR . INVALID_CONTENT_LENGTH ) ; } return canonicalizeTableHttpRequest ( conn . getURL ( ) , accountName , conn . getRequestMethod ( ) , Utility . getStandardHeaderValue ( conn , Constants . HeaderConstants . CONTENT_TYPE ) , contentLength , null , conn ) ; }

Constructs a canonicalized string for signing a request.

@param conn
the HttpURLConnection to canonicalize
@param accountName
the account name associated with the request
@param contentLength
the length of the content written to the outputstream in bytes, -1 if unknown
@return a canonicalized string.
@throws StorageException

Constructs a canonicalized string for signing a request .


public synchronized RequestResult getLastResult() {
        if (this.requestResults == null || this.requestResults.size() == 0) {
            return null;
        }
        else {
            return this.requestResults.get(this.requestResults.size() - 1);
        }
    }

public synchronized RequestResult getLastResult ( ) { if ( this . requestResults == null || this . requestResults . size ( ) == 0 ) { return null ; } else { return this . requestResults . get ( this . requestResults . size ( ) - 1 ) ; } }

Gets the last request result encountered for the operation.

@return A {@link RequestResult} object which represents the last request result.

Gets the last request result encountered for the operation .