removed AuthorizationException catch, as error handler already coerces auth exception to ResourceNotFound

This commit is contained in:
Adrian Cole 2012-12-31 16:07:35 -08:00
parent 461fa51ce3
commit 2a3280fba5
2 changed files with 10 additions and 52 deletions

View File

@ -19,6 +19,7 @@
package org.jclouds.vcloud.functions; package org.jclouds.vcloud.functions;
import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.filter;
import static org.jclouds.Constants.PROPERTY_USER_THREADS;
import static org.jclouds.concurrent.FutureIterables.transformParallel; import static org.jclouds.concurrent.FutureIterables.transformParallel;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@ -29,13 +30,8 @@ import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.inject.Singleton; import javax.inject.Singleton;
import org.jclouds.Constants;
import org.jclouds.compute.reference.ComputeServiceConstants; import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.concurrent.ExceptionParsingListenableFuture;
import org.jclouds.concurrent.Futures;
import org.jclouds.logging.Logger; import org.jclouds.logging.Logger;
import org.jclouds.rest.AuthorizationException;
import org.jclouds.util.Iterables2;
import org.jclouds.vcloud.VCloudAsyncClient; import org.jclouds.vcloud.VCloudAsyncClient;
import org.jclouds.vcloud.VCloudMediaType; import org.jclouds.vcloud.VCloudMediaType;
import org.jclouds.vcloud.domain.CatalogItem; import org.jclouds.vcloud.domain.CatalogItem;
@ -44,7 +40,6 @@ import org.jclouds.vcloud.domain.VAppTemplate;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.base.Throwables;
/** /**
* @author Adrian Cole * @author Adrian Cole
@ -53,34 +48,20 @@ import com.google.common.base.Throwables;
public class VAppTemplatesForCatalogItems implements Function<Iterable<CatalogItem>, Iterable<VAppTemplate>> { public class VAppTemplatesForCatalogItems implements Function<Iterable<CatalogItem>, Iterable<VAppTemplate>> {
@Resource @Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER) @Named(ComputeServiceConstants.COMPUTE_LOGGER)
public Logger logger = Logger.NULL; private Logger logger = Logger.NULL;
private final VCloudAsyncClient aclient; private final VCloudAsyncClient aclient;
private final ExecutorService executor; private final ExecutorService executor;
private final NullOnAuthorizationException NullOnAuthorizationException;
@Singleton
static class NullOnAuthorizationException implements Function<Exception, VAppTemplate> {
public VAppTemplate apply(Exception from) {
if (from instanceof AuthorizationException) {
return null;
}
throw Throwables.propagate(from);
}
}
@Inject @Inject
VAppTemplatesForCatalogItems(VCloudAsyncClient aclient, VAppTemplatesForCatalogItems(VCloudAsyncClient aclient, @Named(PROPERTY_USER_THREADS) ExecutorService executor) {
@Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor,
NullOnAuthorizationException NullOnAuthorizationException) {
this.aclient = aclient; this.aclient = aclient;
this.executor = executor; this.executor = executor;
this.NullOnAuthorizationException = NullOnAuthorizationException;
} }
@Override @Override
public Iterable<VAppTemplate> apply(Iterable<CatalogItem> from) { public Iterable<VAppTemplate> apply(Iterable<CatalogItem> from) {
return Iterables2.concreteCopy(filter(transformParallel(filter(from, new Predicate<CatalogItem>() { return filter(transformParallel(filter(from, new Predicate<CatalogItem>() {
@Override @Override
public boolean apply(CatalogItem input) { public boolean apply(CatalogItem input) {
@ -91,12 +72,10 @@ public class VAppTemplatesForCatalogItems implements Function<Iterable<CatalogIt
@Override @Override
public Future<VAppTemplate> apply(CatalogItem from) { public Future<VAppTemplate> apply(CatalogItem from) {
return new ExceptionParsingListenableFuture<VAppTemplate>(Futures.makeListenable(VCloudAsyncClient.class return aclient.getVAppTemplateClient().getVAppTemplate(from.getEntity().getHref());
.cast(aclient).getVAppTemplateClient().getVAppTemplate(from.getEntity().getHref()), executor),
NullOnAuthorizationException);
} }
}, executor, null, logger, "vappTemplates in"), Predicates.notNull())); }, executor, null, logger, "vappTemplates in"), Predicates.notNull());
} }
} }

View File

@ -19,6 +19,7 @@
package org.jclouds.vcloud.director.v1_5.functions; package org.jclouds.vcloud.director.v1_5.functions;
import static com.google.common.collect.Iterables.filter; import static com.google.common.collect.Iterables.filter;
import static org.jclouds.Constants.PROPERTY_USER_THREADS;
import static org.jclouds.concurrent.FutureIterables.transformParallel; import static org.jclouds.concurrent.FutureIterables.transformParallel;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@ -29,12 +30,8 @@ import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.inject.Singleton; import javax.inject.Singleton;
import org.jclouds.Constants;
import org.jclouds.compute.reference.ComputeServiceConstants; import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.concurrent.ExceptionParsingListenableFuture;
import org.jclouds.concurrent.Futures;
import org.jclouds.logging.Logger; import org.jclouds.logging.Logger;
import org.jclouds.rest.AuthorizationException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.CatalogItem; import org.jclouds.vcloud.director.v1_5.domain.CatalogItem;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
@ -42,7 +39,6 @@ import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncApi;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Throwables;
/** /**
* @author danikov * @author danikov
@ -51,29 +47,14 @@ import com.google.common.base.Throwables;
public class VAppTemplatesForCatalogItems implements Function<Iterable<CatalogItem>, Iterable<? extends VAppTemplate>> { public class VAppTemplatesForCatalogItems implements Function<Iterable<CatalogItem>, Iterable<? extends VAppTemplate>> {
@Resource @Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER) @Named(ComputeServiceConstants.COMPUTE_LOGGER)
public Logger logger = Logger.NULL; private Logger logger = Logger.NULL;
private final VCloudDirectorAsyncApi aapi; private final VCloudDirectorAsyncApi aapi;
private final ExecutorService executor; private final ExecutorService executor;
private final NullOnAuthorizationException NullOnAuthorizationException;
@Singleton
static class NullOnAuthorizationException implements Function<Exception, VAppTemplate> {
public VAppTemplate apply(Exception from) {
if (from instanceof AuthorizationException) {
return null;
}
throw Throwables.propagate(from);
}
}
@Inject @Inject
VAppTemplatesForCatalogItems(VCloudDirectorAsyncApi aapi, VAppTemplatesForCatalogItems(VCloudDirectorAsyncApi aapi, @Named(PROPERTY_USER_THREADS) ExecutorService executor) {
@Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor,
NullOnAuthorizationException NullOnAuthorizationException) {
this.aapi = aapi; this.aapi = aapi;
this.executor = executor; this.executor = executor;
this.NullOnAuthorizationException = NullOnAuthorizationException;
} }
@Override @Override
@ -89,9 +70,7 @@ public class VAppTemplatesForCatalogItems implements Function<Iterable<CatalogIt
@Override @Override
public Future<? extends VAppTemplate> apply(CatalogItem from) { public Future<? extends VAppTemplate> apply(CatalogItem from) {
return new ExceptionParsingListenableFuture<VAppTemplate>(Futures.makeListenable(VCloudDirectorAsyncApi.class return aapi.getVAppTemplateApi().get(from.getEntity().getHref());
.cast(aapi).getVAppTemplateApi().get(from.getEntity().getHref()), executor),
NullOnAuthorizationException);
} }
}, executor, null, logger, "vappTemplates in"); }, executor, null, logger, "vappTemplates in");