Repository: jclouds Updated Branches: refs/heads/master 9128448de -> dd743e58b
Remove Rackspace Cloud Identity v1.1 Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/dd743e58 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/dd743e58 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/dd743e58 Branch: refs/heads/master Commit: dd743e58b148a20fe182c6ee0e855960e7aa7b5b Parents: 9128448 Author: Everett Toews <[email protected]> Authored: Wed Nov 19 17:37:59 2014 -0600 Committer: Adrian Cole <[email protected]> Committed: Thu Nov 20 07:44:47 2014 -0800 ---------------------------------------------------------------------- .../cloudidentity/v1_1/AuthenticationApi.java | 48 ----- .../binders/BindCredentialsToJsonPayload.java | 48 ----- .../v1_1/config/Authentication.java | 31 --- .../config/AuthenticationServiceModule.java | 117 ----------- .../cloudidentity/v1_1/domain/Auth.java | 123 ------------ .../cloudidentity/v1_1/domain/Endpoint.java | 198 ------------------- .../cloudidentity/v1_1/domain/Token.java | 137 ------------- .../v1_1/functions/EndpointToRegion.java | 27 --- .../v1_1/functions/EndpointToSupplierURI.java | 29 --- .../functions/PublicURLOrInternalIfNull.java | 39 ---- .../RegionFirstPartOfDNSNameOrProvider.java | 47 ----- .../v1_1/handlers/RetryOnRenew.java | 133 ------------- ...RegionIdToURIFromAuthForServiceSupplier.java | 65 ------ .../suppliers/V1DefaultRegionIdSupplier.java | 83 -------- .../PublicURLOrInternalIfNullTest.java | 43 ---- .../RegionFirstPartOfDNSNameOrProviderTest.java | 47 ----- .../v1_1/handlers/RetryOnRenewTest.java | 165 ---------------- .../BaseKeystoneRestClientExpectTest.java | 62 ------ .../cloudidentity/v1_1/parse/ParseAuthTest.java | 77 -------- ...onIdToURIFromAuthForServiceSupplierTest.java | 69 ------- .../V1DefaultRegionIdSupplierTest.java | 61 ------ .../src/test/resources/auth1_1.json | 25 --- 22 files changed, 1674 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/AuthenticationApi.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/AuthenticationApi.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/AuthenticationApi.java deleted file mode 100644 index a3128fb..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/AuthenticationApi.java +++ /dev/null @@ -1,48 +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.rackspace.cloudidentity.v1_1; - -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.core.MediaType; - -import org.jclouds.rackspace.cloudidentity.v1_1.binders.BindCredentialsToJsonPayload; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rest.annotations.MapBinder; -import org.jclouds.rest.annotations.SelectJson; - -import com.google.inject.name.Named; - -/** - * Provides access to the Rackspace Cloud Identity v1.1 API. - */ -@Consumes(MediaType.APPLICATION_JSON) -@Path("/v1.1/auth") -public interface AuthenticationApi { - - /** - * Authenticate to generate a token. - * - * @return access with token - */ - @Named("authenticate") - @POST - @SelectJson("auth") - @MapBinder(BindCredentialsToJsonPayload.class) - Auth authenticate(String username, String key); -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/binders/BindCredentialsToJsonPayload.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/binders/BindCredentialsToJsonPayload.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/binders/BindCredentialsToJsonPayload.java deleted file mode 100644 index d2e6526..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/binders/BindCredentialsToJsonPayload.java +++ /dev/null @@ -1,48 +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.rackspace.cloudidentity.v1_1.binders; - -import java.util.Map; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.jclouds.http.HttpRequest; -import org.jclouds.json.Json; -import org.jclouds.rest.MapBinder; -import org.jclouds.rest.binders.BindToJsonPayload; - -import com.google.common.collect.ImmutableMap; - -@Singleton -public class BindCredentialsToJsonPayload extends BindToJsonPayload implements MapBinder { - @Inject - public BindCredentialsToJsonPayload(Json jsonBinder) { - super(jsonBinder); - } - - @Override - public <R extends HttpRequest> R bindToRequest(R request, Object toBind) { - throw new IllegalStateException("BindCredentialsToJsonPayload needs parameters"); - } - - @Override - public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) { - return super.bindToRequest(request, ImmutableMap.of("credentials", postParams)); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/Authentication.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/Authentication.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/Authentication.java deleted file mode 100644 index ed4fda1..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/Authentication.java +++ /dev/null @@ -1,31 +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.rackspace.cloudidentity.v1_1.config; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import javax.inject.Qualifier; - -@Retention(value = RetentionPolicy.RUNTIME) -@Target(value = { ElementType.TYPE, ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) -@Qualifier -public @interface Authentication { - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/AuthenticationServiceModule.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/AuthenticationServiceModule.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/AuthenticationServiceModule.java deleted file mode 100644 index f26d4c2..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/config/AuthenticationServiceModule.java +++ /dev/null @@ -1,117 +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.rackspace.cloudidentity.v1_1.config; - -import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL; -import static org.jclouds.rest.config.BinderUtils.bindHttpApi; - -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.jclouds.domain.Credentials; -import org.jclouds.http.HttpRetryHandler; -import org.jclouds.http.annotation.ClientError; -import org.jclouds.location.Provider; -import org.jclouds.location.suppliers.ImplicitRegionIdSupplier; -import org.jclouds.location.suppliers.RegionIdToURISupplier; -import org.jclouds.rackspace.cloudidentity.v1_1.AuthenticationApi; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rackspace.cloudidentity.v1_1.handlers.RetryOnRenew; -import org.jclouds.rackspace.cloudidentity.v1_1.suppliers.RegionIdToURIFromAuthForServiceSupplier; -import org.jclouds.rackspace.cloudidentity.v1_1.suppliers.V1DefaultRegionIdSupplier; - -import com.google.common.base.Supplier; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.inject.AbstractModule; -import com.google.inject.Provides; -import com.google.inject.assistedinject.FactoryModuleBuilder; -import com.google.inject.name.Named; - -public class AuthenticationServiceModule extends AbstractModule { - - @Override - protected void configure() { - // ServiceClient is used directly for filters and retry handlers, so let's bind it explicitly - bindHttpApi(binder(), AuthenticationApi.class); - install(new FactoryModuleBuilder().implement(RegionIdToURISupplier.class, - RegionIdToURIFromAuthForServiceSupplier.class).build(RegionIdToURISupplier.Factory.class)); - install(new FactoryModuleBuilder().implement(ImplicitRegionIdSupplier.class, V1DefaultRegionIdSupplier.class) - .build(V1DefaultRegionIdSupplier.Factory.class)); - bind(HttpRetryHandler.class).annotatedWith(ClientError.class).to(RetryOnRenew.class); - } - - /** - * borrowing concurrency code to ensure that caching takes place properly - */ - @Provides - @Singleton - @Authentication - protected Supplier<String> provideAuthenticationTokenCache(final Supplier<Auth> supplier) - throws InterruptedException, ExecutionException, TimeoutException { - return new Supplier<String>() { - public String get() { - return supplier.get().getToken().getId(); - } - }; - } - - @Singleton - public static class GetAuth extends CacheLoader<Credentials, Auth> { - - private final AuthenticationApi client; - - @Inject - public GetAuth(final AuthenticationApi client) { - this.client = client; - } - - @Override - public Auth load(Credentials input) { - return client.authenticate(input.identity, input.credential); - } - - @Override - public String toString() { - return "authenticate()"; - } - } - - @Provides - @Singleton - protected LoadingCache<Credentials, Auth> provideAuthCache(GetAuth getAuth, - @Named(PROPERTY_SESSION_INTERVAL) long sessionInterval) { - return CacheBuilder.newBuilder().expireAfterWrite(sessionInterval, TimeUnit.SECONDS).build(getAuth); - } - - @Provides - @Singleton - protected Supplier<Auth> provideAuthSupplier(final LoadingCache<Credentials, Auth> cache, - @Provider final Supplier<Credentials> creds) { - return new Supplier<Auth>() { - @Override - public Auth get() { - return cache.getUnchecked(creds.get()); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Auth.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Auth.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Auth.java deleted file mode 100644 index 04bdba5..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Auth.java +++ /dev/null @@ -1,123 +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.rackspace.cloudidentity.v1_1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; - -/** - * Represents an Auth response. - */ -public class Auth implements Comparable<Auth> { - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromAccess(this); - } - - public static class Builder { - protected Token token; - protected Multimap<String, Endpoint> serviceCatalog = ImmutableMultimap.of(); - - /** - * @see Auth#getToken() - */ - public Builder token(Token token) { - this.token = checkNotNull(token, "token"); - return this; - } - - /** - * @see Auth#getServiceCatalog() - */ - public Builder serviceCatalog(Multimap<String, Endpoint> serviceCatalog) { - this.serviceCatalog = ImmutableMultimap.copyOf(checkNotNull(serviceCatalog, "serviceCatalog")); - return this; - } - - public Auth build() { - return new Auth(token, serviceCatalog); - } - - public Builder fromAccess(Auth from) { - return token(from.getToken()).serviceCatalog(from.getServiceCatalog()); - } - } - - protected final Token token; - protected final Multimap<String, Endpoint> serviceCatalog; - - public Auth(Token token, Multimap<String, Endpoint> serviceCatalog) { - this.token = checkNotNull(token, "token"); - this.serviceCatalog = ImmutableMultimap.copyOf(checkNotNull(serviceCatalog, "serviceCatalog")); - } - - /** - * TODO - */ - public Token getToken() { - return token; - } - - /** - * TODO - */ - public Multimap<String, Endpoint> getServiceCatalog() { - return serviceCatalog; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof Auth) { - final Auth other = Auth.class.cast(object); - return equal(token, other.token) && equal(serviceCatalog, other.serviceCatalog); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(token, serviceCatalog); - } - - @Override - public String toString() { - return toStringHelper("").add("token", token).add("serviceCatalog", serviceCatalog).toString(); - } - - @Override - public int compareTo(Auth that) { - if (that == null) - return 1; - if (this == that) - return 0; - return this.token.compareTo(that.token); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Endpoint.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Endpoint.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Endpoint.java deleted file mode 100644 index 020ed85..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Endpoint.java +++ /dev/null @@ -1,198 +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.rackspace.cloudidentity.v1_1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.net.URI; - -import org.jclouds.javax.annotation.Nullable; - -import com.google.common.base.Objects; - -/** - * An network-accessible address, usually described by URL, where a service may - * be accessed. If using an extension for templates, you can create an endpoint - * template, which represents the templates of all the consumable services that - * are available across the regions. - * - */ -public class Endpoint implements Comparable<Endpoint> { - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromEndpoint(this); - } - - public static class Builder { - - protected boolean v1Default; - protected String region; - protected URI publicURL; - protected URI internalURL; - - /** - * @see Endpoint#isV1Default() - */ - public Builder v1Default(boolean v1Default) { - this.v1Default = v1Default; - return this; - } - - /** - * @see Endpoint#getRegion() - */ - public Builder region(String region) { - this.region = checkNotNull(region, "region"); - return this; - } - - /** - * @see Endpoint#getPublicURL() - */ - public Builder publicURL(URI publicURL) { - this.publicURL = checkNotNull(publicURL, "publicURL"); - return this; - } - - /** - * @see Endpoint#getTenantId() - */ - public Builder internalURL(@Nullable URI internalURL) { - this.internalURL = internalURL; - return this; - } - - public Endpoint build() { - return new Endpoint(v1Default, region, publicURL, internalURL); - } - - public Builder fromEndpoint(Endpoint from) { - return v1Default(from.isV1Default()).region(from.getRegion()).publicURL(from.getPublicURL()) - .internalURL(from.getInternalURL()); - } - } - - protected Endpoint() { - // we want serializers like Gson to work w/o using sun.misc.Unsafe, - // prohibited in GAE. This also implies fields are not final. - // see http://code.google.com/p/jclouds/issues/detail?id=925 - } - - protected boolean v1Default; - protected String region; - protected URI publicURL; - protected URI internalURL; - - protected Endpoint(boolean v1Default, @Nullable String region, @Nullable URI publicURL, @Nullable URI internalURL) { - this.v1Default = v1Default; - this.region = region; - this.publicURL = publicURL; - this.internalURL = internalURL; - } - - /** - * The v1Default attribute denotes that an endpoint is being returned in - * version 1.0 of the Cloud Authentication Service. The default value of - * v1Default is false; clients should assume the value is false when the - * attribute is missing. Auth 1.0 does not offer support for regional - * endpoints and therefore only returns one endpoint per service. Resources - * stored in endpoints where v1Default is false will not be seen by Auth 1.0 - * clients. - * - * @return whether this endpoint is visible to v1.0 clients - */ - public boolean isV1Default() { - return v1Default; - } - - /** - * A service may expose endpoints in different regions. Regional endpoints - * allow clients to provision resources in a manner that provides high - * availability. <br/> - * <h3>Note</h3> Some services are not region-specific. These services supply - * a single non-regional endpoint and do not provide access to internal URLs. - * - * @return the region of the endpoint - */ - @Nullable - public String getRegion() { - return region; - } - - /** - * A public URL is accessible from anywhere. Access to a public URL usually incurs traffic - * charges. - * - * @return the public endpoint of the service - */ - @Nullable - public URI getPublicURL() { - return publicURL; - } - - /** - * Internal URLs are only accessible to services within the same region. - * Access to an internal URL is free of charge. - * - * @return the internal url of the endpoint - */ - @Nullable - public URI getInternalURL() { - return internalURL; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof Endpoint) { - final Endpoint other = Endpoint.class.cast(object); - return equal(v1Default, other.v1Default) && equal(region, other.region) && equal(publicURL, other.publicURL) - && equal(internalURL, other.internalURL); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(v1Default, region, publicURL, internalURL); - } - - @Override - public String toString() { - return toStringHelper("").add("v1Default", v1Default).add("region", region).add("publicURL", publicURL) - .add("internalURL", internalURL).toString(); - } - - @Override - public int compareTo(Endpoint that) { - if (that == null) - return 1; - if (this == that) - return 0; - return this.publicURL.compareTo(that.publicURL); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Token.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Token.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Token.java deleted file mode 100644 index 9d9845b..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/domain/Token.java +++ /dev/null @@ -1,137 +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.rackspace.cloudidentity.v1_1.domain; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Objects.toStringHelper; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Date; - -import com.google.common.base.Objects; - -/** - * Tokens are valid for a finite duration. The expires attribute denotes the - * time after which the token will automatically become invalid. A token may be - * manually revoked before the time identified by the expires attribute; expires - * predicts a token's maximum possible lifespan but does not guarantee that it - * will reach that lifespan. Clients are encouraged to cache a token until it - * expires. - */ -public class Token implements Comparable<Token> { - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromToken(this); - } - - public static class Builder { - protected String id; - protected Date expires; - - /** - * @see Token#getId() - */ - public Builder id(String id) { - this.id = checkNotNull(id, "id"); - return this; - } - - /** - * @see Token#getExpires() - */ - public Builder expires(Date expires) { - this.expires = checkNotNull(expires, "expires"); - return this; - } - - public Token build() { - return new Token(id, expires); - } - - public Builder fromToken(Token from) { - return id(from.getId()).expires(from.getExpires()); - } - } - - protected Token() { - // we want serializers like Gson to work w/o using sun.misc.Unsafe, - // prohibited in GAE. This also implies fields are not final. - // see http://code.google.com/p/jclouds/issues/detail?id=925 - } - - protected String id; - protected Date expires; - - public Token(String id, Date expires) { - this.id = checkNotNull(id, "id"); - this.expires = checkNotNull(expires, "expires"); - } - - /** - * When providing an ID, it is assumed that the token exists in the current - * OpenStack deployment - * - * @return the id of the token in the current OpenStack deployment - */ - public String getId() { - return id; - } - - /** - * @return the expires of the token - */ - public Date getExpires() { - return expires; - } - - @Override - public boolean equals(Object object) { - if (this == object) { - return true; - } - if (object instanceof Token) { - final Token other = Token.class.cast(object); - return equal(id, other.id) && equal(expires, other.expires); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Objects.hashCode(id, expires); - } - - @Override - public String toString() { - return toStringHelper("").add("id", id).add("expires", expires).toString(); - } - - @Override - public int compareTo(Token that) { - if (that == null) - return 1; - if (this == that) - return 0; - return this.id.compareTo(that.id); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToRegion.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToRegion.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToRegion.java deleted file mode 100644 index e75a8f5..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToRegion.java +++ /dev/null @@ -1,27 +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.rackspace.cloudidentity.v1_1.functions; - -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; - -import com.google.common.base.Function; -import com.google.inject.ImplementedBy; - -@ImplementedBy(RegionFirstPartOfDNSNameOrProvider.class) -public interface EndpointToRegion extends Function<Endpoint, String> { - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToSupplierURI.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToSupplierURI.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToSupplierURI.java deleted file mode 100644 index 12d1d2d..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/EndpointToSupplierURI.java +++ /dev/null @@ -1,29 +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.rackspace.cloudidentity.v1_1.functions; - -import java.net.URI; - -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; - -import com.google.common.base.Function; -import com.google.common.base.Supplier; -import com.google.inject.ImplementedBy; - -@ImplementedBy(PublicURLOrInternalIfNull.class) -public interface EndpointToSupplierURI extends Function<Endpoint, Supplier<URI>> { -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNull.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNull.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNull.java deleted file mode 100644 index b4cd7a4..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNull.java +++ /dev/null @@ -1,39 +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.rackspace.cloudidentity.v1_1.functions; - -import java.net.URI; - -import javax.inject.Singleton; - -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; - -@Singleton -public class PublicURLOrInternalIfNull implements EndpointToSupplierURI { - // TODO: check accessibility and prioritize private first - @Override - public Supplier<URI> apply(Endpoint input) { - return Suppliers.ofInstance(input.getPublicURL() != null ? input.getPublicURL() : input.getInternalURL()); - } - - public String toString() { - return "supplyPublicURL()"; - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProvider.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProvider.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProvider.java deleted file mode 100644 index d6ed6b0..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProvider.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.rackspace.cloudidentity.v1_1.functions; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.jclouds.location.Provider; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; - -import com.google.common.net.InternetDomainName; - -@Singleton -public class RegionFirstPartOfDNSNameOrProvider implements EndpointToRegion { - private final String provider; - - @Inject - RegionFirstPartOfDNSNameOrProvider(@Provider String provider) { - this.provider = provider; - } - - @Override - public String apply(Endpoint input) { - if (input.getRegion() != null) - return input.getRegion(); - String host = input.getPublicURL().getHost(); - if (InternetDomainName.isValid(host)) { - InternetDomainName domain = InternetDomainName.from(host); - return domain.parts().get(0); - } - return provider; - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenew.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenew.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenew.java deleted file mode 100644 index 5df757a..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenew.java +++ /dev/null @@ -1,133 +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.rackspace.cloudidentity.v1_1.handlers; - -import static org.jclouds.http.HttpUtils.closeClientButKeepContentStream; -import static org.jclouds.http.HttpUtils.releasePayload; - -import java.util.concurrent.TimeUnit; - -import javax.annotation.Resource; -import javax.inject.Named; - -import org.jclouds.Constants; -import org.jclouds.domain.Credentials; -import org.jclouds.http.HttpCommand; -import org.jclouds.http.HttpResponse; -import org.jclouds.http.HttpRetryHandler; -import org.jclouds.http.handlers.BackoffLimitedRetryHandler; -import org.jclouds.logging.Logger; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.Multimap; -import com.google.common.util.concurrent.Uninterruptibles; -import com.google.inject.Inject; -import com.google.inject.Singleton; - -/** - * This will parse and set an appropriate exception on the command object. - */ -@Singleton -public class RetryOnRenew implements HttpRetryHandler { - @VisibleForTesting - @Inject(optional = true) - @Named(Constants.PROPERTY_MAX_RETRIES) - static int NUM_RETRIES = 5; - - public final String AUTH_USER = "X-Auth-User"; - public final String AUTH_KEY = "X-Auth-Key"; - public final String AUTH_TOKEN = "X-Auth-Token"; - - @Resource - protected Logger logger = Logger.NULL; - - private final LoadingCache<Credentials, Auth> authenticationResponseCache; - - private final BackoffLimitedRetryHandler backoffHandler; - - @Inject - protected RetryOnRenew(LoadingCache<Credentials, Auth> authenticationResponseCache, - BackoffLimitedRetryHandler backoffHandler) { - this.authenticationResponseCache = authenticationResponseCache; - this.backoffHandler = backoffHandler; - } - - /* - * The reason retries need to be tracked is that it is possible that a token - * can be expired at any time. The reason we track by request is that only - * some requests might return a 401 (such as temporary URLs). However - * consistent failures of the magnitude this code tracks should indicate a - * problem. - */ - private static final Cache<HttpCommand, Integer> retryCountMap = CacheBuilder - .newBuilder().expireAfterWrite(5, TimeUnit.MINUTES).build(); - - @Override - public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) { - boolean retry = false; // default - try { - switch (response.getStatusCode()) { - case 401: - // Do not retry on 401 from authentication request - Multimap<String, String> headers = command.getCurrentRequest().getHeaders(); - if (headers != null && headers.containsKey(AUTH_USER) - && headers.containsKey(AUTH_KEY) && !headers.containsKey(AUTH_TOKEN)) { - retry = false; - } else { - closeClientButKeepContentStream(response); - // This is not an authentication request returning 401 - // Check if we already had seen this request - Integer count = retryCountMap.getIfPresent(command); - - if (count == null) { - // First time this non-authentication request failed - logger.debug("invalidating authentication token - first time for %s", command); - retryCountMap.put(command, 1); - authenticationResponseCache.invalidateAll(); - retry = true; - } else { - // This request has failed before - if (count + 1 >= NUM_RETRIES) { - logger.debug("too many 401s - giving up after: %s for %s", count, command); - retry = false; - } else { - // Retry just in case - logger.debug("invalidating authentication token - retry %s for %s", count, command); - retryCountMap.put(command, count + 1); - // Wait between retries - authenticationResponseCache.invalidateAll(); - Uninterruptibles.sleepUninterruptibly(5, TimeUnit.SECONDS); - retry = true; - } - } - } - break; - case 408: - return backoffHandler.shouldRetryRequest(command, response); - } - return retry; - - } finally { - releasePayload(response); - } - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplier.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplier.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplier.java deleted file mode 100644 index 8263883..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplier.java +++ /dev/null @@ -1,65 +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.rackspace.cloudidentity.v1_1.suppliers; - -import java.net.URI; -import java.util.Collection; -import java.util.Map; - -import javax.inject.Inject; - -import org.jclouds.javax.annotation.Nullable; -import org.jclouds.location.suppliers.RegionIdToURISupplier; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; -import org.jclouds.rackspace.cloudidentity.v1_1.functions.EndpointToRegion; -import org.jclouds.rackspace.cloudidentity.v1_1.functions.EndpointToSupplierURI; - -import com.google.common.base.Supplier; -import com.google.common.collect.Maps; -import com.google.inject.assistedinject.Assisted; - -public class RegionIdToURIFromAuthForServiceSupplier implements RegionIdToURISupplier { - - private final Supplier<Auth> auth; - private final EndpointToSupplierURI endpointToSupplierURI; - private final EndpointToRegion endpointToRegion; - private final String apiType; - - @Inject - public RegionIdToURIFromAuthForServiceSupplier(Supplier<Auth> auth, EndpointToSupplierURI endpointToSupplierURI, - EndpointToRegion endpointToRegion, @Assisted("apiType") String apiType, - @Nullable @Assisted("apiVersion") String apiVersion) { - this.auth = auth; - this.endpointToSupplierURI = endpointToSupplierURI; - this.endpointToRegion = endpointToRegion; - this.apiType = apiType; - } - - @Override - public Map<String, Supplier<URI>> get() { - Auth authResponse = auth.get(); - Collection<Endpoint> endpointsForService = authResponse.getServiceCatalog().get(apiType); - Map<String, Endpoint> regionIdToEndpoint = Maps.uniqueIndex(endpointsForService, endpointToRegion); - return Maps.transformValues(regionIdToEndpoint, endpointToSupplierURI); - } - - @Override - public String toString() { - return "getPublicURLForService(" + apiType + ")"; - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplier.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplier.java b/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplier.java deleted file mode 100644 index 7e94f8a..0000000 --- a/apis/rackspace-cloudidentity/src/main/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplier.java +++ /dev/null @@ -1,83 +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.rackspace.cloudidentity.v1_1.suppliers; - -import static com.google.common.collect.Iterables.tryFind; - -import java.util.NoSuchElementException; - -import javax.inject.Inject; - -import org.jclouds.location.suppliers.ImplicitRegionIdSupplier; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; -import org.jclouds.rackspace.cloudidentity.v1_1.functions.EndpointToRegion; - -import com.google.common.base.Optional; -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; -import com.google.common.collect.Iterables; -import com.google.inject.assistedinject.Assisted; - -public class V1DefaultRegionIdSupplier implements ImplicitRegionIdSupplier { - - public interface Factory { - /** - * - * @param apiType - * type of the api, according to the provider. ex. {@code compute} - * {@code object-store} - * @return region id - * @throws NoSuchElementException - * if the {@code apiType} is not present in the catalog - */ - ImplicitRegionIdSupplier createForApiType(@Assisted("apiType") String apiType) throws NoSuchElementException; - } - - private final Supplier<Auth> auth; - private final EndpointToRegion endpointToRegion; - private final String apiType; - - @Inject - public V1DefaultRegionIdSupplier(Supplier<Auth> auth, EndpointToRegion endpointToRegion, - @Assisted("apiType") String apiType) { - this.auth = auth; - this.endpointToRegion = endpointToRegion; - this.apiType = apiType; - } - - /** - * returns {@link Endpoint#isV1Default()} or first endpoint for service - */ - @Override - public String get() { - Auth authResponse = auth.get(); - Iterable<Endpoint> endpointsForService = authResponse.getServiceCatalog().get(apiType); - Optional<Endpoint> defaultEndpoint = tryFind(endpointsForService, new Predicate<Endpoint>() { - @Override - public boolean apply(Endpoint in) { - return in.isV1Default(); - } - }); - return endpointToRegion.apply(defaultEndpoint.or(Iterables.get(endpointsForService, 0))); - } - - @Override - public String toString() { - return "defaultRegionIdFor(" + apiType + ")"; - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNullTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNullTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNullTest.java deleted file mode 100644 index 54bc32a..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/PublicURLOrInternalIfNullTest.java +++ /dev/null @@ -1,43 +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.rackspace.cloudidentity.v1_1.functions; - -import static org.testng.Assert.assertEquals; - -import java.net.URI; - -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; -import org.testng.annotations.Test; - -@Test(groups = "unit", testName = "PublicURLOrInternalIfNullTest") -public class PublicURLOrInternalIfNullTest { - private final PublicURLOrInternalIfNull fn = new PublicURLOrInternalIfNull(); - - public void testPublicURLNotNullReturnsPublicURL() { - assertEquals(fn.apply( - Endpoint.builder().region("LON").publicURL( - URI.create("https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")) - .v1Default(true).build()).get(), URI - .create("https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")); - } - - public void testPublicURLNullReturnsInternalURL() { - assertEquals(fn.apply(Endpoint.builder().internalURL(URI.create("https://192.168.1.1")).v1Default(true).build()) - .get(), URI.create("https://192.168.1.1")); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProviderTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProviderTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProviderTest.java deleted file mode 100644 index b727cc5..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/functions/RegionFirstPartOfDNSNameOrProviderTest.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.rackspace.cloudidentity.v1_1.functions; - -import static org.testng.Assert.assertEquals; - -import java.net.URI; - -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; -import org.testng.annotations.Test; - -@Test(groups = "unit", testName = "RegionFirstPartOfDNSNameOrProviderTest") -public class RegionFirstPartOfDNSNameOrProviderTest { - private final RegionFirstPartOfDNSNameOrProvider fn = new RegionFirstPartOfDNSNameOrProvider("keystone"); - - public void testRegionNotNullReturnsRegion() { - assertEquals(fn.apply(Endpoint.builder().region("LON").publicURL( - URI.create("https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")) - .v1Default(true).build()), "LON"); - } - - public void testRegionNullReturnsFirstPartOfHostWhenValid() { - assertEquals(fn.apply(Endpoint.builder().publicURL( - URI.create("https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")) - .v1Default(true).build()), "cdn3"); - } - - public void testRegionNullReturnsProvioderWhenHostNotValid() { - assertEquals(fn.apply(Endpoint.builder().publicURL(URI.create("https://1.1.1.4")).v1Default(true).build()), - "keystone"); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenewTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenewTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenewTest.java deleted file mode 100644 index 4657a5c..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/handlers/RetryOnRenewTest.java +++ /dev/null @@ -1,165 +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.rackspace.cloudidentity.v1_1.handlers; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; - -import org.jclouds.domain.Credentials; -import org.jclouds.http.HttpCommand; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.http.handlers.BackoffLimitedRetryHandler; -import org.jclouds.io.Payloads; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.testng.annotations.Test; - -import com.google.common.cache.LoadingCache; - -/** - * Tests behavior of {@code RetryOnRenew} handler - */ -@Test(groups = "unit", testName = "RetryOnRenewTest") -public class RetryOnRenewTest { - @Test - public void test401ShouldRetry() { - HttpCommand command = createMock(HttpCommand.class); - HttpRequest request = createMock(HttpRequest.class); - HttpResponse response = createMock(HttpResponse.class); - @SuppressWarnings("unchecked") - LoadingCache<Credentials, Auth> cache = createMock(LoadingCache.class); - BackoffLimitedRetryHandler backoffHandler = createMock(BackoffLimitedRetryHandler.class); - - expect(command.getCurrentRequest()).andReturn(request); - - cache.invalidateAll(); - expectLastCall(); - - expect(response.getPayload()).andReturn(Payloads.newStringPayload("token expired, please renew")).anyTimes(); - expect(response.getStatusCode()).andReturn(401).atLeastOnce(); - - replay(command); - replay(response); - replay(cache); - replay(backoffHandler); - - RetryOnRenew retry = new RetryOnRenew(cache, backoffHandler); - - assertTrue(retry.shouldRetryRequest(command, response)); - - verify(command); - verify(response); - verify(cache); - verify(backoffHandler); - } - - @Test - public void test401ShouldRetry4Times() { - HttpCommand command = createMock(HttpCommand.class); - HttpRequest request = createMock(HttpRequest.class); - HttpResponse response = createMock(HttpResponse.class); - - @SuppressWarnings("unchecked") - LoadingCache<Credentials, Auth> cache = createMock(LoadingCache.class); - BackoffLimitedRetryHandler backoffHandler = createMock(BackoffLimitedRetryHandler.class); - - expect(command.getCurrentRequest()).andReturn(request).anyTimes(); - expect(request.getHeaders()).andStubReturn(null); - - cache.invalidateAll(); - expectLastCall().anyTimes(); - - expect(response.getPayload()).andReturn(Payloads.newStringPayload("")) - .anyTimes(); - expect(response.getStatusCode()).andReturn(401).anyTimes(); - - replay(command, request, response, cache); - - RetryOnRenew retry = new RetryOnRenew(cache, backoffHandler); - - for (int i = 0; i < RetryOnRenew.NUM_RETRIES - 1; ++i) { - assertTrue(retry.shouldRetryRequest(command, response), - "Expected retry to succeed"); - } - - assertFalse(retry.shouldRetryRequest(command, response), - "Expected retry to fail on attempt " + RetryOnRenew.NUM_RETRIES); - - verify(command, response, cache); - } - - @Test - public void test408ShouldRetry() { - HttpCommand command = createMock(HttpCommand.class); - HttpRequest request = createMock(HttpRequest.class); - HttpResponse response = createMock(HttpResponse.class); - @SuppressWarnings("unchecked") - LoadingCache<Credentials, Auth> cache = createMock(LoadingCache.class); - BackoffLimitedRetryHandler backoffHandler = createMock(BackoffLimitedRetryHandler.class); - - expect(response.getPayload()).andReturn(Payloads.newStringPayload( - "The server has waited too long for the request to be sent by the client.")).times(2); - expect(backoffHandler.shouldRetryRequest(command, response)).andReturn(true).once(); - expect(response.getStatusCode()).andReturn(408).once(); - - replay(command); - replay(response); - replay(cache); - replay(backoffHandler); - - RetryOnRenew retry = new RetryOnRenew(cache, backoffHandler); - - assertTrue(retry.shouldRetryRequest(command, response)); - - verify(command); - verify(response); - verify(cache); - verify(backoffHandler); - } - - @Test - public void test404ShouldNotRetry() { - HttpCommand command = createMock(HttpCommand.class); - HttpRequest request = createMock(HttpRequest.class); - HttpResponse response = createMock(HttpResponse.class); - @SuppressWarnings("unchecked") - LoadingCache<Credentials, Auth> cache = createMock(LoadingCache.class); - BackoffLimitedRetryHandler backoffHandler = createMock(BackoffLimitedRetryHandler.class); - - expect(response.getPayload()).andReturn(Payloads.newStringPayload("")).times(2); - expect(response.getStatusCode()).andReturn(404).once(); - - replay(command); - replay(response); - replay(cache); - replay(backoffHandler); - - RetryOnRenew retry = new RetryOnRenew(cache, backoffHandler); - - assertTrue(!retry.shouldRetryRequest(command, response)); - - verify(command); - verify(response); - verify(cache); - verify(backoffHandler); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/internal/BaseKeystoneRestClientExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/internal/BaseKeystoneRestClientExpectTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/internal/BaseKeystoneRestClientExpectTest.java deleted file mode 100644 index 51bc63b..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/internal/BaseKeystoneRestClientExpectTest.java +++ /dev/null @@ -1,62 +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.rackspace.cloudidentity.v1_1.internal; - -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.rackspace.cloudidentity.v1_1.config.AuthenticationServiceModule; -import org.jclouds.rest.internal.BaseRestApiExpectTest; - -import com.google.common.net.HttpHeaders; - -/** - * Base class for writing KeyStone Rest Client Expect tests - */ -public class BaseKeystoneRestClientExpectTest<S> extends BaseRestApiExpectTest<S> { - - protected String endpoint = "http://localhost:5000"; - - public BaseKeystoneRestClientExpectTest() { - identity = "[email protected]"; - credential = "Password1234"; - } - - protected HttpRequest initialAuth = HttpRequest.builder().method("POST") - .endpoint(endpoint + "/v1.1/auth") - .addHeader(HttpHeaders.ACCEPT, "application/json") - .payload( - payloadFromStringWithContentType( - "{\"credentials\":{\"username\":\"[email protected]\",\"key\":\"Password1234\"}}", - "application/json")).build(); - - protected String authToken = "118fb907-0786-4799-88f0-9a5b7963d1ab"; - - protected HttpResponse responseWithAuth = HttpResponse.builder().statusCode(200).message("HTTP/1.1 200") - .payload(payloadFromResourceWithContentType("/auth1_1.json", "application/json")).build(); - - /** - * in case you need to override anything - */ - public static class TestKeystoneAuthenticationModule extends AuthenticationServiceModule { - @Override - protected void configure() { - super.configure(); - } - - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/parse/ParseAuthTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/parse/ParseAuthTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/parse/ParseAuthTest.java deleted file mode 100644 index 7d8518a..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/parse/ParseAuthTest.java +++ /dev/null @@ -1,77 +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.rackspace.cloudidentity.v1_1.parse; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.date.internal.SimpleDateFormatDateService; -import org.jclouds.json.BaseItemParserTest; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Endpoint; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Token; -import org.jclouds.rest.annotations.SelectJson; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; - -@Test(groups = "unit", testName = "ParseAuthTest") -public class ParseAuthTest extends BaseItemParserTest<Auth> { - - @Override - public String resource() { - return "/auth1_1.json"; - } - - @Override - @SelectJson("auth") - @Consumes(MediaType.APPLICATION_JSON) - public Auth expected() { - return Auth - .builder() - .token( - Token.builder() - .expires(new SimpleDateFormatDateService().iso8601DateParse("2012-01-30T02:30:54.000-06:00")) - .id("118fb907-0786-4799-88f0-9a5b7963d1ab").build()) - .serviceCatalog( - ImmutableMultimap.of( - "cloudFilesCDN", - Endpoint - .builder() - .region("LON") - .publicURL( - URI.create("https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")) - .v1Default(true).build(), - "cloudFiles", - Endpoint - .builder() - .region("LON") - .publicURL( - URI.create("https://storage101.lon3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")) - .v1Default(true) - .internalURL( - URI.create("https://snet-storage101.lon3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953")) - .build(), - "cloudServers", - Endpoint.builder() - .publicURL(URI.create("https://lon.servers.api.rackspacecloud.com/v1.0/10001786")) - .v1Default(true).build())).build(); - - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplierTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplierTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplierTest.java deleted file mode 100644 index befb533..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/RegionIdToURIFromAuthForServiceSupplierTest.java +++ /dev/null @@ -1,69 +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.rackspace.cloudidentity.v1_1.suppliers; - -import static org.testng.Assert.assertEquals; - -import java.net.URI; - -import javax.inject.Singleton; - -import org.jclouds.location.Provider; -import org.jclouds.location.suppliers.RegionIdToURISupplier; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rackspace.cloudidentity.v1_1.parse.ParseAuthTest; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Provides; -import com.google.inject.assistedinject.FactoryModuleBuilder; - -@Test(groups = "unit", testName = "RegionIdToURIFromAuthForServiceSupplierTest") -public class RegionIdToURIFromAuthForServiceSupplierTest { - private final RegionIdToURISupplier.Factory factory = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bindConstant().annotatedWith(Provider.class).to("keystone"); - install(new FactoryModuleBuilder().implement(RegionIdToURISupplier.class, - RegionIdToURIFromAuthForServiceSupplier.class).build(RegionIdToURISupplier.Factory.class)); - } - - @Provides - @Singleton - public Supplier<Auth> provide() { - return Suppliers.ofInstance(new ParseAuthTest().expected()); - } - }).getInstance(RegionIdToURISupplier.Factory.class); - - public void testRegionMatches() { - assertEquals(Maps.transformValues(factory.createForApiTypeAndVersion("cloudFilesCDN", "1.0").get(), Suppliers - .<URI> supplierFunction()), ImmutableMap.of("LON", URI - .create("https://cdn3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953"))); - } - - public void testTakesFirstPartOfDNSWhenNoRegion() { - assertEquals(Maps.transformValues(factory.createForApiTypeAndVersion("cloudServers", "1.1").get(), Suppliers - .<URI> supplierFunction()), ImmutableMap.of("lon", URI - .create("https://lon.servers.api.rackspacecloud.com/v1.0/10001786"))); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplierTest.java ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplierTest.java b/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplierTest.java deleted file mode 100644 index af0030b..0000000 --- a/apis/rackspace-cloudidentity/src/test/java/org/jclouds/rackspace/cloudidentity/v1_1/suppliers/V1DefaultRegionIdSupplierTest.java +++ /dev/null @@ -1,61 +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.rackspace.cloudidentity.v1_1.suppliers; - -import static org.testng.Assert.assertEquals; - -import javax.inject.Singleton; - -import org.jclouds.location.Provider; -import org.jclouds.location.suppliers.ImplicitRegionIdSupplier; -import org.jclouds.rackspace.cloudidentity.v1_1.domain.Auth; -import org.jclouds.rackspace.cloudidentity.v1_1.parse.ParseAuthTest; -import org.testng.annotations.Test; - -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Provides; -import com.google.inject.assistedinject.FactoryModuleBuilder; - -@Test(groups = "unit", testName = "V1DefaultRegionIdSupplierTest") -public class V1DefaultRegionIdSupplierTest { - private final V1DefaultRegionIdSupplier.Factory factory = Guice.createInjector(new AbstractModule() { - - @Override - protected void configure() { - bindConstant().annotatedWith(Provider.class).to("keystone"); - install(new FactoryModuleBuilder().implement(ImplicitRegionIdSupplier.class, V1DefaultRegionIdSupplier.class) - .build(V1DefaultRegionIdSupplier.Factory.class)); - } - - @Provides - @Singleton - public Supplier<Auth> provide() { - return Suppliers.ofInstance(new ParseAuthTest().expected()); - } - }).getInstance(V1DefaultRegionIdSupplier.Factory.class); - - public void testRegionMatches() { - assertEquals(factory.createForApiType("cloudFilesCDN").get(), "LON"); - } - - public void testTakesFirstPartOfDNSWhenNoRegion() { - assertEquals(factory.createForApiType("cloudServers").get(), "lon"); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/dd743e58/apis/rackspace-cloudidentity/src/test/resources/auth1_1.json ---------------------------------------------------------------------- diff --git a/apis/rackspace-cloudidentity/src/test/resources/auth1_1.json b/apis/rackspace-cloudidentity/src/test/resources/auth1_1.json deleted file mode 100644 index 545adbd..0000000 --- a/apis/rackspace-cloudidentity/src/test/resources/auth1_1.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "auth": { - "token": { - "id": "118fb907-0786-4799-88f0-9a5b7963d1ab", - "expires": "2012-01-30T02:30:54.000-06:00" - }, - "serviceCatalog": { - "cloudFilesCDN": [{ - "region": "LON", - "publicURL": "https:\/\/cdn3.clouddrive.com\/v1\/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953", - "v1Default": true - }], - "cloudFiles": [{ - "region": "LON", - "publicURL": "https:\/\/storage101.lon3.clouddrive.com\/v1\/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953", - "v1Default": true, - "internalURL": "https:\/\/snet-storage101.lon3.clouddrive.com\/v1\/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953" - }], - "cloudServers": [{ - "publicURL": "https:\/\/lon.servers.api.rackspacecloud.com\/v1.0\/10001786", - "v1Default": true - }] - } - } -}
