Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.jclouds.openstack.swift.v1.blobstore;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Iterables.tryFind;
 import static com.google.common.collect.Lists.transform;
 import static org.jclouds.blobstore.options.ListContainerOptions.Builder.recursive;
 import static org.jclouds.location.predicates.LocationPredicates.idEquals;
 import static org.jclouds.openstack.swift.v1.options.PutOptions.Builder.metadata;
 
 import java.util.List;
 import java.util.Set;
 
 
 
 
 public class RegionScopedSwiftBlobStore implements BlobStore {
 
    @Inject
    protected RegionScopedSwiftBlobStore(Injector baseGraphBlobStoreContext contextSwiftApi api,
          @Memoized Supplier<Set<? extends Location>> locations, @Assisted String regionId) {
       checkNotNull(regionId"regionId");
       Optional<? extends Locationfound = tryFind(locations.get(), idEquals(regionId));
       checkArgument(found.isPresent(), "region %s not in %s"regionIdlocations.get());
       this. = found.get();
       this. = regionId;
       this. = new ToResourceMetadata(found.get());
       this. = context;
       this. = api;
       // until we parameterize ClearListStrategy with a factory
       this. = baseGraph.createChildInjector(new AbstractModule() {
          @Override
          protected void configure() {
             bind(BlobStore.class).toInstance(RegionScopedSwiftBlobStore.this);
          }
       }).getInstance(ClearListStrategy.class);
    }
 
    private final BlobStoreContext context;
   private final ClearListStrategy clearList;
   private final SwiftApi api;
   private final Location region;
   private final String regionId;
   private final BlobToHttpGetOptions toGetOptions = new BlobToHttpGetOptions();
   public Set<? extends LocationlistAssignableLocations() {
      return ImmutableSet.of();
   }
   public PageSet<? extends StorageMetadatalist() {
      // TODO: there may eventually be >10k containers..
            .transform();
      return new PageSetImpl<StorageMetadata>(containersnull);
   }
   public boolean containerExists(String container) {
      Container val = .getContainerApiForRegion().get(container);
      .put(container, Optional.fromNullable(val));
      return val != null;
   }
   public boolean createContainerInLocation(Location locationString container) {
      return createContainerInLocation(locationcontainer.);
   }
   public boolean createContainerInLocation(Location locationString containerCreateContainerOptions options) {
      checkArgument(location == null || location.equals(), "location must be null or %s");
      if (options.isPublicRead()) {
         return .getContainerApiForRegion().create(container);
      }
   }
         .anybodyRead();
   public PageSet<? extends StorageMetadatalist(String container) {
      return list(container.);
   }
   public PageSet<? extends StorageMetadatalist(final String containerListContainerOptions options) {
      ObjectApi objectApi = .getObjectApiForRegionAndContainer(container);
      ObjectList objects = objectApi.list(.apply(options));
      if (objects == null) {
         .put(container, Optional.<Containerabsent());
         return new PageSetImpl<StorageMetadata>(ImmutableList.<StorageMetadataof(), null);
      } else {
         .put(container, Optional.of(objects.getContainer()));
         List<? extends StorageMetadatalist = transform(objectstoBlobMetadata(container));
         int limit = Optional.fromNullable(options.getMaxResults()).or(10000);
         String marker = list.size() == limit ? list.get(limit - 1).getName() : null;
         // TODO: we should probably deprecate this option
         if (options.isDetailed()) {
            list = transform(listnew Function<StorageMetadataStorageMetadata>() {
               @Override
               public StorageMetadata apply(StorageMetadata input) {
                  if (input.getType() != .) {
                     return input;
                  }
                  return blobMetadata(containerinput.getName());
               }
            });
         }
         return new PageSetImpl<StorageMetadata>(listmarker);
      }
   }
   public boolean blobExists(String containerString name) {
      return blobMetadata(containername) != null;
   }
   public String putBlob(String containerBlob blob) {
      return putBlob(containerblob.);
   }
   public String putBlob(String containerBlob blobPutOptions options) {
      if (options.isMultipart()) {
         throw new UnsupportedOperationException();
      }
      ObjectApi objectApi = .getObjectApiForRegionAndContainer(container);
      return objectApi.put(blob.getMetadata().getName(), blob.getPayload(), metadata(blob.getMetadata().getUserMetadata()));
   }
   public BlobMetadata blobMetadata(String containerString name) {
      SwiftObject object = .getObjectApiForRegionAndContainer(container).get(name);
      if (object == null) {
         return null;
      }
      return toBlobMetadata(container).apply(object);
   }
   public Blob getBlob(String containerString key) {
      return getBlob(containerkey.);
   }
   public Blob getBlob(String containerString nameGetOptions options) {
      ObjectApi objectApi = .getObjectApiForRegionAndContainer(container);
      SwiftObject object = objectApi.get(name.apply(options));
      if (object == null) {
         return null;
      }
      Blob blob = new BlobImpl(toBlobMetadata(container).apply(object));
      blob.setPayload(object.getPayload());
      blob.setAllHeaders(object.getHeaders());
      return blob;
   }
   public void removeBlob(String containerString name) {
   }
   public BlobStoreContext getContext() {
      return ;
   }
   public BlobBuilder blobBuilder(String name) {
      return new BlobBuilderImpl().name(name);
   }
   public boolean directoryExists(String containerNameString directory) {
      return .getObjectApiForRegionAndContainer(containerName)
            .get(directory) != null;
   }
   public void createDirectory(String containerNameString directory) {
            .put(directory);
   }
   private final Payload directoryPayload = new ByteSourcePayload(ByteSource.wrap(new byte[] {})) {
      {
         getContentMetadata().setContentType("application/directory");
      }
   };
   public void deleteDirectory(String containerNameString directory) {
      .getObjectApiForRegionAndContainer(containerName).delete(directory);
   }
   public long countBlobs(String containerName) {
      Container container = .getContainerApiForRegion().get(containerName);
      // undefined if container doesn't exist, so default to zero
      return container != null ? container.getObjectCount() : 0;
   }
   public void clearContainer(String containerName) {
      clearContainer(containerNamerecursive());
   }
   public void clearContainer(String containerNameListContainerOptions options) {
      // this could be implemented to use bulk delete
      .execute(containerNameoptions);
   }
   public void deleteContainer(String container) {
      clearContainer(containerrecursive());
      .invalidate(container);
   }
   public boolean deleteContainerIfEmpty(String container) {
      boolean deleted = .getContainerApiForRegion().deleteIfEmpty(container);
      if (deleted) {
         .invalidate(container);
      }
      return deleted;
   }
   protected final LoadingCache<StringOptional<Container>> containerCache = CacheBuilder.newBuilder().build(
         new CacheLoader<StringOptional<Container>>() {
            public Optional<Containerload(String container) {
               return Optional.fromNullable(.getContainerApiForRegion().get(container));
            }
         });
      return new ToBlobMetadata(.getUnchecked(container).get());
   }
   public long countBlobs(String containerNameListContainerOptions options) {
      throw new UnsupportedOperationException();
   }
New to GrepCode? Check out our FAQ X