You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ab...@apache.org on 2013/08/29 20:31:49 UTC
[07/14] JCLOUDS-166,
JCLOUDS-167 - Removing async from vcloud and Terremark APIs/providers
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/config/TerremarkVCloudRestClientModule.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/config/TerremarkVCloudRestClientModule.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/config/TerremarkVCloudRestClientModule.java
deleted file mode 100644
index 8c012f8..0000000
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/config/TerremarkVCloudRestClientModule.java
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * 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.trmk.vcloud_0_8.config;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.Iterables.concat;
-import static com.google.common.collect.Iterables.getLast;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.collect.Maps.transformValues;
-import static com.google.common.collect.Maps.uniqueIndex;
-import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
-import static org.jclouds.rest.config.BinderUtils.bindSyncToAsyncHttpApi;
-import static org.jclouds.trmk.vcloud_0_8.reference.VCloudConstants.PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED;
-import static org.jclouds.util.Predicates2.retry;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.SortedMap;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.domain.Location;
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.annotation.ClientError;
-import org.jclouds.http.annotation.Redirection;
-import org.jclouds.http.annotation.ServerError;
-import org.jclouds.location.suppliers.ImplicitLocationSupplier;
-import org.jclouds.location.suppliers.LocationsSupplier;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.annotations.ApiVersion;
-import org.jclouds.rest.config.RestClientModule;
-import org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
-import org.jclouds.trmk.vcloud_0_8.VCloudToken;
-import org.jclouds.trmk.vcloud_0_8.compute.functions.FindLocationForResource;
-import org.jclouds.trmk.vcloud_0_8.domain.Catalog;
-import org.jclouds.trmk.vcloud_0_8.domain.CatalogItem;
-import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
-import org.jclouds.trmk.vcloud_0_8.domain.VAppTemplate;
-import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
-import org.jclouds.trmk.vcloud_0_8.domain.VDC;
-import org.jclouds.trmk.vcloud_0_8.endpoints.Keys;
-import org.jclouds.trmk.vcloud_0_8.endpoints.Org;
-import org.jclouds.trmk.vcloud_0_8.endpoints.OrgList;
-import org.jclouds.trmk.vcloud_0_8.endpoints.VCloudLogin;
-import org.jclouds.trmk.vcloud_0_8.functions.AllCatalogItemsInCatalog;
-import org.jclouds.trmk.vcloud_0_8.functions.AllCatalogItemsInOrg;
-import org.jclouds.trmk.vcloud_0_8.functions.AllCatalogsInOrg;
-import org.jclouds.trmk.vcloud_0_8.functions.AllVDCsInOrg;
-import org.jclouds.trmk.vcloud_0_8.functions.OrgsForLocations;
-import org.jclouds.trmk.vcloud_0_8.functions.OrgsForNames;
-import org.jclouds.trmk.vcloud_0_8.functions.VAppTemplatesForCatalogItems;
-import org.jclouds.trmk.vcloud_0_8.handlers.ParseTerremarkVCloudErrorFromHttpResponse;
-import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudLoginAsyncClient;
-import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudLoginClient;
-import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudVersionsAsyncClient;
-import org.jclouds.trmk.vcloud_0_8.internal.TerremarkVCloudVersionsClient;
-import org.jclouds.trmk.vcloud_0_8.location.DefaultVDC;
-import org.jclouds.trmk.vcloud_0_8.location.OrgAndVDCToLocationSupplier;
-import org.jclouds.trmk.vcloud_0_8.predicates.TaskSuccess;
-import org.jclouds.util.Strings2;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.common.collect.Maps;
-import com.google.inject.Injector;
-import com.google.inject.Provides;
-import com.google.inject.Scopes;
-import com.google.inject.TypeLiteral;
-
-public class TerremarkVCloudRestClientModule<S, A> extends RestClientModule<S, A> {
-
- public TerremarkVCloudRestClientModule() {
- }
-
- public TerremarkVCloudRestClientModule(Map<Class<?>, Class<?>> delegateMap) {
- super(delegateMap);
- }
-
- @Override
- protected void configure() {
- super.configure();
- bind(new TypeLiteral<Function<Iterable<? extends CatalogItem>, Iterable<? extends VAppTemplate>>>() {
- }).to(new TypeLiteral<VAppTemplatesForCatalogItems>() {
- });
- installDefaultVCloudEndpointsModule();
- bind(new TypeLiteral<Function<ReferenceType, Location>>() {
- }).to(new TypeLiteral<FindLocationForResource>() {
- });
- bind(new TypeLiteral<Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends Catalog>>>() {
- }).to(new TypeLiteral<AllCatalogsInOrg>() {
- });
- bind(new TypeLiteral<Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends VDC>>>() {
- }).to(new TypeLiteral<AllVDCsInOrg>() {
- });
- bind(new TypeLiteral<Function<Iterable<String>, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Org>>>() {
- }).to(new TypeLiteral<OrgsForNames>() {
- });
- bind(
- new TypeLiteral<Function<Iterable<? extends Location>, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Org>>>() {
- }).to(new TypeLiteral<OrgsForLocations>() {
- });
- bind(new TypeLiteral<Function<Catalog, Iterable<? extends CatalogItem>>>() {
- }).to(new TypeLiteral<AllCatalogItemsInCatalog>() {
- });
- bind(new TypeLiteral<Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends CatalogItem>>>() {
- }).to(new TypeLiteral<AllCatalogItemsInOrg>() {
- });
- bindSyncToAsyncHttpApi(binder(), TerremarkVCloudVersionsClient.class, TerremarkVCloudVersionsAsyncClient.class);
- bindSyncToAsyncHttpApi(binder(), TerremarkVCloudLoginClient.class, TerremarkVCloudLoginAsyncClient.class);
- }
-
- @Provides
- @Singleton
- @org.jclouds.trmk.vcloud_0_8.endpoints.VDC
- protected Supplier<Map<String, String>> provideVDCtoORG(
- Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgNameToOrgSupplier) {
- return Suppliers.compose(
- new Function<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>, Map<String, String>>() {
-
- @Override
- public Map<String, String> apply(Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org> arg0) {
- Builder<String, String> returnVal = ImmutableMap.builder();
- for (Entry<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org> orgr : arg0.entrySet()) {
- for (String vdc : orgr.getValue().getVDCs().keySet()) {
- returnVal.put(vdc, orgr.getKey());
- }
- }
- return returnVal.build();
- }
- }, orgNameToOrgSupplier);
-
- }
-
- @Provides
- @Singleton
- protected Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> provideOrgMapCache(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- OrgMapSupplier supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- @Provides
- @Singleton
- @OrgList
- protected Supplier<URI> provideOrgListURI(Supplier<VCloudSession> sessionSupplier) {
- return Suppliers.compose(new Function<VCloudSession, URI>() {
-
- @Override
- public URI apply(VCloudSession arg0) {
- return URI.create(getLast(arg0.getOrgs().values()).getHref().toASCIIString().replaceAll("org/.*", "org"));
- }
-
- @Override
- public String toString() {
- return "orgListURI()";
- }
-
- }, sessionSupplier);
- }
-
- @Singleton
- public static class OrgMapSupplier implements
- Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> {
- protected final Supplier<VCloudSession> sessionSupplier;
- protected final Function<Iterable<String>, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> organizationsForNames;
-
- @Inject
- protected OrgMapSupplier(Supplier<VCloudSession> sessionSupplier,
- Function<Iterable<String>, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> organizationsForNames) {
- this.sessionSupplier = sessionSupplier;
- this.organizationsForNames = organizationsForNames;
- }
-
- @Override
- public Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org> get() {
- return uniqueIndex(organizationsForNames.apply(sessionSupplier.get().getOrgs().keySet()), name);
- }
- }
-
- protected void installDefaultVCloudEndpointsModule() {
- install(new DefaultVCloudReferencesModule());
- }
-
- @Singleton
- public static class OrgCatalogSupplier implements
- Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> {
- protected final Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier;
- protected final Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> allCatalogsInOrg;
-
- @Inject
- protected OrgCatalogSupplier(
- Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier,
- Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> allCatalogsInOrg) {
- this.orgSupplier = orgSupplier;
- this.allCatalogsInOrg = allCatalogsInOrg;
- }
-
- @Override
- public Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>> get() {
- return transformValues(
- transformValues(orgSupplier.get(), allCatalogsInOrg),
- new Function<Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>() {
-
- @Override
- public Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog> apply(
- Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog> from) {
- return uniqueIndex(from, name);
- }
-
- });
- }
- }
-
- @VCloudToken
- @Provides
- String provideVCloudToken(Supplier<VCloudSession> cache) {
- return checkNotNull(cache.get().getVCloudToken(), "No token present in session");
- }
-
- @Provides
- @org.jclouds.trmk.vcloud_0_8.endpoints.Org
- @Singleton
- protected Supplier<Map<String, ReferenceType>> provideVDCtoORG(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
- AtomicReference<AuthorizationException> authException, OrgNameToOrgSupplier supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- @Provides
- @Singleton
- protected Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> provideURIToVDC(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- URItoVDC supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- @Singleton
- public static class URItoVDC implements Supplier<Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> {
- private final Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap;
-
- @Inject
- URItoVDC(Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> orgVDCMap) {
- this.orgVDCMap = orgVDCMap;
- }
-
- @Override
- public Map<URI, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> get() {
- return uniqueIndex(
- concat(transform(
- orgVDCMap.get().values(),
- new Function<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>() {
-
- @Override
- public Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> apply(
- Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> from) {
- return from.values();
- }
-
- })), new Function<org.jclouds.trmk.vcloud_0_8.domain.VDC, URI>() {
-
- @Override
- public URI apply(org.jclouds.trmk.vcloud_0_8.domain.VDC from) {
- return from.getHref();
- }
-
- });
- }
-
- }
-
- static final Function<ReferenceType, String> name = new Function<ReferenceType, String>() {
-
- @Override
- public String apply(ReferenceType from) {
- return from.getName();
- }
-
- };
-
-
- @Provides
- @Singleton
- @VCloudLogin
- protected Supplier<URI> provideAuthenticationURI(final TerremarkVCloudVersionsClient versionService,
- @ApiVersion final String version) {
- return new Supplier<URI>() {
-
- @Override
- public URI get() {
- SortedMap<String, URI> versions = versionService.getSupportedVersions();
- checkState(versions.size() > 0, "No versions present");
- checkState(versions.containsKey(version), "version " + version + " not present in: " + versions);
- return versions.get(version);
- }
-
- public String toString() {
- return "login()";
- }
- };
- }
-
-
- @Singleton
- private static class OrgNameToOrgSupplier implements Supplier<Map<String, ReferenceType>> {
- private final Supplier<VCloudSession> sessionSupplier;
-
- @Inject
- OrgNameToOrgSupplier(Supplier<VCloudSession> sessionSupplier) {
- this.sessionSupplier = sessionSupplier;
- }
-
- @Override
- public Map<String, ReferenceType> get() {
- return sessionSupplier.get().getOrgs();
- }
-
- }
-
- @Provides
- @Singleton
- protected Supplier<org.jclouds.trmk.vcloud_0_8.domain.Org> provideOrg(
- final Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier,
- @org.jclouds.trmk.vcloud_0_8.endpoints.Org Supplier<ReferenceType> defaultOrg) {
- 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
- @Singleton
- protected Predicate<URI> successTester(Injector injector,
- @Named(PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED) long completed) {
- return retry(injector.getInstance(TaskSuccess.class), completed);
- }
-
- @Provides
- @Singleton
- protected Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> provideOrgCatalogItemMapSupplierCache(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- OrgCatalogSupplier supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- @Provides
- @Singleton
- protected Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> provideOrgVDCSupplierCache(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- OrgVDCSupplier supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- @Singleton
- public static class OrgVDCSupplier implements
- Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>> {
- protected final Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier;
- private final Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> allVDCsInOrg;
-
- @Inject
- protected OrgVDCSupplier(
- Supplier<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Org>> orgSupplier,
- Function<org.jclouds.trmk.vcloud_0_8.domain.Org, Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> allVDCsInOrg) {
- this.orgSupplier = orgSupplier;
- this.allVDCsInOrg = allVDCsInOrg;
- }
-
- @Override
- public Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>> get() {
- return transformValues(
- transformValues(orgSupplier.get(), allVDCsInOrg),
- new Function<Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>() {
-
- @Override
- public Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> apply(
- Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> from) {
- return uniqueIndex(from, name);
- }
-
- });
- }
- }
-
- @Singleton
- public static class OrgCatalogItemSupplier implements
- Supplier<Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>> {
- protected final Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> catalogSupplier;
- protected final Function<org.jclouds.trmk.vcloud_0_8.domain.Catalog, Iterable<? extends CatalogItem>> allCatalogItemsInCatalog;
-
- @Inject
- protected OrgCatalogItemSupplier(
- Supplier<Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>>> catalogSupplier,
- Function<org.jclouds.trmk.vcloud_0_8.domain.Catalog, Iterable<? extends CatalogItem>> allCatalogItemsInCatalog) {
- this.catalogSupplier = catalogSupplier;
- this.allCatalogItemsInCatalog = allCatalogItemsInCatalog;
- }
-
- @Override
- public Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>> get() {
- return transformValues(
- catalogSupplier.get(),
- new Function<Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog>, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>() {
-
- @Override
- public Map<String, Map<String, ? extends CatalogItem>> apply(
- Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.Catalog> from) {
- return transformValues(
- from,
- new Function<org.jclouds.trmk.vcloud_0_8.domain.Catalog, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>() {
-
- @Override
- public Map<String, ? extends CatalogItem> apply(
- org.jclouds.trmk.vcloud_0_8.domain.Catalog from) {
- return uniqueIndex(allCatalogItemsInCatalog.apply(from), name);
- }
- });
-
- }
- });
- }
- }
-
- @Provides
- @Singleton
- protected Supplier<Map<String, Map<String, Map<String, ? extends org.jclouds.trmk.vcloud_0_8.domain.CatalogItem>>>> provideOrgCatalogItemSupplierCache(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- OrgCatalogItemSupplier supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- /**
- *
- * @return a listing of all orgs that the current user has access to.
- */
- @Provides
- @Org
- Map<String, ReferenceType> listOrgs(Supplier<VCloudSession> sessionSupplier) {
- return sessionSupplier.get().getOrgs();
- }
-
-
- @Provides
- @Singleton
- protected Supplier<VCloudSession> provideVCloudTokenCache(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
- AtomicReference<AuthorizationException> authException, final TerremarkVCloudLoginClient login) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException,
- new Supplier<VCloudSession>() {
-
- @Override
- public VCloudSession get() {
- return login.login();
- }
-
- @Override
- public String toString() {
- return Objects.toStringHelper(login).add("method", "login").toString();
- }
- }, seconds, TimeUnit.SECONDS);
- }
-
- @Singleton
- @Provides
- @Named("CreateInternetService")
- String provideCreateInternetService() throws IOException {
- return Strings2.toStringAndClose(getClass().getResourceAsStream("/CreateInternetService.xml"));
- }
-
- @Singleton
- @Provides
- @Named("CreateNodeService")
- String provideCreateNodeService() throws IOException {
- return Strings2.toStringAndClose(getClass().getResourceAsStream("/CreateNodeService.xml"));
- }
-
- @Override
- protected void bindErrorHandlers() {
- bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(ParseTerremarkVCloudErrorFromHttpResponse.class);
- bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(ParseTerremarkVCloudErrorFromHttpResponse.class);
- bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(ParseTerremarkVCloudErrorFromHttpResponse.class);
- }
-
- @Singleton
- public static class OrgNameToKeysListSupplier implements Supplier<Map<String, ReferenceType>> {
- protected final Supplier<VCloudSession> sessionSupplier;
- private final TerremarkVCloudClient client;
-
- @Inject
- protected OrgNameToKeysListSupplier(Supplier<VCloudSession> sessionSupplier, TerremarkVCloudClient client) {
- this.sessionSupplier = sessionSupplier;
- this.client = client;
- }
-
- @Override
- public Map<String, ReferenceType> get() {
- return Maps.transformValues(sessionSupplier.get().getOrgs(), new Function<ReferenceType, ReferenceType>() {
-
- @Override
- public ReferenceType apply(ReferenceType from) {
- return client.findOrgNamed(from.getName()).getKeys();
- }
-
- });
- }
- }
-
- @Provides
- @Singleton
- @Keys
- protected Supplier<Map<String, ReferenceType>> provideOrgToKeysListCache(
- @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
- OrgNameToKeysListSupplier supplier) {
- return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
- TimeUnit.SECONDS);
- }
-
- @Singleton
- @Provides
- @Named("CreateKey")
- String provideCreateKey() throws IOException {
- return Strings2.toStringAndClose(getClass().getResourceAsStream("/CreateKey.xml"));
- }
-
- @Override
- protected void installLocations() {
- super.installLocations();
- bind(ImplicitLocationSupplier.class).to(DefaultVDC.class).in(Scopes.SINGLETON);
- bind(LocationsSupplier.class).to(OrgAndVDCToLocationSupplier.class).in(Scopes.SINGLETON);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogItemsInCatalog.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogItemsInCatalog.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogItemsInCatalog.java
index 05f9839..dc3b7c2 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogItemsInCatalog.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogItemsInCatalog.java
@@ -17,16 +17,14 @@
package org.jclouds.trmk.vcloud_0_8.functions;
import static com.google.common.collect.Iterables.filter;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
+import static com.google.common.collect.Iterables.transform;
import javax.annotation.Resource;
import javax.inject.Inject;
-import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType;
import org.jclouds.trmk.vcloud_0_8.domain.Catalog;
import org.jclouds.trmk.vcloud_0_8.domain.CatalogItem;
@@ -34,8 +32,6 @@ import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -45,27 +41,24 @@ public class AllCatalogItemsInCatalog implements Function<Catalog, Iterable<? ex
@Resource
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- AllCatalogItemsInCatalog(TerremarkVCloudAsyncClient aclient,
- @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ AllCatalogItemsInCatalog(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
@Override
public Iterable<? extends CatalogItem> apply(Catalog from) {
- return transformParallel(filter(from.values(), new Predicate<ReferenceType>() {
+ return transform(filter(from.values(), new Predicate<ReferenceType>() {
public boolean apply(ReferenceType input) {
return input.getType().equals(TerremarkVCloudMediaType.CATALOGITEM_XML);
}
- }), new Function<ReferenceType, ListenableFuture<? extends CatalogItem>>() {
- public ListenableFuture<? extends CatalogItem> apply(ReferenceType from) {
+ }), new Function<ReferenceType, CatalogItem>() {
+ public CatalogItem apply(ReferenceType from) {
return aclient.getCatalogItem(from.getHref());
}
- }, userExecutor, null, logger, "catalogItems in " + from.getHref());
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogsInOrg.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogsInOrg.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogsInOrg.java
index d30dfe9..011fae8 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogsInOrg.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllCatalogsInOrg.java
@@ -16,23 +16,19 @@
*/
package org.jclouds.trmk.vcloud_0_8.functions;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
+import static com.google.common.collect.Iterables.transform;
import javax.annotation.Resource;
import javax.inject.Inject;
-import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.Catalog;
import org.jclouds.trmk.vcloud_0_8.domain.Org;
import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -42,22 +38,20 @@ public class AllCatalogsInOrg implements Function<Org, Iterable<? extends Catalo
@Resource
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- AllCatalogsInOrg(TerremarkVCloudAsyncClient aclient, @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ AllCatalogsInOrg(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
@Override
public Iterable<? extends Catalog> apply(final Org org) {
- return transformParallel(org.getCatalogs().values(),
- new Function<ReferenceType, ListenableFuture<? extends Catalog>>() {
- public ListenableFuture<? extends Catalog> apply(ReferenceType from) {
- return aclient.getCatalog(from.getHref());
- }
- }, userExecutor, null, logger, "catalogs in " + org.getName());
+ return transform(org.getCatalogs().values(),
+ new Function<ReferenceType, Catalog>() {
+ public Catalog apply(ReferenceType from) {
+ return aclient.getCatalog(from.getHref());
+ }
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllVDCsInOrg.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllVDCsInOrg.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllVDCsInOrg.java
index 39cd22b..9f8b775 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllVDCsInOrg.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/AllVDCsInOrg.java
@@ -16,22 +16,18 @@
*/
package org.jclouds.trmk.vcloud_0_8.functions;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
+import static com.google.common.collect.Iterables.transform;
import javax.annotation.Resource;
import javax.inject.Inject;
-import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.Org;
import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -41,23 +37,21 @@ public class AllVDCsInOrg implements Function<Org, Iterable<? extends org.jcloud
@Resource
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- AllVDCsInOrg(TerremarkVCloudAsyncClient aclient, @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ AllVDCsInOrg(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
@Override
public Iterable<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> apply(final Org org) {
- return transformParallel(org.getVDCs().values(),
- new Function<ReferenceType, ListenableFuture<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC>>() {
- public ListenableFuture<? extends org.jclouds.trmk.vcloud_0_8.domain.VDC> apply(ReferenceType from) {
- return aclient.getVDC(from.getHref());
- }
- }, userExecutor, null, logger, "vdcs in org " + org.getName());
+ return transform(org.getVDCs().values(),
+ new Function<ReferenceType, org.jclouds.trmk.vcloud_0_8.domain.VDC>() {
+ public org.jclouds.trmk.vcloud_0_8.domain.VDC apply(ReferenceType from) {
+ return aclient.getVDC(from.getHref());
+ }
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForLocations.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForLocations.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForLocations.java
index 745f5f5..ec0df6d 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForLocations.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForLocations.java
@@ -18,27 +18,22 @@ package org.jclouds.trmk.vcloud_0_8.functions;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
import java.net.URI;
import javax.annotation.Resource;
import javax.inject.Inject;
-import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.domain.Location;
import org.jclouds.domain.LocationScope;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.Org;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Sets;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -47,13 +42,11 @@ import com.google.common.util.concurrent.ListeningExecutorService;
public class OrgsForLocations implements Function<Iterable<? extends Location>, Iterable<? extends Org>> {
@Resource
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- OrgsForLocations(TerremarkVCloudAsyncClient aclient, @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ OrgsForLocations(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
/**
@@ -62,7 +55,7 @@ public class OrgsForLocations implements Function<Iterable<? extends Location>,
*/
@Override
public Iterable<? extends Org> apply(Iterable<? extends Location> from) {
- return transformParallel(Sets.newLinkedHashSet(transform(filter(from, new Predicate<Location>() {
+ return transform(Sets.newLinkedHashSet(transform(filter(from, new Predicate<Location>() {
public boolean apply(Location input) {
return input.getScope() == LocationScope.ZONE;
}
@@ -70,10 +63,10 @@ public class OrgsForLocations implements Function<Iterable<? extends Location>,
public URI apply(Location from) {
return URI.create(from.getParent().getId());
}
- })), new Function<URI, ListenableFuture<? extends Org>>() {
- public ListenableFuture<? extends Org> apply(URI from) {
+ })), new Function<URI, Org>() {
+ public Org apply(URI from) {
return aclient.getOrg(from);
}
- }, userExecutor, null, logger, "organizations for uris");
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForNames.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForNames.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForNames.java
index 41eedaa..5823bb8 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForNames.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/OrgsForNames.java
@@ -16,21 +16,17 @@
*/
package org.jclouds.trmk.vcloud_0_8.functions;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
+import static com.google.common.collect.Iterables.transform;
import javax.annotation.Resource;
import javax.inject.Inject;
-import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.Org;
import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -39,22 +35,20 @@ import com.google.common.util.concurrent.ListeningExecutorService;
public class OrgsForNames implements Function<Iterable<String>, Iterable<? extends Org>> {
@Resource
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- OrgsForNames(TerremarkVCloudAsyncClient aclient, @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ OrgsForNames(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
@Override
public Iterable<? extends Org> apply(Iterable<String> from) {
- return transformParallel(from, new Function<String, ListenableFuture<? extends Org>>() {
- public ListenableFuture<? extends Org> apply(String from) {
+ return transform(from, new Function<String, Org>() {
+ public Org apply(String from) {
return aclient.findOrgNamed(from);
}
- }, userExecutor, null, logger, "organizations for names");
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForCatalogItems.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForCatalogItems.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForCatalogItems.java
index 3360b8f..bd407fb 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForCatalogItems.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForCatalogItems.java
@@ -17,25 +17,22 @@
package org.jclouds.trmk.vcloud_0_8.functions;
import static com.google.common.collect.Iterables.filter;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
+import static com.google.common.collect.Iterables.transform;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType;
import org.jclouds.trmk.vcloud_0_8.domain.CatalogItem;
import org.jclouds.trmk.vcloud_0_8.domain.VAppTemplate;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -46,27 +43,24 @@ public class VAppTemplatesForCatalogItems implements
@Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- VAppTemplatesForCatalogItems(TerremarkVCloudAsyncClient aclient,
- @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ VAppTemplatesForCatalogItems(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
@Override
public Iterable<? extends VAppTemplate> apply(Iterable<? extends CatalogItem> from) {
- return transformParallel(filter(from, new Predicate<CatalogItem>() {
+ return transform(filter(from, new Predicate<CatalogItem>() {
public boolean apply(CatalogItem input) {
return input.getEntity().getType().equals(TerremarkVCloudMediaType.VAPPTEMPLATE_XML);
}
- }), new Function<CatalogItem, ListenableFuture<? extends VAppTemplate>>() {
- public ListenableFuture<? extends VAppTemplate> apply(CatalogItem from) {
+ }), new Function<CatalogItem, VAppTemplate>() {
+ public VAppTemplate apply(CatalogItem from) {
return aclient.getVAppTemplate(from.getEntity().getHref());
}
- }, userExecutor, null, logger, "vappTemplates in");
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForResourceEntities.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForResourceEntities.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForResourceEntities.java
index c62f8ab..6a5055c 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForResourceEntities.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/functions/VAppTemplatesForResourceEntities.java
@@ -18,25 +18,22 @@ package org.jclouds.trmk.vcloud_0_8.functions;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.filter;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
+import static com.google.common.collect.Iterables.transform;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.Constants;
import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType;
import org.jclouds.trmk.vcloud_0_8.domain.ReferenceType;
import org.jclouds.trmk.vcloud_0_8.domain.VAppTemplate;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
/**
* @author Adrian Cole
@@ -47,27 +44,24 @@ public class VAppTemplatesForResourceEntities implements
@Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
public Logger logger = Logger.NULL;
- private final TerremarkVCloudAsyncClient aclient;
- private final ListeningExecutorService userExecutor;
+ private final TerremarkVCloudApi aclient;
@Inject
- VAppTemplatesForResourceEntities(TerremarkVCloudAsyncClient aclient,
- @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
+ VAppTemplatesForResourceEntities(TerremarkVCloudApi aclient) {
this.aclient = aclient;
- this.userExecutor = userExecutor;
}
@Override
public Iterable<? extends VAppTemplate> apply(Iterable<? extends ReferenceType> from) {
- return transformParallel(filter(checkNotNull(from, "named resources"), new Predicate<ReferenceType>() {
+ return transform(filter(checkNotNull(from, "named resources"), new Predicate<ReferenceType>() {
public boolean apply(ReferenceType input) {
return input.getType().equals(TerremarkVCloudMediaType.VAPPTEMPLATE_XML);
}
- }), new Function<ReferenceType, ListenableFuture<? extends VAppTemplate>>() {
- public ListenableFuture<? extends VAppTemplate> apply(ReferenceType from) {
+ }), new Function<ReferenceType, VAppTemplate>() {
+ public VAppTemplate apply(ReferenceType from) {
return aclient.getVAppTemplate(from.getHref());
}
- }, userExecutor, null, logger, "vappTemplates in");
+ });
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudApiMetadata.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudApiMetadata.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudApiMetadata.java
index aa3c2b0..3c2464b 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudApiMetadata.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudApiMetadata.java
@@ -31,21 +31,22 @@ import java.util.Properties;
import org.jclouds.apis.ApiMetadata;
import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.rest.internal.BaseRestApiMetadata;
+import org.jclouds.rest.internal.BaseHttpApiMetadata;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
/**
* Implementation of {@link ApiMetadata} for Terremark's VCloud api.
* @author Adrian Cole
*/
-public abstract class TerremarkVCloudApiMetadata extends BaseRestApiMetadata {
+public abstract class TerremarkVCloudApiMetadata extends BaseHttpApiMetadata<TerremarkVCloudApi> {
protected TerremarkVCloudApiMetadata(Builder<?> builder) {
super(builder);
}
public static Properties defaultProperties() {
- Properties properties = BaseRestApiMetadata.defaultProperties();
+ Properties properties = BaseHttpApiMetadata.defaultProperties();
properties.setProperty(PROPERTY_VCLOUD_VERSION_SCHEMA, "0.8");
properties.setProperty(PROPERTY_SESSION_INTERVAL, 8 * 60 + "");
properties.setProperty(PROPERTY_VCLOUD_XML_SCHEMA, "http://vcloud.safesecureweb.com/ns/vcloud.xsd");
@@ -61,10 +62,9 @@ public abstract class TerremarkVCloudApiMetadata extends BaseRestApiMetadata {
return properties;
}
- public abstract static class Builder<B extends Builder<B>> extends BaseRestApiMetadata.Builder<B> {
+ public abstract static class Builder<B extends Builder<B>> extends BaseHttpApiMetadata.Builder<TerremarkVCloudApi, B> {
- protected Builder(Class<?> syncClient, Class<?> asyncClient) {
- super(syncClient, asyncClient);
+ protected Builder() {
identityName("Email")
.credentialName("Password")
.version("0.8")
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApi.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApi.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApi.java
new file mode 100644
index 0000000..e862727
--- /dev/null
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginApi.java
@@ -0,0 +1,40 @@
+/*
+ * 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.trmk.vcloud_0_8.internal;
+
+import java.io.Closeable;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+
+import org.jclouds.http.filters.BasicAuthentication;
+import org.jclouds.rest.annotations.Endpoint;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType;
+import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
+import org.jclouds.trmk.vcloud_0_8.functions.ParseLoginResponseFromHeaders;
+
+@Endpoint(org.jclouds.trmk.vcloud_0_8.endpoints.VCloudLogin.class)
+@RequestFilters(BasicAuthentication.class)
+public interface TerremarkVCloudLoginApi extends Closeable {
+
+ @POST
+ @ResponseParser(ParseLoginResponseFromHeaders.class)
+ @Consumes(TerremarkVCloudMediaType.ORGLIST_XML)
+ VCloudSession login();
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClient.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClient.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClient.java
deleted file mode 100644
index f21bb7f..0000000
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginAsyncClient.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.trmk.vcloud_0_8.internal;
-
-import java.io.Closeable;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.POST;
-
-import org.jclouds.http.filters.BasicAuthentication;
-import org.jclouds.rest.annotations.Endpoint;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType;
-import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
-import org.jclouds.trmk.vcloud_0_8.functions.ParseLoginResponseFromHeaders;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Establishes a context with a VCloud endpoint.
- * <p/>
- *
- * @see <a href="https://community.vcloudexpress.terremark.com/en-us/discussion_forums/f/60.aspx" />
- * @author Adrian Cole
- */
-@Endpoint(org.jclouds.trmk.vcloud_0_8.endpoints.VCloudLogin.class)
-@RequestFilters(BasicAuthentication.class)
-public interface TerremarkVCloudLoginAsyncClient extends Closeable {
-
- /**
- * This request returns a token to use in subsequent requests. After ten minutes of inactivity,
- * the token expires and you have to request a new token with this call.
- */
- @POST
- @ResponseParser(ParseLoginResponseFromHeaders.class)
- @Consumes(TerremarkVCloudMediaType.ORGLIST_XML)
- ListenableFuture<VCloudSession> login();
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginClient.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginClient.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginClient.java
deleted file mode 100644
index 9596956..0000000
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudLoginClient.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.trmk.vcloud_0_8.internal;
-
-import java.io.Closeable;
-
-import org.jclouds.trmk.vcloud_0_8.domain.VCloudSession;
-
-public interface TerremarkVCloudLoginClient extends Closeable {
-
- VCloudSession login();
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsApi.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsApi.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsApi.java
new file mode 100644
index 0000000..979d948
--- /dev/null
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsApi.java
@@ -0,0 +1,35 @@
+/*
+ * 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.trmk.vcloud_0_8.internal;
+
+import java.io.Closeable;
+import java.net.URI;
+import java.util.SortedMap;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+
+import org.jclouds.rest.annotations.XMLResponseParser;
+import org.jclouds.trmk.vcloud_0_8.xml.SupportedVersionsHandler;
+
+public interface TerremarkVCloudVersionsApi extends Closeable {
+
+ @GET
+ @XMLResponseParser(SupportedVersionsHandler.class)
+ @Path("/versions")
+ SortedMap<String, URI> getSupportedVersions();
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsAsyncClient.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsAsyncClient.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsAsyncClient.java
deleted file mode 100644
index dfe8e8c..0000000
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsAsyncClient.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.trmk.vcloud_0_8.internal;
-
-import java.io.Closeable;
-import java.net.URI;
-import java.util.SortedMap;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-
-import org.jclouds.rest.annotations.XMLResponseParser;
-import org.jclouds.trmk.vcloud_0_8.xml.SupportedVersionsHandler;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Establishes a context with a VCloud endpoint.
- * <p/>
- *
- * @see <a href="https://community.vcloudexpress.terremark.com/en-us/discussion_forums/f/60.aspx" />
- * @author Adrian Cole
- */
-public interface TerremarkVCloudVersionsAsyncClient extends Closeable {
-
- /**
- * Retrieve information for supported versions
- */
- @GET
- @XMLResponseParser(SupportedVersionsHandler.class)
- @Path("/versions")
- ListenableFuture<SortedMap<String, URI>> getSupportedVersions();
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsClient.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsClient.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsClient.java
deleted file mode 100644
index 0e386b4..0000000
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/internal/TerremarkVCloudVersionsClient.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.trmk.vcloud_0_8.internal;
-
-import java.io.Closeable;
-import java.net.URI;
-import java.util.SortedMap;
-public interface TerremarkVCloudVersionsClient extends Closeable {
-
- SortedMap<String, URI> getSupportedVersions();
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/a61ad06c/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/predicates/TaskSuccess.java
----------------------------------------------------------------------
diff --git a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/predicates/TaskSuccess.java b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/predicates/TaskSuccess.java
index a8767f1..62b88d7 100644
--- a/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/predicates/TaskSuccess.java
+++ b/common/trmk/src/main/java/org/jclouds/trmk/vcloud_0_8/predicates/TaskSuccess.java
@@ -22,7 +22,7 @@ import javax.annotation.Resource;
import javax.inject.Singleton;
import org.jclouds.logging.Logger;
-import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudClient;
+import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudApi;
import org.jclouds.trmk.vcloud_0_8.domain.Task;
import org.jclouds.trmk.vcloud_0_8.domain.TaskStatus;
@@ -38,13 +38,13 @@ import com.google.inject.Inject;
@Singleton
public class TaskSuccess implements Predicate<URI> {
- private final TerremarkVCloudClient client;
+ private final TerremarkVCloudApi client;
@Resource
protected Logger logger = Logger.NULL;
@Inject
- public TaskSuccess(TerremarkVCloudClient client) {
+ public TaskSuccess(TerremarkVCloudApi client) {
this.client = client;
}