changed bindings that imply i/o to Supplier<X>

This commit is contained in:
Adrian Cole 2012-02-26 13:54:43 +02:00
parent 5ee0bc5d90
commit ea47fcf904
43 changed files with 256 additions and 190 deletions

View File

@ -52,6 +52,7 @@ import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Supplier;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.jamesmurty.utils.XMLBuilder; import com.jamesmurty.utils.XMLBuilder;
@ -67,7 +68,7 @@ public class BindInstantiateVAppTemplateParamsToXmlPayload implements MapBinder
protected final String ns; protected final String ns;
protected final String schema; protected final String schema;
protected final BindToStringPayload stringBinder; protected final BindToStringPayload stringBinder;
protected final ReferenceType defaultNetwork; protected final Supplier<ReferenceType> defaultNetwork;
protected final FenceMode defaultFenceMode; protected final FenceMode defaultFenceMode;
protected final LoadingCache<URI, VAppTemplate> templateCache; protected final LoadingCache<URI, VAppTemplate> templateCache;
protected final Function<VAppTemplate, String> defaultNetworkNameInTemplate; protected final Function<VAppTemplate, String> defaultNetworkNameInTemplate;
@ -76,7 +77,7 @@ public class BindInstantiateVAppTemplateParamsToXmlPayload implements MapBinder
public BindInstantiateVAppTemplateParamsToXmlPayload(LoadingCache<URI, VAppTemplate> templateCache, public BindInstantiateVAppTemplateParamsToXmlPayload(LoadingCache<URI, VAppTemplate> templateCache,
@Network Function<VAppTemplate, String> defaultNetworkNameInTemplate, BindToStringPayload stringBinder, @Network Function<VAppTemplate, String> defaultNetworkNameInTemplate, BindToStringPayload stringBinder,
@Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema, @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema,
@Network ReferenceType network, FenceMode fenceMode) { @Network Supplier<ReferenceType> network, FenceMode fenceMode) {
this.templateCache = templateCache; this.templateCache = templateCache;
this.defaultNetworkNameInTemplate = defaultNetworkNameInTemplate; this.defaultNetworkNameInTemplate = defaultNetworkNameInTemplate;
this.ns = ns; this.ns = ns;
@ -98,7 +99,7 @@ public class BindInstantiateVAppTemplateParamsToXmlPayload implements MapBinder
Set<NetworkConfig> networkConfig = null; Set<NetworkConfig> networkConfig = null;
NetworkConfigDecorator networkConfigDecorator = new NetworkConfigDecorator(templateCache.getUnchecked(template), NetworkConfigDecorator networkConfigDecorator = new NetworkConfigDecorator(templateCache.getUnchecked(template),
defaultNetwork.getHref(), defaultFenceMode, defaultNetworkNameInTemplate); defaultNetwork.get().getHref(), defaultFenceMode, defaultNetworkNameInTemplate);
InstantiateVAppTemplateOptions options = findOptionsInArgsOrNull(gRequest); InstantiateVAppTemplateOptions options = findOptionsInArgsOrNull(gRequest);

View File

@ -51,6 +51,8 @@ import org.jclouds.vcloud.functions.VAppTemplatesInOrg;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Provides; import com.google.inject.Provides;
@ -108,8 +110,16 @@ public class VCloudComputeServiceDependenciesModule extends AbstractModule {
@Provides @Provides
@Singleton @Singleton
public NetworkConfig networkConfig(@Network ReferenceType network, FenceMode defaultFenceMode) { public Supplier<NetworkConfig> networkConfig(@Network Supplier<ReferenceType> network,
return new NetworkConfig(network.getName(), network.getHref(), defaultFenceMode); final FenceMode defaultFenceMode) {
return Suppliers.compose(new Function<ReferenceType, NetworkConfig>() {
@Override
public NetworkConfig apply(ReferenceType input) {
return new NetworkConfig(input.getName(), input.getHref(), defaultFenceMode);
}
}, network);
} }
} }

View File

@ -57,6 +57,7 @@ import org.jclouds.vcloud.domain.network.NetworkConfig;
import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions; import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Supplier;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
@ -72,13 +73,13 @@ public class InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployA
protected final VCloudClient client; protected final VCloudClient client;
protected final Predicate<URI> successTester; protected final Predicate<URI> successTester;
protected final LoadingCache<URI, VAppTemplate> vAppTemplates; protected final LoadingCache<URI, VAppTemplate> vAppTemplates;
protected final NetworkConfig defaultNetworkConfig; protected final Supplier<NetworkConfig> defaultNetworkConfig;
protected final String buildVersion; protected final String buildVersion;
@Inject @Inject
protected InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployAndPowerOn(VCloudClient client, protected InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployAndPowerOn(VCloudClient client,
Predicate<URI> successTester, LoadingCache<URI, VAppTemplate> vAppTemplates, Predicate<URI> successTester, LoadingCache<URI, VAppTemplate> vAppTemplates,
NetworkConfig defaultNetworkConfig, @Named(PROPERTY_BUILD_VERSION) String buildVersion) { Supplier<NetworkConfig> defaultNetworkConfig, @Named(PROPERTY_BUILD_VERSION) String buildVersion) {
this.client = client; this.client = client;
this.successTester = successTester; this.successTester = successTester;
this.vAppTemplates = vAppTemplates; this.vAppTemplates = vAppTemplates;
@ -142,9 +143,9 @@ public class InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployA
// if we only have a disconnected network, let's add a new section for the upstream // if we only have a disconnected network, let's add a new section for the upstream
// TODO: remove the disconnected entry // TODO: remove the disconnected entry
if (networkWithNoIpAllocation.apply(networkToConnect)) if (networkWithNoIpAllocation.apply(networkToConnect))
config = defaultNetworkConfig; config = defaultNetworkConfig.get();
else else
config = defaultNetworkConfig.toBuilder().networkName(networkToConnect.getName()).build(); config = defaultNetworkConfig.get().toBuilder().networkName(networkToConnect.getName()).build();
// note that in VCD 1.5, the network name after instantiation will be the same as the parent // note that in VCD 1.5, the network name after instantiation will be the same as the parent
InstantiateVAppTemplateOptions options = addNetworkConfig(config); InstantiateVAppTemplateOptions options = addNetworkConfig(config);

View File

@ -34,13 +34,14 @@ import org.jclouds.vcloud.suppliers.OnlyReferenceTypeFirstWithNameMatchingConfig
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.Supplier; import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
/** /**
* *
* @author Adrian Cole * @author Adrian Cole
*/ */
@Singleton @Singleton
public class DefaultOrgForUser implements Function<String, ReferenceType> { public class DefaultOrgForUser implements Function<String, Supplier<ReferenceType>> {
private final OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault selector; private final OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault selector;
private final Supplier<VCloudSession> sessionSupplier; private final Supplier<VCloudSession> sessionSupplier;
@ -55,10 +56,16 @@ public class DefaultOrgForUser implements Function<String, ReferenceType> {
} }
@Override @Override
public ReferenceType apply(String user) { public Supplier<ReferenceType> apply(final String user) {
VCloudSession session = sessionSupplier.get(); return Suppliers.compose(new Function<VCloudSession, ReferenceType>() {
checkState(session != null, "could not retrieve Session at %s", user);
return selector.apply(session.getOrgs().values()); @Override
public ReferenceType apply(VCloudSession session) {
checkState(session != null, "could not retrieve Session at %s", user);
return selector.apply(session.getOrgs().values());
}
}, sessionSupplier);
} }
} }

View File

@ -57,7 +57,7 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.vcloud.endpoints.Org @org.jclouds.vcloud.endpoints.Org
@Singleton @Singleton
protected ReferenceType provideDefaultOrg(DefaultOrgForUser defaultOrgURIForUser, protected Supplier<ReferenceType> provideDefaultOrg(DefaultOrgForUser defaultOrgURIForUser,
@Named(PROPERTY_IDENTITY) String user) { @Named(PROPERTY_IDENTITY) String user) {
return defaultOrgURIForUser.apply(user); return defaultOrgURIForUser.apply(user);
} }
@ -72,17 +72,17 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.vcloud.endpoints.TasksList @org.jclouds.vcloud.endpoints.TasksList
@Singleton @Singleton
protected ReferenceType provideDefaultTasksList(DefaultTasksListForOrg defaultTasksListURIForOrg, protected Supplier<ReferenceType> provideDefaultTasksList(DefaultTasksListForOrg defaultTasksListURIForOrg,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return defaultTasksListURIForOrg.apply(defaultOrg); return Suppliers.compose(defaultTasksListURIForOrg, defaultOrg);
} }
@Provides @Provides
@org.jclouds.vcloud.endpoints.Catalog @org.jclouds.vcloud.endpoints.Catalog
@Singleton @Singleton
protected ReferenceType provideDefaultCatalog(DefaultCatalogForOrg defaultCatalogURIForOrg, protected Supplier<ReferenceType> provideDefaultCatalog(DefaultCatalogForOrg defaultCatalogURIForOrg,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return defaultCatalogURIForOrg.apply(defaultOrg); return Suppliers.compose(defaultCatalogURIForOrg, defaultOrg);
} }
@Provides @Provides
@ -146,9 +146,9 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.vcloud.endpoints.VDC @org.jclouds.vcloud.endpoints.VDC
@Singleton @Singleton
protected ReferenceType provideDefaultVDC(DefaultVDCForOrg defaultVDCURIForOrg, protected Supplier<ReferenceType> provideDefaultVDC(DefaultVDCForOrg defaultVDCURIForOrg,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return defaultVDCURIForOrg.apply(defaultOrg); return Suppliers.compose(defaultVDCURIForOrg, defaultOrg);
} }
@Provides @Provides
@ -161,9 +161,9 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.vcloud.endpoints.Network @org.jclouds.vcloud.endpoints.Network
@Singleton @Singleton
protected ReferenceType provideDefaultNetwork(DefaultNetworkForVDC defaultNetworkURIForVDC, protected Supplier<ReferenceType> provideDefaultNetwork(DefaultNetworkForVDC defaultNetworkURIForVDC,
@org.jclouds.vcloud.endpoints.VDC ReferenceType defaultVDC) { @org.jclouds.vcloud.endpoints.VDC Supplier<ReferenceType> defaultVDC) {
return defaultNetworkURIForVDC.apply(defaultVDC); return Suppliers.compose(defaultNetworkURIForVDC, defaultVDC);
} }
@Provides @Provides

View File

@ -316,8 +316,15 @@ public class VCloudRestClientModule extends RestClientModule<VCloudClient, VClou
@VCloudToken @VCloudToken
@Provides @Provides
String provideVCloudToken(Supplier<VCloudSession> cache) { @Singleton
return checkNotNull(cache.get().getVCloudToken(), "No token present in session"); Supplier<String> provideVCloudToken(Supplier<VCloudSession> cache) {
return Suppliers.compose(new Function<VCloudSession, String>() {
@Override
public String apply(VCloudSession input) {
return checkNotNull(input.getVCloudToken(), "No token present in session");
}
}, cache);
} }
@Provides @Provides
@ -419,9 +426,16 @@ public class VCloudRestClientModule extends RestClientModule<VCloudClient, VClou
@Provides @Provides
@Singleton @Singleton
protected Org provideOrg(Supplier<Map<String, Org>> orgSupplier, protected Supplier<Org> provideOrg(final Supplier<Map<String, Org>> orgSupplier,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return orgSupplier.get().get(defaultOrg.getName()); return Suppliers.compose(new Function<ReferenceType, Org>() {
@Override
public Org apply(ReferenceType input) {
return orgSupplier.get().get(input.getName());
}
}, defaultOrg);
} }
@Provides @Provides

View File

@ -19,7 +19,6 @@
package org.jclouds.vcloud.filters; package org.jclouds.vcloud.filters;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton; import javax.inject.Singleton;
import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.HttpHeaders;
@ -29,6 +28,8 @@ import org.jclouds.http.HttpRequestFilter;
import org.jclouds.http.utils.ModifyRequest; import org.jclouds.http.utils.ModifyRequest;
import org.jclouds.vcloud.VCloudToken; import org.jclouds.vcloud.VCloudToken;
import com.google.common.base.Supplier;
/** /**
* Adds the VCloud Token to the request as a cookie * Adds the VCloud Token to the request as a cookie
* *
@ -37,10 +38,10 @@ import org.jclouds.vcloud.VCloudToken;
*/ */
@Singleton @Singleton
public class SetVCloudTokenCookie implements HttpRequestFilter { public class SetVCloudTokenCookie implements HttpRequestFilter {
private Provider<String> vcloudTokenProvider; private Supplier<String> vcloudTokenProvider;
@Inject @Inject
public SetVCloudTokenCookie(@VCloudToken Provider<String> authTokenProvider) { public SetVCloudTokenCookie(@VCloudToken Supplier<String> authTokenProvider) {
this.vcloudTokenProvider = authTokenProvider; this.vcloudTokenProvider = authTokenProvider;
} }

View File

@ -42,12 +42,13 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameAndCatalogNameToEndpoint implements Function<Object, URI> { public class OrgNameAndCatalogNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Org>> orgMap; private final Supplier<Map<String, Org>> orgMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultCatalog; private final Supplier<ReferenceType> defaultCatalog;
@Inject @Inject
public OrgNameAndCatalogNameToEndpoint(Supplier<Map<String, Org>> orgMap, public OrgNameAndCatalogNameToEndpoint(Supplier<Map<String, Org>> orgMap,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg, @Catalog ReferenceType defaultCatalog) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg,
@Catalog Supplier<ReferenceType> defaultCatalog) {
this.orgMap = orgMap; this.orgMap = orgMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultCatalog = defaultCatalog; this.defaultCatalog = defaultCatalog;
@ -59,9 +60,9 @@ public class OrgNameAndCatalogNameToEndpoint implements Function<Object, URI> {
Object org = Iterables.get(orgCatalog, 0); Object org = Iterables.get(orgCatalog, 0);
Object catalog = Iterables.get(orgCatalog, 1); Object catalog = Iterables.get(orgCatalog, 1);
if (org == null && catalog == null) if (org == null && catalog == null)
return defaultCatalog.getHref(); return defaultCatalog.get().getHref();
else if (org == null) else if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
try { try {
Map<String, ReferenceType> catalogs = checkNotNull(orgMap.get().get(org)).getCatalogs(); Map<String, ReferenceType> catalogs = checkNotNull(orgMap.get().get(org)).getCatalogs();

View File

@ -42,12 +42,12 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameAndVDCNameToEndpoint implements Function<Object, URI> { public class OrgNameAndVDCNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Org>> orgNameToVDCEndpoint; private final Supplier<Map<String, Org>> orgNameToVDCEndpoint;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultVDC; private final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
public OrgNameAndVDCNameToEndpoint(Supplier<Map<String, Org>> orgNameToVDCEndpoint, public OrgNameAndVDCNameToEndpoint(Supplier<Map<String, Org>> orgNameToVDCEndpoint,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg, @VDC ReferenceType defaultVDC) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
this.orgNameToVDCEndpoint = orgNameToVDCEndpoint; this.orgNameToVDCEndpoint = orgNameToVDCEndpoint;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultVDC = defaultVDC; this.defaultVDC = defaultVDC;
@ -59,9 +59,9 @@ public class OrgNameAndVDCNameToEndpoint implements Function<Object, URI> {
Object org = Iterables.get(orgVdc, 0); Object org = Iterables.get(orgVdc, 0);
Object vdc = Iterables.get(orgVdc, 1); Object vdc = Iterables.get(orgVdc, 1);
if (org == null && vdc == null) if (org == null && vdc == null)
return defaultVDC.getHref(); return defaultVDC.get().getHref();
else if (org == null) else if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
try { try {
Map<String, ReferenceType> vdcs = checkNotNull(orgNameToVDCEndpoint.get().get(org)).getVDCs(); Map<String, ReferenceType> vdcs = checkNotNull(orgNameToVDCEndpoint.get().get(org)).getVDCs();

View File

@ -42,13 +42,13 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameCatalogNameItemNameToEndpoint implements Function<Object, URI> { public class OrgNameCatalogNameItemNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>>> orgCatalogMap; private final Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>>> orgCatalogMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultCatalog; private final Supplier<ReferenceType> defaultCatalog;
@Inject @Inject
public OrgNameCatalogNameItemNameToEndpoint( public OrgNameCatalogNameItemNameToEndpoint(
Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>>> orgCatalogMap, Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>>> orgCatalogMap,
@Org ReferenceType defaultOrg, @Catalog ReferenceType defaultCatalog) { @Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
this.orgCatalogMap = orgCatalogMap; this.orgCatalogMap = orgCatalogMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultCatalog = defaultCatalog; this.defaultCatalog = defaultCatalog;
@ -61,9 +61,9 @@ public class OrgNameCatalogNameItemNameToEndpoint implements Function<Object, UR
Object catalog = Iterables.get(orgCatalog, 1); Object catalog = Iterables.get(orgCatalog, 1);
Object catalogItem = Iterables.get(orgCatalog, 2); Object catalogItem = Iterables.get(orgCatalog, 2);
if (org == null) if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
if (catalog == null) if (catalog == null)
catalog = defaultCatalog.getName(); catalog = defaultCatalog.get().getName();
try { try {
Map<String, org.jclouds.vcloud.domain.Catalog> catalogs = checkNotNull(orgCatalogMap.get().get(org)); Map<String, org.jclouds.vcloud.domain.Catalog> catalogs = checkNotNull(orgCatalogMap.get().get(org));
return catalogs.get(catalog).get(catalogItem).getHref(); return catalogs.get(catalog).get(catalogItem).getHref();

View File

@ -43,13 +43,13 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements Function<Object, URI> { public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> orgCatalogItemMap; private final Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> orgCatalogItemMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultCatalog; private final Supplier<ReferenceType> defaultCatalog;
@Inject @Inject
public OrgNameCatalogNameVAppTemplateNameToEndpoint( public OrgNameCatalogNameVAppTemplateNameToEndpoint(
Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> orgCatalogItemMap, Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> orgCatalogItemMap,
@Org ReferenceType defaultOrg, @Catalog ReferenceType defaultCatalog) { @Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
this.orgCatalogItemMap = orgCatalogItemMap; this.orgCatalogItemMap = orgCatalogItemMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultCatalog = defaultCatalog; this.defaultCatalog = defaultCatalog;
@ -62,9 +62,9 @@ public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements Function<Ob
Object catalog = Iterables.get(orgCatalog, 1); Object catalog = Iterables.get(orgCatalog, 1);
Object catalogItem = Iterables.get(orgCatalog, 2); Object catalogItem = Iterables.get(orgCatalog, 2);
if (org == null) if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
if (catalog == null) if (catalog == null)
catalog = defaultCatalog.getName(); catalog = defaultCatalog.get().getName();
Map<String, Map<String, Map<String, CatalogItem>>> orgCatalogItemMap = this.orgCatalogItemMap.get(); Map<String, Map<String, Map<String, CatalogItem>>> orgCatalogItemMap = this.orgCatalogItemMap.get();
if (!orgCatalogItemMap.containsKey(org)) if (!orgCatalogItemMap.containsKey(org))

View File

@ -38,11 +38,11 @@ import com.google.common.base.Supplier;
@Singleton @Singleton
public class OrgNameToEndpoint implements Function<Object, URI> { public class OrgNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier; private final Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
@Inject @Inject
public OrgNameToEndpoint(@Org Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier, public OrgNameToEndpoint(@Org Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier,
@Org ReferenceType defaultOrg) { @Org Supplier<ReferenceType> defaultOrg) {
this.orgNameToEndpointSupplier = orgNameToEndpointSupplier; this.orgNameToEndpointSupplier = orgNameToEndpointSupplier;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
} }
@ -50,7 +50,7 @@ public class OrgNameToEndpoint implements Function<Object, URI> {
public URI apply(Object from) { public URI apply(Object from) {
try { try {
Map<String, ReferenceType> orgNameToEndpoint = orgNameToEndpointSupplier.get(); Map<String, ReferenceType> orgNameToEndpoint = orgNameToEndpointSupplier.get();
return from == null ? defaultOrg.getHref() : orgNameToEndpoint.get(from).getHref(); return from == null ? defaultOrg.get().getHref() : orgNameToEndpoint.get(from).getHref();
} catch (NullPointerException e) { } catch (NullPointerException e) {
throw new NoSuchElementException("org " + from + " not found in " + orgNameToEndpointSupplier.get().keySet()); throw new NoSuchElementException("org " + from + " not found in " + orgNameToEndpointSupplier.get().keySet());
} }

View File

@ -41,11 +41,11 @@ import com.google.common.base.Supplier;
@Singleton @Singleton
public class OrgNameToTasksListEndpoint implements Function<Object, URI> { public class OrgNameToTasksListEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Org>> orgMap; private final Supplier<Map<String, Org>> orgMap;
private final ReferenceType defaultTasksList; private final Supplier<ReferenceType> defaultTasksList;
@Inject @Inject
public OrgNameToTasksListEndpoint(Supplier<Map<String, Org>> orgMap, public OrgNameToTasksListEndpoint(Supplier<Map<String, Org>> orgMap,
@TasksList ReferenceType defaultTasksList) { @TasksList Supplier<ReferenceType> defaultTasksList) {
this.orgMap = orgMap; this.orgMap = orgMap;
this.defaultTasksList = defaultTasksList; this.defaultTasksList = defaultTasksList;
} }
@ -53,7 +53,7 @@ public class OrgNameToTasksListEndpoint implements Function<Object, URI> {
public URI apply(Object from) { public URI apply(Object from) {
Object org = from; Object org = from;
if (org == null) if (org == null)
return defaultTasksList.getHref(); return defaultTasksList.get().getHref();
try { try {
return checkNotNull(orgMap.get().get(org)).getTasksList().getHref(); return checkNotNull(orgMap.get().get(org)).getTasksList().getHref();
} catch (NullPointerException e) { } catch (NullPointerException e) {

View File

@ -40,7 +40,7 @@ public class OrgNameVDCNameNetworkNameToEndpoint extends OrgNameVDCNameResourceN
@Inject @Inject
public OrgNameVDCNameNetworkNameToEndpoint( public OrgNameVDCNameNetworkNameToEndpoint(
Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap, Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap,
@Org ReferenceType defaultOrg, @VDC ReferenceType defaultVDC) { @Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
super(orgVDCMap, defaultOrg, defaultVDC); super(orgVDCMap, defaultOrg, defaultVDC);
} }

View File

@ -40,7 +40,7 @@ public class OrgNameVDCNameResourceEntityNameToEndpoint extends OrgNameVDCNameRe
@Inject @Inject
public OrgNameVDCNameResourceEntityNameToEndpoint( public OrgNameVDCNameResourceEntityNameToEndpoint(
Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap, Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap,
@Org ReferenceType defaultOrg, @VDC ReferenceType defaultVDC) { @Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
super(orgVDCMap, defaultOrg, defaultVDC); super(orgVDCMap, defaultOrg, defaultVDC);
} }

View File

@ -41,13 +41,13 @@ import com.google.common.collect.Iterables;
public abstract class OrgNameVDCNameResourceNameToEndpoint implements Function<Object, URI>{ public abstract class OrgNameVDCNameResourceNameToEndpoint implements Function<Object, URI>{
protected final Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap; protected final Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap;
protected final ReferenceType defaultOrg; protected final Supplier<ReferenceType> defaultOrg;
protected final ReferenceType defaultVDC; protected final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
public OrgNameVDCNameResourceNameToEndpoint( public OrgNameVDCNameResourceNameToEndpoint(
Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap, Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap,
@Org ReferenceType defaultOrg, @org.jclouds.vcloud.endpoints.VDC ReferenceType defaultVDC) { @Org Supplier<ReferenceType> defaultOrg, @org.jclouds.vcloud.endpoints.VDC Supplier<ReferenceType> defaultVDC) {
this.orgVDCMap = orgVDCMap; this.orgVDCMap = orgVDCMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultVDC = defaultVDC; this.defaultVDC = defaultVDC;
@ -60,9 +60,9 @@ public abstract class OrgNameVDCNameResourceNameToEndpoint implements Function<
Object vDC = Iterables.get(orgVDC, 1); Object vDC = Iterables.get(orgVDC, 1);
Object resource = Iterables.get(orgVDC, 2); Object resource = Iterables.get(orgVDC, 2);
if (org == null) if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
if (vDC == null) if (vDC == null)
vDC = defaultVDC.getName(); vDC = defaultVDC.get().getName();
Map<String, Map<String, org.jclouds.vcloud.domain.VDC>> orgToVDCs = orgVDCMap.get(); Map<String, Map<String, org.jclouds.vcloud.domain.VDC>> orgToVDCs = orgVDCMap.get();
checkState(orgToVDCs != null, "could not get map of org name to vdcs!"); checkState(orgToVDCs != null, "could not get map of org name to vdcs!");
Map<String, org.jclouds.vcloud.domain.VDC> vDCs = orgToVDCs.get(org); Map<String, org.jclouds.vcloud.domain.VDC> vDCs = orgToVDCs.get(org);

View File

@ -55,15 +55,16 @@ public class DefaultVDC implements ImplicitLocationSupplier {
@Singleton @Singleton
public static class IsDefaultVDC implements Predicate<Location> { public static class IsDefaultVDC implements Predicate<Location> {
private final ReferenceType defaultVDC; private final Supplier<ReferenceType> defaultVDCSupplier;
@Inject @Inject
IsDefaultVDC(@VDC ReferenceType defaultVDC) { IsDefaultVDC(@VDC Supplier<ReferenceType> defaultVDCSupplier) {
this.defaultVDC = checkNotNull(defaultVDC, "defaultVDC"); this.defaultVDCSupplier = checkNotNull(defaultVDCSupplier, "defaultVDCSupplier");
} }
@Override @Override
public boolean apply(Location input) { public boolean apply(Location input) {
ReferenceType defaultVDC = defaultVDCSupplier.get();
return input.getScope() == LocationScope.ZONE && input.getId().equals(defaultVDC.getHref().toASCIIString()); return input.getScope() == LocationScope.ZONE && input.getId().equals(defaultVDC.getHref().toASCIIString());
} }

View File

@ -49,6 +49,8 @@ import org.testng.annotations.Test;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Functions; import com.google.common.base.Functions;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
@ -102,9 +104,9 @@ public class BindInstantiateVAppTemplateParamsToXmlPayloadTest {
@Network @Network
@Provides @Provides
@Singleton @Singleton
ReferenceType provideNetwork() { Supplier<ReferenceType> provideNetwork() {
return new ReferenceTypeImpl(null, null, URI return Suppliers.<ReferenceType>ofInstance(new ReferenceTypeImpl(null, null, URI
.create("https://vcenterprise.bluelock.com/api/v1.0/network/1990")); .create("https://vcenterprise.bluelock.com/api/v1.0/network/1990")));
} }
})); }));
} }

View File

@ -22,7 +22,6 @@ import static org.testng.Assert.assertEquals;
import java.net.URI; import java.net.URI;
import javax.inject.Provider;
import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.HttpHeaders;
import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpRequest;
@ -30,6 +29,8 @@ import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
import org.testng.annotations.BeforeTest; import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import com.google.common.base.Supplier;
/** /**
* @author Adrian Cole * @author Adrian Cole
*/ */
@ -40,7 +41,7 @@ public class SetVCloudTokenCookieTest {
@BeforeTest @BeforeTest
void setUp() { void setUp() {
filter = new SetVCloudTokenCookie(new Provider<String>() { filter = new SetVCloudTokenCookie(new Supplier<String>() {
public String get() { public String get() {
return "token"; return "token";
} }

View File

@ -139,9 +139,9 @@ public abstract class BaseVCloudAsyncClientTest<T> extends RestClientTest<T> {
} }
@Override @Override
protected Org provideOrg(Supplier<Map<String, Org>> orgSupplier, protected Supplier<Org> provideOrg(Supplier<Map<String, Org>> orgSupplier,
@org.jclouds.vcloud.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return ORG; return Suppliers.ofInstance(ORG);
} }
@Override @Override
@ -150,14 +150,18 @@ public abstract class BaseVCloudAsyncClientTest<T> extends RestClientTest<T> {
@Override @Override
protected void configure() { protected void configure() {
bind(ReferenceType.class).annotatedWith(org.jclouds.vcloud.endpoints.Org.class).toInstance(ORG_REF); TypeLiteral<Supplier<ReferenceType>> refTypeSupplier = new TypeLiteral<Supplier<ReferenceType>>() {
bind(ReferenceType.class).annotatedWith(org.jclouds.vcloud.endpoints.Catalog.class).toInstance( };
CATALOG_REF); bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.Org.class).toInstance(
bind(ReferenceType.class).annotatedWith(org.jclouds.vcloud.endpoints.TasksList.class).toInstance( Suppliers.<ReferenceType> ofInstance(ORG_REF));
TASKSLIST_REF); bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.Catalog.class).toInstance(
bind(ReferenceType.class).annotatedWith(org.jclouds.vcloud.endpoints.VDC.class).toInstance(VDC_REF); Suppliers.<ReferenceType> ofInstance(CATALOG_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.vcloud.endpoints.Network.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.TasksList.class).toInstance(
NETWORK_REF); Suppliers.<ReferenceType> ofInstance(TASKSLIST_REF));
bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.VDC.class).toInstance(
Suppliers.<ReferenceType> ofInstance(VDC_REF));
bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.Network.class).toInstance(
Suppliers.<ReferenceType> ofInstance(NETWORK_REF));
} }
}); });

View File

@ -48,6 +48,7 @@ import org.jclouds.trmk.vcloud_0_8.endpoints.Network;
import org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions; import org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions;
import org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions.NetworkConfig; import org.jclouds.trmk.vcloud_0_8.options.InstantiateVAppTemplateOptions.NetworkConfig;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@ -67,13 +68,13 @@ public class BindInstantiateVAppTemplateParamsToXmlPayload implements MapBinder
private final BindToStringPayload stringBinder; private final BindToStringPayload stringBinder;
protected final Map<ResourceType, String> virtualHardwareToInstanceId = ImmutableMap.of(ResourceType.PROCESSOR, "1", protected final Map<ResourceType, String> virtualHardwareToInstanceId = ImmutableMap.of(ResourceType.PROCESSOR, "1",
ResourceType.MEMORY, "2", ResourceType.DISK_DRIVE, "9"); ResourceType.MEMORY, "2", ResourceType.DISK_DRIVE, "9");
private final ReferenceType defaultNetwork; private final Supplier<ReferenceType> defaultNetwork;
private final String defaultFenceMode; private final String defaultFenceMode;
@Inject @Inject
public BindInstantiateVAppTemplateParamsToXmlPayload(BindToStringPayload stringBinder, public BindInstantiateVAppTemplateParamsToXmlPayload(BindToStringPayload stringBinder,
@Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema, @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema,
@Network ReferenceType network, @Named(PROPERTY_VCLOUD_DEFAULT_FENCEMODE) String fenceMode) { @Network Supplier<ReferenceType> network, @Named(PROPERTY_VCLOUD_DEFAULT_FENCEMODE) String fenceMode) {
this.ns = ns; this.ns = ns;
this.schema = schema; this.schema = schema;
this.stringBinder = stringBinder; this.stringBinder = stringBinder;
@ -93,7 +94,7 @@ public class BindInstantiateVAppTemplateParamsToXmlPayload implements MapBinder
SortedMap<ResourceType, String> virtualHardwareQuantity = Maps.newTreeMap(); SortedMap<ResourceType, String> virtualHardwareQuantity = Maps.newTreeMap();
InstantiateVAppTemplateOptions options = findOptionsInArgsOrNull(gRequest); InstantiateVAppTemplateOptions options = findOptionsInArgsOrNull(gRequest);
String network = (defaultNetwork != null) ? defaultNetwork.getHref().toASCIIString() : null; String network = (defaultNetwork != null) ? defaultNetwork.get().getHref().toASCIIString() : null;
String fenceMode = defaultFenceMode; String fenceMode = defaultFenceMode;
String networkName = name; String networkName = name;
if (options != null) { if (options != null) {

View File

@ -34,13 +34,14 @@ import org.jclouds.trmk.vcloud_0_8.suppliers.OnlyReferenceTypeFirstWithNameMatch
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.Supplier; import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
/** /**
* *
* @author Adrian Cole * @author Adrian Cole
*/ */
@Singleton @Singleton
public class DefaultOrgForUser implements Function<String, ReferenceType> { public class DefaultOrgForUser implements Function<String, Supplier<ReferenceType>> {
private final OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault selector; private final OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault selector;
private final Supplier<VCloudSession> sessionSupplier; private final Supplier<VCloudSession> sessionSupplier;
@ -55,10 +56,16 @@ public class DefaultOrgForUser implements Function<String, ReferenceType> {
} }
@Override @Override
public ReferenceType apply(String user) { public Supplier<ReferenceType> apply(final String user) {
VCloudSession session = sessionSupplier.get(); return Suppliers.compose(new Function<VCloudSession, ReferenceType>() {
checkState(session != null, "could not retrieve Session at %s", user);
return selector.apply(session.getOrgs().values()); @Override
public ReferenceType apply(VCloudSession session) {
checkState(session != null, "could not retrieve Session at %s", user);
return selector.apply(session.getOrgs().values());
}
}, sessionSupplier);
} }
} }

View File

@ -54,7 +54,7 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.trmk.vcloud_0_8.endpoints.Org @org.jclouds.trmk.vcloud_0_8.endpoints.Org
@Singleton @Singleton
protected ReferenceType provideDefaultOrg(DefaultOrgForUser defaultOrgURIForUser, protected Supplier<ReferenceType> provideDefaultOrg(DefaultOrgForUser defaultOrgURIForUser,
@Named(PROPERTY_IDENTITY) String user) { @Named(PROPERTY_IDENTITY) String user) {
return defaultOrgURIForUser.apply(user); return defaultOrgURIForUser.apply(user);
} }
@ -69,9 +69,9 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.trmk.vcloud_0_8.endpoints.TasksList @org.jclouds.trmk.vcloud_0_8.endpoints.TasksList
@Singleton @Singleton
protected ReferenceType provideDefaultTasksList(DefaultTasksListForOrg defaultTasksListURIForOrg, protected Supplier<ReferenceType> provideDefaultTasksList(DefaultTasksListForOrg defaultTasksListURIForOrg,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return defaultTasksListURIForOrg.apply(defaultOrg); return Suppliers.compose(defaultTasksListURIForOrg, defaultOrg);
} }
@Provides @Provides
@ -84,9 +84,9 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.trmk.vcloud_0_8.endpoints.Catalog @org.jclouds.trmk.vcloud_0_8.endpoints.Catalog
@Singleton @Singleton
protected ReferenceType provideDefaultCatalog(DefaultCatalogForOrg defaultCatalogURIForOrg, protected Supplier<ReferenceType> provideDefaultCatalog(DefaultCatalogForOrg defaultCatalogURIForOrg,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return defaultCatalogURIForOrg.apply(defaultOrg); return Suppliers.compose(defaultCatalogURIForOrg, defaultOrg);
} }
@Provides @Provides
@ -121,9 +121,9 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.trmk.vcloud_0_8.endpoints.VDC @org.jclouds.trmk.vcloud_0_8.endpoints.VDC
@Singleton @Singleton
protected ReferenceType provideDefaultVDC(DefaultVDCForOrg defaultVDCURIForOrg, protected Supplier<ReferenceType> provideDefaultVDC(DefaultVDCForOrg defaultVDCURIForOrg,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return defaultVDCURIForOrg.apply(defaultOrg); return Suppliers.compose(defaultVDCURIForOrg, defaultOrg);
} }
@Provides @Provides
@ -136,9 +136,9 @@ public class DefaultVCloudReferencesModule extends AbstractModule {
@Provides @Provides
@org.jclouds.trmk.vcloud_0_8.endpoints.Network @org.jclouds.trmk.vcloud_0_8.endpoints.Network
@Singleton @Singleton
protected ReferenceType provideDefaultNetwork(DefaultNetworkForVDC defaultNetworkURIForVDC, protected Supplier<ReferenceType> provideDefaultNetwork(DefaultNetworkForVDC defaultNetworkURIForVDC,
@org.jclouds.trmk.vcloud_0_8.endpoints.VDC ReferenceType defaultVDC) { @org.jclouds.trmk.vcloud_0_8.endpoints.VDC Supplier<ReferenceType> defaultVDC) {
return defaultNetworkURIForVDC.apply(defaultVDC); return Suppliers.compose(defaultNetworkURIForVDC, defaultVDC);
} }
@Provides @Provides

View File

@ -352,10 +352,17 @@ public class TerremarkVCloudRestClientModule<S extends TerremarkVCloudClient, A
@Provides @Provides
@Singleton @Singleton
protected org.jclouds.trmk.vcloud_0_8.domain.Org provideOrg( protected Supplier<org.jclouds.trmk.vcloud_0_8.domain.Org> provideOrg(
Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier, final Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return orgSupplier.get().get(defaultOrg.getName()); return Suppliers.compose(new Function<ReferenceType, org.jclouds.trmk.vcloud_0_8.domain.Org>() {
@Override
public org.jclouds.trmk.vcloud_0_8.domain.Org apply(ReferenceType input) {
return orgSupplier.get().get(input.getName());
}
}, defaultOrg);
} }
@Provides @Provides

View File

@ -42,12 +42,12 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameAndCatalogNameToEndpoint implements Function<Object, URI> { public class OrgNameAndCatalogNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, ? extends Org>> orgMap; private final Supplier<Map<String, ? extends Org>> orgMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultCatalog; private final Supplier<ReferenceType> defaultCatalog;
@Inject @Inject
public OrgNameAndCatalogNameToEndpoint(Supplier<Map<String, ? extends Org>> orgMap, public OrgNameAndCatalogNameToEndpoint(Supplier<Map<String, ? extends Org>> orgMap,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg, @Catalog ReferenceType defaultCatalog) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
this.orgMap = orgMap; this.orgMap = orgMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultCatalog = defaultCatalog; this.defaultCatalog = defaultCatalog;
@ -59,9 +59,9 @@ public class OrgNameAndCatalogNameToEndpoint implements Function<Object, URI> {
Object org = Iterables.get(orgCatalog, 0); Object org = Iterables.get(orgCatalog, 0);
Object catalog = Iterables.get(orgCatalog, 1); Object catalog = Iterables.get(orgCatalog, 1);
if (org == null && catalog == null) if (org == null && catalog == null)
return defaultCatalog.getHref(); return defaultCatalog.get().getHref();
else if (org == null) else if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
try { try {
Map<String, ReferenceType> catalogs = checkNotNull(orgMap.get().get(org)).getCatalogs(); Map<String, ReferenceType> catalogs = checkNotNull(orgMap.get().get(org)).getCatalogs();

View File

@ -42,12 +42,12 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameAndTasksListNameToEndpoint implements Function<Object, URI> { public class OrgNameAndTasksListNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, ? extends Org>> orgMap; private final Supplier<Map<String, ? extends Org>> orgMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultTasksList; private final Supplier<ReferenceType> defaultTasksList;
@Inject @Inject
public OrgNameAndTasksListNameToEndpoint(Supplier<Map<String, ? extends Org>> orgMap, public OrgNameAndTasksListNameToEndpoint(Supplier<Map<String, ? extends Org>> orgMap,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg, @TasksList ReferenceType defaultTasksList) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg, @TasksList Supplier<ReferenceType> defaultTasksList) {
this.orgMap = orgMap; this.orgMap = orgMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultTasksList = defaultTasksList; this.defaultTasksList = defaultTasksList;
@ -59,9 +59,9 @@ public class OrgNameAndTasksListNameToEndpoint implements Function<Object, URI>
Object org = Iterables.get(orgTasksList, 0); Object org = Iterables.get(orgTasksList, 0);
Object tasksList = Iterables.get(orgTasksList, 1); Object tasksList = Iterables.get(orgTasksList, 1);
if (org == null && tasksList == null) if (org == null && tasksList == null)
return defaultTasksList.getHref(); return defaultTasksList.get().getHref();
else if (org == null) else if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
try { try {
Map<String, ReferenceType> tasksLists = checkNotNull(orgMap.get().get(org)).getTasksLists(); Map<String, ReferenceType> tasksLists = checkNotNull(orgMap.get().get(org)).getTasksLists();

View File

@ -42,12 +42,12 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameAndVDCNameToEndpoint implements Function<Object, URI> { public class OrgNameAndVDCNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, ? extends Org>> orgNameToVDCEndpoint; private final Supplier<Map<String, ? extends Org>> orgNameToVDCEndpoint;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultVDC; private final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
public OrgNameAndVDCNameToEndpoint(Supplier<Map<String, ? extends Org>> orgNameToVDCEndpoint, public OrgNameAndVDCNameToEndpoint(Supplier<Map<String, ? extends Org>> orgNameToVDCEndpoint,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg, @VDC ReferenceType defaultVDC) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
this.orgNameToVDCEndpoint = orgNameToVDCEndpoint; this.orgNameToVDCEndpoint = orgNameToVDCEndpoint;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultVDC = defaultVDC; this.defaultVDC = defaultVDC;
@ -59,9 +59,9 @@ public class OrgNameAndVDCNameToEndpoint implements Function<Object, URI> {
Object org = Iterables.get(orgVdc, 0); Object org = Iterables.get(orgVdc, 0);
Object vdc = Iterables.get(orgVdc, 1); Object vdc = Iterables.get(orgVdc, 1);
if (org == null && vdc == null) if (org == null && vdc == null)
return defaultVDC.getHref(); return defaultVDC.get().getHref();
else if (org == null) else if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
try { try {
Map<String, ReferenceType> vdcs = checkNotNull(orgNameToVDCEndpoint.get().get(org)).getVDCs(); Map<String, ReferenceType> vdcs = checkNotNull(orgNameToVDCEndpoint.get().get(org)).getVDCs();

View File

@ -42,13 +42,13 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameCatalogNameItemNameToEndpoint implements Function<Object, URI> { public class OrgNameCatalogNameItemNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> orgCatalogMap; private final Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> orgCatalogMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultCatalog; private final Supplier<ReferenceType> defaultCatalog;
@Inject @Inject
public OrgNameCatalogNameItemNameToEndpoint( public OrgNameCatalogNameItemNameToEndpoint(
Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> orgCatalogMap, Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> orgCatalogMap,
@Org ReferenceType defaultOrg, @Catalog ReferenceType defaultCatalog) { @Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
this.orgCatalogMap = orgCatalogMap; this.orgCatalogMap = orgCatalogMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultCatalog = defaultCatalog; this.defaultCatalog = defaultCatalog;
@ -61,9 +61,9 @@ public class OrgNameCatalogNameItemNameToEndpoint implements Function<Object, UR
Object catalog = Iterables.get(orgCatalog, 1); Object catalog = Iterables.get(orgCatalog, 1);
Object catalogItem = Iterables.get(orgCatalog, 2); Object catalogItem = Iterables.get(orgCatalog, 2);
if (org == null) if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
if (catalog == null) if (catalog == null)
catalog = defaultCatalog.getName(); catalog = defaultCatalog.get().getName();
try { try {
Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog> catalogs = checkNotNull(orgCatalogMap.get().get(org)); Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog> catalogs = checkNotNull(orgCatalogMap.get().get(org));
return catalogs.get(catalog).get(catalogItem).getHref(); return catalogs.get(catalog).get(catalogItem).getHref();

View File

@ -43,13 +43,13 @@ import com.google.common.collect.Iterables;
@Singleton @Singleton
public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements Function<Object, URI> { public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>> orgCatalogItemMap; private final Supplier<Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>> orgCatalogItemMap;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
private final ReferenceType defaultCatalog; private final Supplier<ReferenceType> defaultCatalog;
@Inject @Inject
public OrgNameCatalogNameVAppTemplateNameToEndpoint( public OrgNameCatalogNameVAppTemplateNameToEndpoint(
Supplier<Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>> orgCatalogItemMap, Supplier<Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>> orgCatalogItemMap,
@Org ReferenceType defaultOrg, @Catalog ReferenceType defaultCatalog) { @Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
this.orgCatalogItemMap = orgCatalogItemMap; this.orgCatalogItemMap = orgCatalogItemMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultCatalog = defaultCatalog; this.defaultCatalog = defaultCatalog;
@ -62,9 +62,9 @@ public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements Function<Ob
Object catalog = Iterables.get(orgCatalog, 1); Object catalog = Iterables.get(orgCatalog, 1);
Object catalogItem = Iterables.get(orgCatalog, 2); Object catalogItem = Iterables.get(orgCatalog, 2);
if (org == null) if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
if (catalog == null) if (catalog == null)
catalog = defaultCatalog.getName(); catalog = defaultCatalog.get().getName();
Map<String, Map<String, Map<String, ? extends CatalogItem>>> orgCatalogItemMap = this.orgCatalogItemMap.get(); Map<String, Map<String, Map<String, ? extends CatalogItem>>> orgCatalogItemMap = this.orgCatalogItemMap.get();
if (!orgCatalogItemMap.containsKey(org)) if (!orgCatalogItemMap.containsKey(org))

View File

@ -38,11 +38,11 @@ import com.google.common.base.Supplier;
@Singleton @Singleton
public class OrgNameToEndpoint implements Function<Object, URI> { public class OrgNameToEndpoint implements Function<Object, URI> {
private final Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier; private final Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier;
private final ReferenceType defaultOrg; private final Supplier<ReferenceType> defaultOrg;
@Inject @Inject
public OrgNameToEndpoint(@Org Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier, public OrgNameToEndpoint(@Org Supplier<Map<String, ReferenceType>> orgNameToEndpointSupplier,
@Org ReferenceType defaultOrg) { @Org Supplier<ReferenceType> defaultOrg) {
this.orgNameToEndpointSupplier = orgNameToEndpointSupplier; this.orgNameToEndpointSupplier = orgNameToEndpointSupplier;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
} }
@ -50,7 +50,7 @@ public class OrgNameToEndpoint implements Function<Object, URI> {
public URI apply(Object from) { public URI apply(Object from) {
try { try {
Map<String, ReferenceType> orgNameToEndpoint = orgNameToEndpointSupplier.get(); Map<String, ReferenceType> orgNameToEndpoint = orgNameToEndpointSupplier.get();
return from == null ? defaultOrg.getHref() : orgNameToEndpoint.get(from).getHref(); return from == null ? defaultOrg.get().getHref() : orgNameToEndpoint.get(from).getHref();
} catch (NullPointerException e) { } catch (NullPointerException e) {
throw new NoSuchElementException("org " + from + " not found in " + orgNameToEndpointSupplier.get().keySet()); throw new NoSuchElementException("org " + from + " not found in " + orgNameToEndpointSupplier.get().keySet());
} }

View File

@ -40,7 +40,7 @@ public class OrgNameVDCNameNetworkNameToEndpoint extends OrgNameVDCNameResourceN
@Inject @Inject
public OrgNameVDCNameNetworkNameToEndpoint( public OrgNameVDCNameNetworkNameToEndpoint(
Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap, Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap,
@Org ReferenceType defaultOrg, @VDC ReferenceType defaultVDC) { @Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
super(orgVDCMap, defaultOrg, defaultVDC); super(orgVDCMap, defaultOrg, defaultVDC);
} }

View File

@ -40,7 +40,7 @@ public class OrgNameVDCNameResourceEntityNameToEndpoint extends OrgNameVDCNameRe
@Inject @Inject
public OrgNameVDCNameResourceEntityNameToEndpoint( public OrgNameVDCNameResourceEntityNameToEndpoint(
Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap, Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap,
@Org ReferenceType defaultOrg, @VDC ReferenceType defaultVDC) { @Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
super(orgVDCMap, defaultOrg, defaultVDC); super(orgVDCMap, defaultOrg, defaultVDC);
} }

View File

@ -41,13 +41,13 @@ import com.google.common.collect.Iterables;
public abstract class OrgNameVDCNameResourceNameToEndpoint implements Function<Object, URI>{ public abstract class OrgNameVDCNameResourceNameToEndpoint implements Function<Object, URI>{
protected final Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap; protected final Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap;
protected final ReferenceType defaultOrg; protected final Supplier<ReferenceType> defaultOrg;
protected final ReferenceType defaultVDC; protected final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
public OrgNameVDCNameResourceNameToEndpoint( public OrgNameVDCNameResourceNameToEndpoint(
Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap, Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap,
@Org ReferenceType defaultOrg, @org.jclouds.trmk.vcloud_0_8.endpoints.VDC ReferenceType defaultVDC) { @Org Supplier<ReferenceType> defaultOrg, @org.jclouds.trmk.vcloud_0_8.endpoints.VDC Supplier<ReferenceType> defaultVDC) {
this.orgVDCMap = orgVDCMap; this.orgVDCMap = orgVDCMap;
this.defaultOrg = defaultOrg; this.defaultOrg = defaultOrg;
this.defaultVDC = defaultVDC; this.defaultVDC = defaultVDC;
@ -60,9 +60,9 @@ public abstract class OrgNameVDCNameResourceNameToEndpoint implements Function<
Object vDC = Iterables.get(orgVDC, 1); Object vDC = Iterables.get(orgVDC, 1);
Object resource = Iterables.get(orgVDC, 2); Object resource = Iterables.get(orgVDC, 2);
if (org == null) if (org == null)
org = defaultOrg.getName(); org = defaultOrg.get().getName();
if (vDC == null) if (vDC == null)
vDC = defaultVDC.getName(); vDC = defaultVDC.get().getName();
Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgToVDCs = orgVDCMap.get(); Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgToVDCs = orgVDCMap.get();
checkState(orgToVDCs != null, "could not get map of org name to vdcs!"); checkState(orgToVDCs != null, "could not get map of org name to vdcs!");
Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> vDCs = orgToVDCs.get(org); Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> vDCs = orgToVDCs.get(org);

View File

@ -36,10 +36,10 @@ import com.google.common.collect.Maps;
public abstract class OrgURIToEndpoint implements Function<Object, URI> { public abstract class OrgURIToEndpoint implements Function<Object, URI> {
protected final Supplier<Map<String, ? extends Org>> orgMap; protected final Supplier<Map<String, ? extends Org>> orgMap;
protected final ReferenceType defaultOrg; protected final Supplier<ReferenceType> defaultOrg;
public OrgURIToEndpoint(Supplier<Map<String, ? extends Org>> orgMap, public OrgURIToEndpoint(Supplier<Map<String, ? extends Org>> orgMap,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultUri) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultUri) {
this.orgMap = orgMap; this.orgMap = orgMap;
this.defaultOrg = defaultUri; this.defaultOrg = defaultUri;
} }
@ -54,7 +54,7 @@ public abstract class OrgURIToEndpoint implements Function<Object, URI> {
}); });
try { try {
Org org = uriToOrg.get(from == null ? defaultOrg.getHref() : from); Org org = uriToOrg.get(from == null ? defaultOrg.get().getHref() : from);
return getUriFromOrg(org); return getUriFromOrg(org);
} catch (NullPointerException e) { } catch (NullPointerException e) {
throw new ResourceNotFoundException("org " + from + " not found in: " + uriToOrg, e); throw new ResourceNotFoundException("org " + from + " not found in: " + uriToOrg, e);

View File

@ -38,7 +38,7 @@ import com.google.common.base.Supplier;
public class OrgURIToKeysListEndpoint extends OrgURIToEndpoint implements Function<Object, URI> { public class OrgURIToKeysListEndpoint extends OrgURIToEndpoint implements Function<Object, URI> {
@Inject @Inject
public OrgURIToKeysListEndpoint(Supplier<Map<String, ? extends Org>> orgMap, public OrgURIToKeysListEndpoint(Supplier<Map<String, ? extends Org>> orgMap,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultUri) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultUri) {
super(orgMap, defaultUri); super(orgMap, defaultUri);
} }

View File

@ -38,18 +38,18 @@ import com.google.common.base.Supplier;
@Singleton @Singleton
public class VDCURIToInternetServicesEndpoint implements Function<Object, URI> { public class VDCURIToInternetServicesEndpoint implements Function<Object, URI> {
private final Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap; private final Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap;
private final ReferenceType defaultVDC; private final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
public VDCURIToInternetServicesEndpoint( public VDCURIToInternetServicesEndpoint(
Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap, @VDC ReferenceType defaultVDC) { Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap, @VDC Supplier<ReferenceType> defaultVDC) {
this.orgVDCMap = orgVDCMap; this.orgVDCMap = orgVDCMap;
this.defaultVDC = defaultVDC; this.defaultVDC = defaultVDC;
} }
public URI apply(Object from) { public URI apply(Object from) {
try { try {
return orgVDCMap.get().get(from == null ? defaultVDC.getHref() : from).getInternetServices().getHref(); return orgVDCMap.get().get(from == null ? defaultVDC.get().getHref() : from).getInternetServices().getHref();
} catch (NullPointerException e) { } catch (NullPointerException e) {
throw new ResourceNotFoundException("vdc " + from + " not found in " + orgVDCMap.get()); throw new ResourceNotFoundException("vdc " + from + " not found in " + orgVDCMap.get());
} }

View File

@ -38,18 +38,18 @@ import com.google.common.base.Supplier;
@Singleton @Singleton
public class VDCURIToPublicIPsEndpoint implements Function<Object, URI> { public class VDCURIToPublicIPsEndpoint implements Function<Object, URI> {
private final Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap; private final Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap;
private final ReferenceType defaultVDC; private final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
public VDCURIToPublicIPsEndpoint(Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap, public VDCURIToPublicIPsEndpoint(Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> orgVDCMap,
@VDC ReferenceType defaultVDC) { @VDC Supplier<ReferenceType> defaultVDC) {
this.orgVDCMap = orgVDCMap; this.orgVDCMap = orgVDCMap;
this.defaultVDC = defaultVDC; this.defaultVDC = defaultVDC;
} }
public URI apply(Object from) { public URI apply(Object from) {
try { try {
return orgVDCMap.get().get(from == null ? defaultVDC.getHref() : from).getPublicIps().getHref(); return orgVDCMap.get().get(from == null ? defaultVDC.get().getHref() : from).getPublicIps().getHref();
} catch (NullPointerException e) { } catch (NullPointerException e) {
throw new ResourceNotFoundException("vdc " + from + " not found in " + orgVDCMap.get()); throw new ResourceNotFoundException("vdc " + from + " not found in " + orgVDCMap.get());
} }

View File

@ -40,16 +40,16 @@ import com.google.common.base.Supplier;
public class DefaultVDC implements ImplicitLocationSupplier { public class DefaultVDC implements ImplicitLocationSupplier {
@Singleton @Singleton
public static final class IsDefaultVDC implements Predicate<Location> { public static final class IsDefaultVDC implements Predicate<Location> {
private final ReferenceType defaultVDC; private final Supplier<ReferenceType> defaultVDC;
@Inject @Inject
IsDefaultVDC(@VDC ReferenceType defaultVDC) { IsDefaultVDC(@VDC Supplier<ReferenceType> defaultVDC) {
this.defaultVDC = checkNotNull(defaultVDC, "defaultVDC"); this.defaultVDC = checkNotNull(defaultVDC, "defaultVDC");
} }
@Override @Override
public boolean apply(Location input) { public boolean apply(Location input) {
return input.getScope() == LocationScope.ZONE && input.getId().equals(defaultVDC.getHref().toASCIIString()); return input.getScope() == LocationScope.ZONE && input.getId().equals(defaultVDC.get().getHref().toASCIIString());
} }
@Override @Override

View File

@ -41,6 +41,8 @@ import org.nnsoft.guice.rocoto.Rocoto;
import org.nnsoft.guice.rocoto.configuration.ConfigurationModule; import org.nnsoft.guice.rocoto.configuration.ConfigurationModule;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.HashMultimap; import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@ -68,8 +70,9 @@ public class BindInstantiateVAppTemplateParamsToXmlPayloadTest {
@Network @Network
@Provides @Provides
@Singleton @Singleton
ReferenceType provideNetwork() { Supplier<ReferenceType> provideNetwork() {
return new ReferenceTypeImpl(null, null, URI.create("https://vcloud.safesecureweb.com/network/1990")); return Suppliers.<ReferenceType>ofInstance(new ReferenceTypeImpl(null, null, URI
.create("https://vcloud.safesecureweb.com/network/1990")));
} }
})); }));

View File

@ -40,7 +40,7 @@ import com.google.common.base.Supplier;
public class OrgURIToDataCentersListEndpoint extends OrgURIToEndpoint implements Function<Object, URI> { public class OrgURIToDataCentersListEndpoint extends OrgURIToEndpoint implements Function<Object, URI> {
@Inject @Inject
public OrgURIToDataCentersListEndpoint(Supplier<Map<String, ? extends Org>> orgMap, public OrgURIToDataCentersListEndpoint(Supplier<Map<String, ? extends Org>> orgMap,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultUri) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultUri) {
super(orgMap, defaultUri); super(orgMap, defaultUri);
} }

View File

@ -40,7 +40,7 @@ import com.google.common.base.Supplier;
public class OrgURIToTagsListEndpoint extends OrgURIToEndpoint implements Function<Object, URI> { public class OrgURIToTagsListEndpoint extends OrgURIToEndpoint implements Function<Object, URI> {
@Inject @Inject
public OrgURIToTagsListEndpoint(Supplier<Map<String, ? extends Org>> orgMap, public OrgURIToTagsListEndpoint(Supplier<Map<String, ? extends Org>> orgMap,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultUri) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultUri) {
super(orgMap, defaultUri); super(orgMap, defaultUri);
} }

View File

@ -56,6 +56,7 @@ import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Module; import com.google.inject.Module;
import com.google.inject.TypeLiteral;
/** /**
* @author Adrian Cole * @author Adrian Cole
@ -138,9 +139,9 @@ public abstract class BaseTerremarkECloudAsyncClientTest<T> extends RestClientTe
} }
@Override @Override
protected Org provideOrg(Supplier<Map<String, ? extends Org>> orgSupplier, protected Supplier<Org> provideOrg(Supplier<Map<String, ? extends Org>> orgSupplier,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return ORG; return Suppliers.ofInstance(ORG);
} }
@Override @Override
@ -149,16 +150,18 @@ public abstract class BaseTerremarkECloudAsyncClientTest<T> extends RestClientTe
@Override @Override
protected void configure() { protected void configure() {
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Org.class).toInstance( TypeLiteral<Supplier<ReferenceType>> refTypeSupplier = new TypeLiteral<Supplier<ReferenceType>>() {
ORG_REF); };
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Catalog.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Org.class).toInstance(
CATALOG_REF); Suppliers.<ReferenceType> ofInstance(ORG_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.TasksList.class) bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Catalog.class).toInstance(
.toInstance(TASKSLIST_REF); Suppliers.<ReferenceType> ofInstance(CATALOG_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.VDC.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.TasksList.class).toInstance(
VDC_REF); Suppliers.<ReferenceType> ofInstance(TASKSLIST_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Network.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.VDC.class).toInstance(
NETWORK_REF); Suppliers.<ReferenceType> ofInstance(VDC_REF));
bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Network.class).toInstance(
Suppliers.<ReferenceType> ofInstance(NETWORK_REF));
} }
}); });

View File

@ -680,9 +680,9 @@ public class TerremarkVCloudExpressAsyncClientTest extends RestClientTest<Terrem
} }
@Override @Override
protected Org provideOrg(Supplier<Map<String, ? extends Org>> orgSupplier, protected Supplier<Org> provideOrg(Supplier<Map<String, ? extends Org>> orgSupplier,
@org.jclouds.trmk.vcloud_0_8.endpoints.Org ReferenceType defaultOrg) { @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
return ORG; return Suppliers.ofInstance(ORG);
} }
@Override @Override
@ -691,16 +691,18 @@ public class TerremarkVCloudExpressAsyncClientTest extends RestClientTest<Terrem
@Override @Override
protected void configure() { protected void configure() {
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Org.class).toInstance( TypeLiteral<Supplier<ReferenceType>> refTypeSupplier = new TypeLiteral<Supplier<ReferenceType>>() {
ORG_REF); };
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Catalog.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Org.class).toInstance(
CATALOG_REF); Suppliers.<ReferenceType> ofInstance(ORG_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.TasksList.class) bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Catalog.class).toInstance(
.toInstance(TASKSLIST_REF); Suppliers.<ReferenceType> ofInstance(CATALOG_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.VDC.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.TasksList.class).toInstance(
VDC_REF); Suppliers.<ReferenceType> ofInstance(TASKSLIST_REF));
bind(ReferenceType.class).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Network.class).toInstance( bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.VDC.class).toInstance(
NETWORK_REF); Suppliers.<ReferenceType> ofInstance(VDC_REF));
bind(refTypeSupplier).annotatedWith(org.jclouds.trmk.vcloud_0_8.endpoints.Network.class).toInstance(
Suppliers.<ReferenceType> ofInstance(NETWORK_REF));
} }
}); });