EMMA Coverage Report (generated Fri Aug 26 14:14:05 EDT 2011)
[all classes][org.jclouds.aws.ec2.xml]

COVERAGE SUMMARY FOR SOURCE FILE [SpotHandler.java]

nameclass, %method, %block, %line, %
SpotHandler.java100% (1/1)100% (4/4)92%  (108/117)97%  (22.4/23)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SpotHandler100% (1/1)100% (4/4)92%  (108/117)97%  (22.4/23)
getResult (): Spot 100% (1/1)71%  (22/31)87%  (4.4/5)
SpotHandler (DateService, String): void 100% (1/1)100% (17/17)100% (6/6)
characters (char [], int, int): void 100% (1/1)100% (8/8)100% (2/2)
endElement (String, String, String): void 100% (1/1)100% (61/61)100% (10/10)

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.xml;
20 
21import javax.inject.Inject;
22 
23import org.jclouds.aws.ec2.domain.Spot;
24import org.jclouds.aws.util.AWSUtils;
25import org.jclouds.date.DateService;
26import org.jclouds.http.functions.ParseSax;
27import org.jclouds.location.Region;
28 
29/**
30 * 
31 * @author Adrian Cole
32 */
33public class SpotHandler extends ParseSax.HandlerForGeneratedRequestWithResult<Spot> {
34   private StringBuilder currentText = new StringBuilder();
35 
36   protected final DateService dateService;
37   protected final String defaultRegion;
38 
39   @Inject
40   public SpotHandler(DateService dateService, @Region String defaultRegion) {
41      this.dateService = dateService;
42      this.defaultRegion = defaultRegion;
43   }
44 
45   private Spot.Builder builder = Spot.builder();
46 
47   public Spot getResult() {
48      try {
49         String region = getRequest() == null ? null : AWSUtils.findRegionInArgsOrNull(getRequest());
50         if (region == null)
51            region = defaultRegion;
52         return builder.region(region).build();
53      } finally {
54         builder.clear();
55      }
56   }
57 
58   public void endElement(String uri, String name, String qName) {
59      if (qName.equals("instanceType")) {
60         builder.instanceType(currentText.toString().trim());
61      } else if (qName.equals("productDescription")) {
62         builder.productDescription(currentText.toString().trim());
63      } else if (qName.equals("spotPrice")) {
64         builder.spotPrice(Float.parseFloat(currentText.toString().trim()));
65      } else if (qName.equals("timestamp")) {
66         builder.timestamp(dateService.iso8601DateParse(currentText.toString().trim()));
67      }
68      currentText = new StringBuilder();
69   }
70 
71   public void characters(char ch[], int start, int length) {
72      currentText.append(ch, start, length);
73   }
74}

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