EMMA Coverage Report (generated Tue Jun 21 05:51:52 EDT 2011)
[all classes][org.jclouds.compute.domain]

COVERAGE SUMMARY FOR SOURCE FILE [OperatingSystem.java]

nameclass, %method, %block, %line, %
OperatingSystem.java100% (1/1)36%  (4/11)12%  (33/272)18%  (11/61)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class OperatingSystem100% (1/1)36%  (4/11)12%  (33/272)18%  (11/61)
OperatingSystem (): void 0%   (0/1)0%   (0/3)0%   (0/2)
equals (Object): boolean 0%   (0/1)0%   (0/108)0%   (0/35)
getArch (): String 0%   (0/1)0%   (0/3)0%   (0/1)
getVersion (): String 0%   (0/1)0%   (0/3)0%   (0/1)
hashCode (): int 0%   (0/1)0%   (0/82)0%   (0/9)
is64Bit (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
toString (): String 0%   (0/1)0%   (0/37)0%   (0/1)
OperatingSystem (OsFamily, String, String, String, String, boolean): void 100% (1/1)100% (24/24)100% (8/8)
getDescription (): String 100% (1/1)100% (3/3)100% (1/1)
getFamily (): OsFamily 100% (1/1)100% (3/3)100% (1/1)
getName (): String 100% (1/1)100% (3/3)100% (1/1)

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.compute.domain;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22 
23import javax.annotation.Nullable;
24 
25import com.google.common.annotations.Beta;
26 
27/**
28 * Running Operating system
29 * 
30 * @author Adrian Cole
31 */
32@Beta
33public class OperatingSystem {
34   @Nullable
35   private OsFamily family;
36   @Nullable
37   private String name;
38   @Nullable
39   private String arch;
40   @Nullable
41   private String version;
42   private String description;
43   private boolean is64Bit;
44 
45   // for serialization/deserialization
46   protected OperatingSystem() {
47 
48   }
49 
50   public OperatingSystem(@Nullable OsFamily family, @Nullable String name, @Nullable String version,
51         @Nullable String arch, String description, boolean is64Bit) {
52      this.family = family;
53      this.name = name;
54      this.arch = arch;
55      this.version = version;
56      this.description = checkNotNull(description, "description");
57      this.is64Bit = is64Bit;
58   }
59 
60   /**
61    * Type of the operating system
62    * <p/>
63    * generally, this is used to compare the means by which you use an operating
64    * system. For example, to determine compatibility of a particular
65    * bootstrapping or package installation approach.
66    */
67   @Nullable
68   public OsFamily getFamily() {
69      return family;
70   }
71 
72   /**
73    * name of the operating system; ex. {@code Red Hat Enterprise Linux}
74    * 
75    * <h2>note</h2> While this looks similar to, and may in some cases be the
76    * same as the java system property {@code os.name} it isn't guaranteed to
77    * match a particular value. For example, this value could be derived from
78    * data parsed for a cloud api or the OVF CIM OSType enum value;
79    * 
80    * @return operating system name or null if it couldn't be determined.
81    */
82   @Nullable
83   public String getName() {
84      return name;
85   }
86 
87   /**
88    * architecture of the operating system; ex. {@code x86_64}
89    * <p/>
90    * generally, this is used to decide whether an operating system will run
91    * certain binaries, for example, a 64bit JDK.
92    * 
93    * <h2>note</h2>
94    * While this looks similar to, and may in some cases be the same as the java
95    * system property {@code os.arch} it isn't guaranteed to match a particular
96    * value. For example, this value could be derived from data parsed for a
97    * cloud api or the OVF CIM OSType enum value;
98    * 
99    * @return operating system architecture or null if it couldn't be
100    *         determined.
101    */
102   @Nullable
103   public String getArch() {
104      return arch;
105   }
106 
107   /**
108    * version of the operating system; ex. {@code 10.0.4}
109    * <p/>
110    * generally, this is used to compare versions of the same operating system
111    * name. It should be meaningful when sorted against, although this isn't
112    * necessary.
113    * <h2>note</h2>
114    * While this looks similar to, and may in some cases be the same as the java
115    * system property {@code os.version} it isn't guaranteed to match a
116    * particular value. For example, this value could be derived from data
117    * parsed for a cloud api or the OVF CIM OSType enum value;
118    * 
119    * @return operating system version or null if it couldn't be determined.
120    */
121   @Nullable
122   public String getVersion() {
123      return version;
124   }
125 
126   /**
127    * description of the operating system; ex. {@code CentOS 32-bit},{@code
128    * Other Linux (32-bit)}
129    * <p/>
130    * This is the only required field in the operating system object. In some
131    * implementations, it is this data that is used to parse the value of the
132    * {@link #name}, {@link #version}, and {@link #arch} fields.
133    * 
134    * @return operating system description
135    */
136   public String getDescription() {
137      return description;
138   }
139 
140   /**
141    * 
142    * @return whether this operating system supports 64 bit computation.
143    */
144   public boolean is64Bit() {
145      return is64Bit;
146   }
147 
148   @Override
149   public int hashCode() {
150      final int prime = 31;
151      int result = 1;
152      result = prime * result + ((arch == null) ? 0 : arch.hashCode());
153      result = prime * result + ((description == null) ? 0 : description.hashCode());
154      result = prime * result + ((family == null) ? 0 : family.hashCode());
155      result = prime * result + (is64Bit ? 1231 : 1237);
156      result = prime * result + ((name == null) ? 0 : name.hashCode());
157      result = prime * result + ((version == null) ? 0 : version.hashCode());
158      return result;
159   }
160 
161   @Override
162   public boolean equals(Object obj) {
163      if (this == obj)
164         return true;
165      if (obj == null)
166         return false;
167      if (getClass() != obj.getClass())
168         return false;
169      OperatingSystem other = (OperatingSystem) obj;
170      if (arch == null) {
171         if (other.arch != null)
172            return false;
173      } else if (!arch.equals(other.arch))
174         return false;
175      if (description == null) {
176         if (other.description != null)
177            return false;
178      } else if (!description.equals(other.description))
179         return false;
180      if (family == null) {
181         if (other.family != null)
182            return false;
183      } else if (!family.equals(other.family))
184         return false;
185      if (is64Bit != other.is64Bit)
186         return false;
187      if (name == null) {
188         if (other.name != null)
189            return false;
190      } else if (!name.equals(other.name))
191         return false;
192      if (version == null) {
193         if (other.version != null)
194            return false;
195      } else if (!version.equals(other.version))
196         return false;
197      return true;
198   }
199 
200   @Override
201   public String toString() {
202      return "[name=" + name + ", family=" + family + ", version=" + version + ", arch=" + arch + ", is64Bit="
203            + is64Bit + ", description=" + description + "]";
204   }
205 
206}

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