allow cdn lookup to fail while in beta

This commit is contained in:
Adrian Cole 2011-12-19 17:49:28 -08:00
parent 8d517f9f51
commit 075c0c8e5e
2 changed files with 36 additions and 10 deletions

View File

@ -36,6 +36,7 @@ import com.google.common.cache.LoadingCache;
*/
@Singleton
public class PublicUriForObjectInfo implements Function<ObjectInfo, URI> {
private final LoadingCache<String, URI> cdnContainer;
private final Provider<UriBuilder> uriBuilders;

View File

@ -21,6 +21,8 @@ package org.jclouds.hpcloud.object.storage.blobstore.config;
import java.net.URI;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.hpcloud.object.storage.HPCloudObjectStorageClient;
@ -28,11 +30,14 @@ import org.jclouds.hpcloud.object.storage.blobstore.HPCloudObjectStorageAsyncBlo
import org.jclouds.hpcloud.object.storage.blobstore.HPCloudObjectStorageBlobStore;
import org.jclouds.hpcloud.object.storage.blobstore.functions.HPCloudObjectStorageObjectToBlobMetadata;
import org.jclouds.hpcloud.object.storage.domain.ContainerCDNMetadata;
import org.jclouds.http.HttpResponseException;
import org.jclouds.logging.Logger;
import org.jclouds.openstack.swift.blobstore.SwiftAsyncBlobStore;
import org.jclouds.openstack.swift.blobstore.SwiftBlobStore;
import org.jclouds.openstack.swift.blobstore.config.SwiftBlobStoreContextModule;
import org.jclouds.openstack.swift.blobstore.functions.ObjectToBlobMetadata;
import com.google.common.annotations.Beta;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@ -44,21 +49,41 @@ import com.google.inject.Provides;
*/
public class HPCloudObjectStorageBlobStoreContextModule extends SwiftBlobStoreContextModule {
@Provides
@Beta
@Singleton
protected LoadingCache<String, URI> cdnContainer(final HPCloudObjectStorageClient client) {
return CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).build(new CacheLoader<String, URI>() {
public static final class GetCDNMetadata extends CacheLoader<String, URI> {
@Resource
protected Logger logger = Logger.NULL;
private final HPCloudObjectStorageClient client;
@Inject
public GetCDNMetadata(HPCloudObjectStorageClient client) {
this.client = client;
}
@Override
public URI load(String container) {
try {
ContainerCDNMetadata md = client.getCDNMetadata(container);
return md != null ? md.getCDNUri() : null;
} catch (HttpResponseException e) {
// TODO: this is due to beta status
logger.trace("couldn't get cdn metadata for %s: %s", container, e.getMessage());
return null;
}
}
@Override
public String toString() {
return "getCDNMetadata()";
}
});
}
@Provides
@Singleton
protected LoadingCache<String, URI> cdnContainer(GetCDNMetadata loader) {
return CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).build(loader);
}
@Override