EMMA Coverage Report (generated Mon Oct 17 05:41:20 EDT 2011)
[all classes][org.jclouds.vcloud.xml]

COVERAGE SUMMARY FOR SOURCE FILE [OrgNetworkHandler.java]

nameclass, %method, %block, %line, %
OrgNetworkHandler.java100% (1/1)100% (6/6)60%  (517/858)64%  (111/174)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class OrgNetworkHandler100% (1/1)100% (6/6)60%  (517/858)64%  (111/174)
endElement (String, String, String): void 100% (1/1)54%  (387/715)58%  (84/144)
startElement (String, String, String, Attributes): void 100% (1/1)81%  (55/68)80%  (12/15)
OrgNetworkHandler (TaskHandler): void 100% (1/1)100% (29/29)100% (10/10)
characters (char [], int, int): void 100% (1/1)100% (8/8)100% (2/2)
currentOrNull (): String 100% (1/1)100% (13/13)100% (2/2)
getResult (): OrgNetwork 100% (1/1)100% (25/25)100% (1/1)

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.vcloud.xml;
20 
21import static org.jclouds.util.SaxUtils.equalsOrSuffix;
22import static org.jclouds.vcloud.util.Utils.newReferenceType;
23 
24import java.util.List;
25import java.util.Map;
26import java.util.Set;
27 
28import javax.inject.Inject;
29 
30import org.jclouds.http.functions.ParseSax;
31import org.jclouds.util.SaxUtils;
32import org.jclouds.vcloud.domain.ReferenceType;
33import org.jclouds.vcloud.domain.Task;
34import org.jclouds.vcloud.domain.network.DhcpService;
35import org.jclouds.vcloud.domain.network.Features;
36import org.jclouds.vcloud.domain.network.FenceMode;
37import org.jclouds.vcloud.domain.network.FirewallService;
38import org.jclouds.vcloud.domain.network.IpRange;
39import org.jclouds.vcloud.domain.network.IpScope;
40import org.jclouds.vcloud.domain.network.NatService;
41import org.jclouds.vcloud.domain.network.OrgNetwork;
42import org.jclouds.vcloud.domain.network.firewall.FirewallPolicy;
43import org.jclouds.vcloud.domain.network.firewall.FirewallProtocols;
44import org.jclouds.vcloud.domain.network.firewall.FirewallRule;
45import org.jclouds.vcloud.domain.network.internal.OrgNetworkImpl;
46import org.jclouds.vcloud.domain.network.nat.NatPolicy;
47import org.jclouds.vcloud.domain.network.nat.NatProtocol;
48import org.jclouds.vcloud.domain.network.nat.NatRule;
49import org.jclouds.vcloud.domain.network.nat.NatType;
50import org.jclouds.vcloud.domain.network.nat.rules.MappingMode;
51import org.jclouds.vcloud.domain.network.nat.rules.OneToOneVmRule;
52import org.jclouds.vcloud.domain.network.nat.rules.PortForwardingRule;
53import org.jclouds.vcloud.domain.network.nat.rules.VmRule;
54import org.xml.sax.Attributes;
55import org.xml.sax.SAXException;
56 
57import com.google.common.collect.Iterables;
58import com.google.common.collect.Lists;
59import com.google.common.collect.Sets;
60 
61/**
62 * @author Adrian Cole
63 */
64public class OrgNetworkHandler extends ParseSax.HandlerWithResult<OrgNetwork> {
65 
66   protected final TaskHandler taskHandler;
67 
68   @Inject
69   public OrgNetworkHandler(TaskHandler taskHandler) {
70      this.taskHandler = taskHandler;
71   }
72 
73   protected StringBuilder currentText = new StringBuilder();
74 
75   protected ReferenceType network;
76   protected ReferenceType org;
77   protected String orgDescription;
78   protected List<Task> tasks = Lists.newArrayList();
79 
80   protected String startAddress;
81   protected String endAddress;
82 
83   protected boolean inherited;
84   protected String gateway;
85   protected String netmask;
86   protected String dns1;
87   protected String dns2;
88   protected String dnsSuffix;
89   protected Set<IpRange> ipRanges = Sets.newLinkedHashSet();
90   protected Set<String> allocatedIpAddresses = Sets.newLinkedHashSet();
91 
92   protected IpScope ipScope;
93   protected ReferenceType parentNetwork;
94   protected FenceMode fenceMode;
95 
96   protected boolean serviceEnabled;
97   protected Integer defaultLeaseTime;
98   protected Integer maxLeaseTime;
99 
100   protected DhcpService dhcpService;
101 
102   protected boolean inFirewallRule;
103   protected boolean firewallRuleEnabled;
104   protected String firewallRuleDescription;
105   protected FirewallPolicy firewallPolicy;
106 
107   protected boolean tcp;
108   protected boolean udp;
109   protected FirewallProtocols protocols;
110   protected int port;
111   protected String destinationIp;
112 
113   protected List<FirewallRule> firewallRules = Lists.newArrayList();
114   protected FirewallService firewallService;
115 
116   protected NatType natType;
117   protected NatPolicy natPolicy;
118 
119   protected MappingMode mappingMode;
120   protected String externalIP;
121   protected String vAppScopedVmId;
122   protected int vmNicId;
123 
124   protected int externalPort;
125   protected String internalIP;
126   protected int internalPort;
127   protected NatProtocol natProtocol;
128 
129   protected String vAppScopedLocalId;
130 
131   protected List<NatRule> natRules = Lists.newArrayList();
132   protected NatService natService;
133 
134   protected Features features;
135   protected OrgNetwork.Configuration configuration;
136 
137   protected ReferenceType networkPool;
138   protected Set<String> allowedExternalIpAddresses = Sets.newLinkedHashSet();
139 
140   public OrgNetwork getResult() {
141      return new OrgNetworkImpl(network.getName(), network.getType(), network.getHref(), org, orgDescription, tasks,
142               configuration, networkPool, allowedExternalIpAddresses);
143   }
144 
145   @Override
146   public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException {
147      Map<String, String> attributes = SaxUtils.cleanseAttributes(attrs);
148      if (qName.equals("OrgNetwork")) {
149         network = newReferenceType(attributes);
150      } else if (qName.equals("FirewallRule")) {
151         this.inFirewallRule = true;
152      } else if (qName.equals("ParentNetwork")) {
153         parentNetwork = newReferenceType(attributes);
154      } else if (qName.equals("Link") && "up".equals(attributes.get("rel"))) {
155         org = newReferenceType(attributes);
156      } else {
157         taskHandler.startElement(uri, localName, qName, attrs);
158      }
159      String type = attributes.get("type");
160      if (type != null) {
161         if (type.indexOf("networkPool+xml") != -1) {
162            networkPool = newReferenceType(attributes);
163         }
164      }
165   }
166 
167   public void endElement(String uri, String name, String qName) {
168      taskHandler.endElement(uri, name, qName);
169      if (qName.equals("Task")) {
170         this.tasks.add(taskHandler.getResult());
171      } else if (qName.equals("Description")) {
172         if (inFirewallRule)
173            firewallRuleDescription = currentOrNull();
174         else
175            orgDescription = currentOrNull();
176      } else if (qName.equals("FenceMode")) {
177         fenceMode = FenceMode.fromValue(currentOrNull());
178      } else if (qName.equals("StartAddress")) {
179         startAddress = currentOrNull();
180      } else if (qName.equals("EndAddress")) {
181         endAddress = currentOrNull();
182      } else if (qName.equals("AllocatedIpAddress")) {
183         allocatedIpAddresses.add(currentOrNull());
184      } else if (qName.equals("IpRange")) {
185         ipRanges.add(new IpRange(startAddress, endAddress));
186         this.startAddress = null;
187         this.endAddress = null;
188      } else if (qName.equals("IsInherited")) {
189         inherited = Boolean.parseBoolean(currentOrNull());
190      } else if (qName.equals("Gateway")) {
191         gateway = currentOrNull();
192      } else if (qName.equals("Netmask")) {
193         netmask = currentOrNull();
194      } else if (qName.equals("Dns1")) {
195         dns1 = currentOrNull();
196      } else if (qName.equals("Dns2")) {
197         dns2 = currentOrNull();
198      } else if (qName.equals("DnsSuffix")) {
199         dnsSuffix = currentOrNull();
200      } else if (qName.equals("IpScope")) {
201         ipScope = new IpScope(inherited, gateway, netmask, dns1, dns2, dnsSuffix, ipRanges, allocatedIpAddresses);
202         this.inherited = false;
203         this.gateway = null;
204         this.netmask = null;
205         this.dns1 = null;
206         this.dns2 = null;
207         this.dnsSuffix = null;
208         this.ipRanges = Sets.newLinkedHashSet();
209         this.allocatedIpAddresses = Sets.newLinkedHashSet();
210      } else if (qName.equals("IsEnabled")) {
211         if (inFirewallRule)
212            firewallRuleEnabled = Boolean.parseBoolean(currentOrNull());
213         else
214            serviceEnabled = Boolean.parseBoolean(currentOrNull());
215      } else if (qName.equals("DefaultLeaseTime")) {
216         defaultLeaseTime = Integer.parseInt(currentOrNull());
217      } else if (qName.equals("MaxLeaseTime")) {
218         maxLeaseTime = Integer.parseInt(currentOrNull());
219      } else if (qName.equals("DhcpService")) {
220         this.dhcpService = new DhcpService(serviceEnabled, defaultLeaseTime, maxLeaseTime, Iterables
221                  .getOnlyElement(ipRanges));
222         this.serviceEnabled = false;
223         this.defaultLeaseTime = null;
224         this.maxLeaseTime = null;
225         this.ipRanges = Sets.newLinkedHashSet();
226      } else if (qName.equals("Policy")) {
227         if (inFirewallRule)
228            firewallPolicy = FirewallPolicy.fromValue(currentOrNull());
229         else
230            natPolicy = NatPolicy.fromValue(currentOrNull());
231      } else if (qName.equals("Tcp")) {
232         tcp = Boolean.parseBoolean(currentOrNull());
233      } else if (qName.equals("Udp")) {
234         udp = Boolean.parseBoolean(currentOrNull());
235      } else if (qName.equals("Protocols")) {
236         this.protocols = new FirewallProtocols(tcp, udp);
237         this.tcp = false;
238         this.udp = false;
239      } else if (qName.equals("DestinationIp")) {
240         this.destinationIp = currentOrNull();
241      } else if (qName.equals("FirewallRule")) {
242         this.inFirewallRule = false;
243         this.firewallRules.add(new FirewallRule(firewallRuleEnabled, firewallRuleDescription, firewallPolicy,
244                  protocols, port, destinationIp));
245         this.firewallRuleEnabled = false;
246         this.firewallRuleDescription = null;
247         this.firewallPolicy = null;
248         this.protocols = null;
249         this.port = -1;
250         this.destinationIp = null;
251      } else if (qName.equals("FirewallService")) {
252         firewallService = new FirewallService(serviceEnabled, firewallRules);
253         this.serviceEnabled = false;
254         this.firewallRules = Lists.newArrayList();
255      } else if (qName.equals("NatType")) {
256         natType = NatType.fromValue(currentOrNull());
257      } else if (qName.equals("MappingMode")) {
258         mappingMode = MappingMode.fromValue(currentOrNull());
259      } else if (qName.equalsIgnoreCase("ExternalIP")) {
260         externalIP = currentOrNull();
261      } else if (qName.equalsIgnoreCase("VAppScopedVmId")) {
262         vAppScopedVmId = currentOrNull();
263      } else if (qName.equalsIgnoreCase("VAppScopedLocalId")) {
264         vAppScopedLocalId = currentOrNull();
265      } else if (qName.equalsIgnoreCase("vmNicId")) {
266         vmNicId = Integer.parseInt(currentOrNull());
267      } else if (qName.equals("OneToOneVmRule")) {
268         natRules.add(new OneToOneVmRule(mappingMode, externalIP, vAppScopedVmId, vmNicId));
269         this.mappingMode = null;
270         this.externalIP = null;
271         this.vAppScopedVmId = null;
272         this.vmNicId = -1;
273      } else if (qName.equalsIgnoreCase("ExternalPort")) {
274         externalPort = Integer.parseInt(currentOrNull());
275      } else if (qName.equalsIgnoreCase("InternalIP")) {
276         internalIP = currentOrNull();
277      } else if (qName.equalsIgnoreCase("InternalPort")) {
278         internalPort = Integer.parseInt(currentOrNull());
279      } else if (equalsOrSuffix(qName, "Protocol")) {
280         natProtocol = NatProtocol.valueOf(currentOrNull());
281      } else if (qName.equals("PortForwardingRule")) {
282         natRules.add(new PortForwardingRule(externalIP, externalPort, internalIP, internalPort, natProtocol));
283         this.externalIP = null;
284         this.externalPort = -1;
285         this.internalIP = null;
286         this.internalPort = -1;
287         this.natProtocol = null;
288      } else if (qName.equals("VmRule")) {
289         natRules.add(new VmRule(externalIP, externalPort, vAppScopedLocalId, vmNicId, internalPort, natProtocol));
290         this.externalIP = null;
291         this.externalPort = -1;
292         this.vAppScopedLocalId = null;
293         this.vmNicId = -1;
294         this.internalPort = -1;
295         this.natProtocol = null;
296      } else if (qName.equals("NatService")) {
297         this.natService = new NatService(serviceEnabled, natType, natPolicy, natRules);
298         this.serviceEnabled = false;
299         this.natType = null;
300         this.natPolicy = null;
301         this.natRules = Lists.newArrayList();
302      } else if (qName.equals("Features")) {
303         this.features = new Features(dhcpService, firewallService, natService);
304         this.dhcpService = null;
305         this.firewallService = null;
306         this.natService = null;
307      } else if (qName.equals("Configuration")) {
308         configuration = new OrgNetworkImpl.ConfigurationImpl(ipScope, parentNetwork, fenceMode, features);
309         this.ipScope = null;
310         this.parentNetwork = null;
311         this.fenceMode = null;
312         this.features = null;
313      } else if (qName.equals("AllowedExternalIpAddress")) {
314         allowedExternalIpAddresses.add(currentOrNull());
315      }
316      currentText = new StringBuilder();
317   }
318 
319   public void characters(char ch[], int start, int length) {
320      currentText.append(ch, start, length);
321   }
322 
323   protected String currentOrNull() {
324      String returnVal = currentText.toString().trim();
325      return returnVal.equals("") ? null : returnVal;
326   }
327}

[all classes][org.jclouds.vcloud.xml]
EMMA 2.0.5312 (C) Vladimir Roubtsov