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

COVERAGE SUMMARY FOR SOURCE FILE [LaunchSpecification.java]

nameclass, %method, %block, %line, %
LaunchSpecification.java100% (2/2)91%  (32/35)70%  (467/667)75%  (105.1/140)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class LaunchSpecification100% (1/1)88%  (14/16)63%  (283/449)64%  (59.1/93)
toBuilder (): LaunchSpecification$Builder 0%   (0/1)0%   (0/3)0%   (0/1)
toString (): String 0%   (0/1)0%   (0/61)0%   (0/1)
equals (Object): boolean 100% (1/1)52%  (90/173)44%  (24/55)
hashCode (): int 100% (1/1)85%  (112/131)93%  (12.1/13)
LaunchSpecification (String, String, String, String, String, String, Iterable... 100% (1/1)100% (47/47)100% (12/12)
builder (): LaunchSpecification$Builder 100% (1/1)100% (4/4)100% (1/1)
getAvailabilityZone (): String 100% (1/1)100% (3/3)100% (1/1)
getBlockDeviceMappings (): Set 100% (1/1)100% (3/3)100% (1/1)
getGroupIds (): Set 100% (1/1)100% (3/3)100% (1/1)
getImageId (): String 100% (1/1)100% (3/3)100% (1/1)
getInstanceType (): String 100% (1/1)100% (3/3)100% (1/1)
getKernelId (): String 100% (1/1)100% (3/3)100% (1/1)
getKeyName (): String 100% (1/1)100% (3/3)100% (1/1)
getRamdiskId (): String 100% (1/1)100% (3/3)100% (1/1)
getUserData (): byte [] 100% (1/1)100% (3/3)100% (1/1)
isMonitoringEnabled (): Boolean 100% (1/1)100% (3/3)100% (1/1)
     
class LaunchSpecification$Builder100% (1/1)95%  (18/19)84%  (184/218)98%  (46/47)
fromLaunchSpecification (LaunchSpecification): LaunchSpecification$Builder 0%   (0/1)0%   (0/34)0%   (0/1)
LaunchSpecification$Builder (): void 100% (1/1)100% (9/9)100% (3/3)
availabilityZone (String): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
blockDeviceMapping (BlockDeviceMapping): LaunchSpecification$Builder 100% (1/1)100% (9/9)100% (2/2)
blockDeviceMappings (Iterable): LaunchSpecification$Builder 100% (1/1)100% (10/10)100% (2/2)
build (): LaunchSpecification 100% (1/1)100% (26/26)100% (1/1)
clear (): void 100% (1/1)100% (32/32)100% (11/11)
groupId (String): LaunchSpecification$Builder 100% (1/1)100% (9/9)100% (3/3)
groupIds (Iterable): LaunchSpecification$Builder 100% (1/1)100% (10/10)100% (2/2)
imageId (String): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
instanceType (String): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
kernelId (String): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
keyName (String): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
mapEBSSnapshotToDevice (String, String, Integer, boolean): LaunchSpecificatio... 100% (1/1)100% (14/14)100% (2/2)
mapEphemeralDeviceToDevice (String, String): LaunchSpecification$Builder 100% (1/1)100% (11/11)100% (2/2)
mapNewVolumeToDevice (String, int, boolean): LaunchSpecification$Builder 100% (1/1)100% (14/14)100% (2/2)
monitoringEnabled (Boolean): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
ramdiskId (String): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)
userData (byte []): LaunchSpecification$Builder 100% (1/1)100% (5/5)100% (2/2)

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 */
19package org.jclouds.aws.ec2.domain;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22 
23import java.util.Arrays;
24import java.util.Set;
25 
26import javax.annotation.Nullable;
27 
28import org.jclouds.ec2.domain.BlockDeviceMapping;
29import org.jclouds.ec2.domain.BlockDeviceMapping.MapEBSSnapshotToDevice;
30import org.jclouds.ec2.domain.BlockDeviceMapping.MapEphemeralDeviceToDevice;
31import org.jclouds.ec2.domain.BlockDeviceMapping.MapNewVolumeToDevice;
32 
33import com.google.common.collect.ImmutableSet;
34import com.google.common.collect.ImmutableSortedSet;
35 
36/**
37 * 
38 * @see <a href=
39 *      "http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RequestSpotInstances.html"
40 *      />
41 * @author Adrian Cole
42 */
43public class LaunchSpecification {
44 
45   public static Builder builder() {
46      return new Builder();
47   }
48 
49   public static class Builder {
50      protected ImmutableSet.Builder<String> groupIds = ImmutableSet.<String> builder();
51      protected String imageId;
52      protected String instanceType;
53      protected String kernelId;
54      protected String keyName;
55      protected String availabilityZone;
56      protected String ramdiskId;
57      protected Boolean monitoringEnabled;
58      protected ImmutableSet.Builder<BlockDeviceMapping> blockDeviceMappings = ImmutableSet
59            .<BlockDeviceMapping> builder();
60      protected byte[] userData;
61 
62      public void clear() {
63         groupIds = ImmutableSet.<String> builder();
64         imageId = null;
65         instanceType = null;
66         kernelId = null;
67         keyName = null;
68         availabilityZone = null;
69         ramdiskId = null;
70         monitoringEnabled = false;
71         blockDeviceMappings = ImmutableSet.<BlockDeviceMapping> builder();
72         userData = null;
73      }
74 
75      public Builder groupIds(Iterable<String> groupIds) {
76         this.groupIds.addAll(checkNotNull(groupIds, "groupIds"));
77         return this;
78      }
79 
80      public Builder groupId(String groupId) {
81         if (groupId != null)
82            this.groupIds.add(groupId);
83         return this;
84      }
85 
86      public Builder imageId(String imageId) {
87         this.imageId = imageId;
88         return this;
89      }
90 
91      public Builder monitoringEnabled(Boolean monitoringEnabled) {
92         this.monitoringEnabled = monitoringEnabled;
93         return this;
94      }
95 
96      public Builder instanceType(String instanceType) {
97         this.instanceType = instanceType;
98         return this;
99      }
100 
101      public Builder kernelId(String kernelId) {
102         this.kernelId = kernelId;
103         return this;
104      }
105 
106      public Builder keyName(String keyName) {
107         this.keyName = keyName;
108         return this;
109      }
110 
111      public Builder availabilityZone(String availabilityZone) {
112         this.availabilityZone = availabilityZone;
113         return this;
114      }
115 
116      public Builder ramdiskId(String ramdiskId) {
117         this.ramdiskId = ramdiskId;
118         return this;
119      }
120 
121      public Builder mapEBSSnapshotToDevice(String deviceName, String snapshotId, @Nullable Integer sizeInGib,
122            boolean deleteOnTermination) {
123         blockDeviceMappings.add(new MapEBSSnapshotToDevice(deviceName, snapshotId, sizeInGib, deleteOnTermination));
124         return this;
125      }
126 
127      public Builder mapNewVolumeToDevice(String deviceName, int sizeInGib, boolean deleteOnTermination) {
128         blockDeviceMappings.add(new MapNewVolumeToDevice(deviceName, sizeInGib, deleteOnTermination));
129         return this;
130      }
131 
132      public Builder mapEphemeralDeviceToDevice(String deviceName, String virtualName) {
133         blockDeviceMappings.add(new MapEphemeralDeviceToDevice(deviceName, virtualName));
134         return this;
135      }
136 
137      public Builder blockDeviceMapping(BlockDeviceMapping blockDeviceMapping) {
138         this.blockDeviceMappings.add(checkNotNull(blockDeviceMapping, "blockDeviceMapping"));
139         return this;
140      }
141 
142      public Builder blockDeviceMappings(Iterable<? extends BlockDeviceMapping> blockDeviceMappings) {
143         this.blockDeviceMappings.addAll(checkNotNull(blockDeviceMappings, "blockDeviceMappings"));
144         return this;
145      }
146 
147      public Builder userData(byte[] userData) {
148         this.userData = userData;
149         return this;
150      }
151 
152      public LaunchSpecification build() {
153         return new LaunchSpecification(instanceType, imageId, kernelId, ramdiskId, availabilityZone, keyName,
154               groupIds.build(), blockDeviceMappings.build(), monitoringEnabled, userData);
155      }
156 
157      public static Builder fromLaunchSpecification(LaunchSpecification in) {
158         return new Builder().instanceType(in.getInstanceType()).imageId(in.getImageId()).kernelId(in.getKernelId())
159               .ramdiskId(in.getRamdiskId()).availabilityZone(in.getAvailabilityZone()).keyName(in.getKeyName())
160               .groupIds(in.getGroupIds()).blockDeviceMappings(in.getBlockDeviceMappings())
161               .monitoringEnabled(in.isMonitoringEnabled()).userData(in.getUserData());
162      }
163   }
164 
165   protected final String instanceType;
166   protected final String imageId;
167   protected final String kernelId;
168   protected final String ramdiskId;
169   protected final String availabilityZone;
170   protected final String keyName;
171   protected final Set<String> groupIds;
172   protected final Set<? extends BlockDeviceMapping> blockDeviceMappings;
173   protected final Boolean monitoringEnabled;
174   protected final byte[] userData;
175 
176   public LaunchSpecification(String instanceType, String imageId, String kernelId, String ramdiskId,
177         String availabilityZone, String keyName, Iterable<String> groupIds,
178         Iterable<? extends BlockDeviceMapping> blockDeviceMappings, Boolean monitoringEnabled, byte[] userData) {
179      this.instanceType = checkNotNull(instanceType, "instanceType");
180      this.imageId = checkNotNull(imageId, "imageId");
181      this.kernelId = kernelId;
182      this.ramdiskId = ramdiskId;
183      this.availabilityZone = availabilityZone;
184      this.keyName = keyName;
185      this.groupIds = ImmutableSortedSet.copyOf(checkNotNull(groupIds, "groupIds"));
186      this.blockDeviceMappings = ImmutableSortedSet.copyOf(checkNotNull(blockDeviceMappings, "blockDeviceMappings"));
187      this.monitoringEnabled = monitoringEnabled;
188      this.userData = userData;
189   }
190 
191   /**
192    * Image ID of the AMI used to launch the instance.
193    */
194   public String getImageId() {
195      return imageId;
196   }
197 
198   /**
199    * CloudWatch support
200    */
201   public Boolean isMonitoringEnabled() {
202      return monitoringEnabled;
203   }
204 
205   /**
206    * The instance type.
207    */
208   public String getInstanceType() {
209      return instanceType;
210   }
211 
212   /**
213    * Optional. Kernel associated with this instance.
214    */
215   public String getKernelId() {
216      return kernelId;
217   }
218 
219   /**
220    * If this instance was launched with an associated key pair, this displays the key pair name.
221    */
222   public String getKeyName() {
223      return keyName;
224   }
225 
226   /**
227    * The location where the instance launched.
228    */
229   public String getAvailabilityZone() {
230      return availabilityZone;
231   }
232 
233   /**
234    * Optional. RAM disk associated with this instance.
235    */
236   public String getRamdiskId() {
237      return ramdiskId;
238   }
239 
240   /**
241    * volumes mappings associated with the instance.
242    */
243   public Set<? extends BlockDeviceMapping> getBlockDeviceMappings() {
244      return blockDeviceMappings;
245   }
246 
247   /**
248    * Names of the security groups.
249    */
250   public Set<String> getGroupIds() {
251      return groupIds;
252   }
253 
254   /**
255    * User Data
256    */
257   public byte[] getUserData() {
258      return userData;
259   }
260 
261   @Override
262   public int hashCode() {
263      final int prime = 31;
264      int result = 1;
265      result = prime * result + ((availabilityZone == null) ? 0 : availabilityZone.hashCode());
266      result = prime * result + ((blockDeviceMappings == null) ? 0 : blockDeviceMappings.hashCode());
267      result = prime * result + ((groupIds == null) ? 0 : groupIds.hashCode());
268      result = prime * result + ((imageId == null) ? 0 : imageId.hashCode());
269      result = prime * result + ((instanceType == null) ? 0 : instanceType.hashCode());
270      result = prime * result + ((kernelId == null) ? 0 : kernelId.hashCode());
271      result = prime * result + ((keyName == null) ? 0 : keyName.hashCode());
272      result = prime * result + ((monitoringEnabled == null) ? 0 : monitoringEnabled.hashCode());
273      result = prime * result + ((ramdiskId == null) ? 0 : ramdiskId.hashCode());
274      result = prime * result + Arrays.hashCode(userData);
275      return result;
276   }
277 
278   @Override
279   public boolean equals(Object obj) {
280      if (this == obj)
281         return true;
282      if (obj == null)
283         return false;
284      if (getClass() != obj.getClass())
285         return false;
286      LaunchSpecification other = (LaunchSpecification) obj;
287      if (availabilityZone == null) {
288         if (other.availabilityZone != null)
289            return false;
290      } else if (!availabilityZone.equals(other.availabilityZone))
291         return false;
292      if (blockDeviceMappings == null) {
293         if (other.blockDeviceMappings != null)
294            return false;
295      } else if (!blockDeviceMappings.equals(other.blockDeviceMappings))
296         return false;
297      if (groupIds == null) {
298         if (other.groupIds != null)
299            return false;
300      } else if (!groupIds.equals(other.groupIds))
301         return false;
302      if (imageId == null) {
303         if (other.imageId != null)
304            return false;
305      } else if (!imageId.equals(other.imageId))
306         return false;
307      if (instanceType == null) {
308         if (other.instanceType != null)
309            return false;
310      } else if (!instanceType.equals(other.instanceType))
311         return false;
312      if (kernelId == null) {
313         if (other.kernelId != null)
314            return false;
315      } else if (!kernelId.equals(other.kernelId))
316         return false;
317      if (keyName == null) {
318         if (other.keyName != null)
319            return false;
320      } else if (!keyName.equals(other.keyName))
321         return false;
322      if (monitoringEnabled == null) {
323         if (other.monitoringEnabled != null)
324            return false;
325      } else if (!monitoringEnabled.equals(other.monitoringEnabled))
326         return false;
327      if (ramdiskId == null) {
328         if (other.ramdiskId != null)
329            return false;
330      } else if (!ramdiskId.equals(other.ramdiskId))
331         return false;
332      if (!Arrays.equals(userData, other.userData))
333         return false;
334      return true;
335   }
336 
337   public Builder toBuilder() {
338      return Builder.fromLaunchSpecification(this);
339   }
340 
341   @Override
342   public String toString() {
343      return "[instanceType=" + instanceType + ", imageId=" + imageId + ", kernelId=" + kernelId + ", ramdiskId="
344            + ramdiskId + ", availabilityZone=" + availabilityZone + ", keyName=" + keyName + ", groupIds=" + groupIds
345            + ", blockDeviceMappings=" + blockDeviceMappings + ", monitoringEnabled=" + monitoringEnabled
346            + ", userData=" + (userData != null) + "]";
347   }
348 
349}

[all classes][org.jclouds.aws.ec2.domain]
EMMA 2.0.5312 (C) Vladimir Roubtsov