EMMA Coverage Report (generated Wed Jun 22 19:47:49 EDT 2011)
[all classes][org.jclouds.aws.s3.binders]

COVERAGE SUMMARY FOR SOURCE FILE [AssignCorrectHostnameAndBindAsHostPrefixIfConfigured.java]

nameclass, %method, %block, %line, %
AssignCorrectHostnameAndBindAsHostPrefixIfConfigured.java100% (1/1)100% (2/2)100% (54/54)100% (10/10)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AssignCorrectHostnameAndBindAsHostPrefixIfConfigured100% (1/1)100% (2/2)100% (54/54)100% (10/10)
AssignCorrectHostnameAndBindAsHostPrefixIfConfigured (BindAsHostPrefix, boole... 100% (1/1)100% (13/13)100% (4/4)
bindToRequest (HttpRequest, Object): HttpRequest 100% (1/1)100% (41/41)100% (6/6)

1/**
2 *
3 * Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
4 *
5 * ====================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ====================================================================
18 */
19 
20package org.jclouds.aws.s3.binders;
21 
22import static org.jclouds.s3.reference.S3Constants.PROPERTY_S3_SERVICE_PATH;
23import static org.jclouds.s3.reference.S3Constants.PROPERTY_S3_VIRTUAL_HOST_BUCKETS;
24 
25import java.net.URI;
26import java.util.Map;
27 
28import javax.inject.Inject;
29import javax.inject.Named;
30import javax.inject.Provider;
31import javax.inject.Singleton;
32import javax.ws.rs.core.UriBuilder;
33 
34import org.jclouds.http.HttpRequest;
35import org.jclouds.http.utils.ModifyRequest;
36import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
37import org.jclouds.rest.binders.BindAsHostPrefix;
38import org.jclouds.s3.Bucket;
39import org.jclouds.s3.binders.BindAsHostPrefixIfConfigured;
40 
41/**
42 * 
43 * @author Adrian Cole
44 */
45@Singleton
46public class AssignCorrectHostnameAndBindAsHostPrefixIfConfigured extends BindAsHostPrefixIfConfigured {
47   private final Map<String, String> bucketToRegion;
48   private final RegionToEndpointOrProviderIfNull r2;
49 
50   @Inject
51   public AssignCorrectHostnameAndBindAsHostPrefixIfConfigured(BindAsHostPrefix bindAsHostPrefix,
52         @Named(PROPERTY_S3_VIRTUAL_HOST_BUCKETS) boolean isVhostStyle,
53         @Named(PROPERTY_S3_SERVICE_PATH) String servicePath, RegionToEndpointOrProviderIfNull r2,
54         Provider<UriBuilder> uriBuilderProvider, @Bucket Map<String, String> bucketToRegion) {
55      super(bindAsHostPrefix, isVhostStyle, servicePath, uriBuilderProvider);
56      this.bucketToRegion = bucketToRegion;
57      this.r2 = r2;
58   }
59 
60   @Override
61   public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
62      String bucket = payload.toString();
63      String region = bucketToRegion.get(bucket);
64      if (region != null) {
65         URI endpoint = r2.apply(region);
66         request = ModifyRequest.endpoint(
67               request,
68               uriBuilderProvider.get().uri(endpoint).path(request.getEndpoint().getPath())
69                     .replaceQuery(request.getEndpoint().getQuery()).build());
70      }
71      return super.bindToRequest(request, payload);
72   }
73}

[all classes][org.jclouds.aws.s3.binders]
EMMA 2.0.5312 (C) Vladimir Roubtsov