1 /** 2 * 3 * Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com> 4 * 5 * ==================================================================== 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * ==================================================================== 18 */ 19 package org.jclouds.blobstore.domain; 20 21 import java.net.URI; 22 import java.util.Date; 23 import java.util.Map; 24 25 import org.jclouds.blobstore.domain.internal.StorageMetadataImpl; 26 import org.jclouds.domain.ResourceMetadata; 27 28 import com.google.inject.ImplementedBy; 29 30 /** 31 * Identifies containers, files, etc. 32 * 33 * @author Adrian Cole 34 */ 35 @ImplementedBy(StorageMetadataImpl.class) 36 public interface StorageMetadata extends ResourceMetadata<StorageType> { 37 38 /** 39 * Whether this resource is a container, file, etc. 40 */ 41 @Override 42 StorageType getType(); 43 44 /** 45 * Unique identifier of this resource within its enclosing namespace. In some scenarios, this id 46 * is not user assignable. For files, this may be an system generated key, or the full path to 47 * the resource. ex. /path/to/file.txt 48 * 49 * @see org.jclouds.blobstore.attr.ContainerCapability#CONTAINER_METADATA 50 */ 51 @Override 52 String getProviderId(); 53 54 /** 55 * Name of this resource. Names are dictated by the user. For files, this may be the filename, 56 * ex. file.txt 57 * 58 */ 59 @Override 60 String getName(); 61 62 /** 63 * URI used to access this resource 64 */ 65 @Override 66 URI getUri(); 67 68 /** 69 * Any key-value pairs associated with the resource. 70 * 71 * @see org.jclouds.blobstore.attr.ContainerCapability#CONTAINER_METADATA 72 * @see org.jclouds.blobstore.attr.ContainerCapability#BLOB_METADATA 73 */ 74 @Override 75 Map<String, String> getUserMetadata(); 76 77 /** 78 * The eTag value stored in the Etag header returned by HTTP. 79 * 80 * @see org.jclouds.blobstore.attr.ContainerCapability#CONTAINER_ETAG 81 * @see org.jclouds.blobstore.attr.ContainerCapability#BLOB_ETAG 82 */ 83 String getETag(); 84 85 /** 86 * Last modification time of the resource 87 * 88 * @see org.jclouds.blobstore.attr.ContainerCapability#CONTAINER_LAST_MODIFIED 89 * @see org.jclouds.blobstore.attr.ContainerCapability#BLOB_LAST_MODIFIED 90 * @see org.jclouds.blobstore.attr.ContainerCapability#MILLISECOND_PRECISION 91 */ 92 Date getLastModified(); 93 94 }