mirror of https://github.com/apache/jclouds.git
allow cdn lookup to fail while in beta
This commit is contained in:
parent
8d517f9f51
commit
075c0c8e5e
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue