EMMA Coverage Report (generated Mon Oct 17 05:41:20 EDT 2011)
[all classes][org.jclouds.savvis.vpdc.compute.functions]

COVERAGE SUMMARY FOR SOURCE FILE [NetworkToLocation.java]

nameclass, %method, %block, %line, %
NetworkToLocation.java0%   (0/1)0%   (0/3)0%   (0/132)0%   (0/16)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class NetworkToLocation0%   (0/1)0%   (0/3)0%   (0/132)0%   (0/16)
<static initializer> 0%   (0/1)0%   (0/4)0%   (0/1)
NetworkToLocation (Set, String, URI, VPDCClient): void 0%   (0/1)0%   (0/27)0%   (0/6)
apply (Network): Location 0%   (0/1)0%   (0/101)0%   (0/9)

1/**
2 * Licensed to jclouds, Inc. (jclouds) under one or more
3 * contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  jclouds licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  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,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied.  See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19package org.jclouds.savvis.vpdc.compute.functions;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22 
23import java.net.URI;
24import java.util.Set;
25import java.util.regex.Matcher;
26import java.util.regex.Pattern;
27 
28import javax.inject.Inject;
29import javax.inject.Singleton;
30 
31import org.jclouds.domain.Location;
32import org.jclouds.domain.LocationBuilder;
33import org.jclouds.domain.LocationScope;
34import org.jclouds.location.Iso3166;
35import org.jclouds.location.Provider;
36import org.jclouds.savvis.vpdc.VPDCClient;
37import org.jclouds.savvis.vpdc.domain.Network;
38import org.jclouds.savvis.vpdc.domain.Org;
39import org.jclouds.savvis.vpdc.domain.VDC;
40 
41import com.google.common.base.Function;
42 
43/**
44 * @author Adrian Cole
45 */
46@Singleton
47public class NetworkToLocation implements Function<Network, Location> {
48   // rest/api/v0.8/org/1/vdc/22/network/VM-Tier01
49   public static final Pattern netPattern = Pattern.compile(".*org/([0-9.]+)/vdc/([0-9.]+)/network/(.*)$");
50 
51   private final String providerName;
52   private final URI endpoint;
53   private final Set<String> isoCodes;
54   private VPDCClient client;
55 
56   @Inject
57   public NetworkToLocation(@Iso3166 Set<String> isoCodes, @Provider String providerName, @Provider URI endpoint,
58            VPDCClient client) {
59      this.providerName = checkNotNull(providerName, "providerName");
60      this.endpoint = checkNotNull(endpoint, "endpoint");
61      this.isoCodes = checkNotNull(isoCodes, "isoCodes");
62      this.client = checkNotNull(client, "client");
63   }
64 
65   @Override
66   public Location apply(Network from) {
67      Matcher matcher = netPattern.matcher(from.getHref().toASCIIString());
68      if (matcher.find()) {
69         Location provider = new LocationBuilder().scope(LocationScope.PROVIDER).id(providerName).description(
70                  endpoint.toASCIIString()).iso3166Codes(isoCodes).build();
71 
72         Org org = client.getBrowsingClient().getOrg(matcher.group(1));
73 
74         Location orgLocation = new LocationBuilder().scope(LocationScope.REGION).id(org.getId()).description(
75                  org.getDescription()).parent(provider).build();
76 
77         VDC vdc = client.getBrowsingClient().getVDCInOrg(org.getId(), matcher.group(2));
78 
79         Location vdcLocation = new LocationBuilder().scope(LocationScope.ZONE).id(vdc.getId()).description(
80                  vdc.getDescription()).parent(orgLocation).build();
81 
82         return new LocationBuilder().scope(LocationScope.NETWORK).id(from.getId()).description(from.getName()).parent(
83                  vdcLocation).build();
84      } else {
85         throw new IllegalArgumentException("network unparsable: " + from);
86      }
87 
88   }
89}

[all classes][org.jclouds.savvis.vpdc.compute.functions]
EMMA 2.0.5312 (C) Vladimir Roubtsov