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

COVERAGE SUMMARY FOR SOURCE FILE [BlobBuilderImpl.java]

nameclass, %method, %block, %line, %
BlobBuilderImpl.java100% (2/2)41%  (12/29)58%  (139/238)58%  (32/55)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class BlobBuilderImpl$PayloadBlobBuilderImpl100% (1/1)33%  (6/18)48%  (60/125)46%  (13/28)
contentDisposition (String): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/7)0%   (0/2)
contentEncoding (String): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/7)0%   (0/2)
contentLanguage (String): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/7)0%   (0/2)
forSigning (): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/4)0%   (0/1)
name (String): BlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
payload (File): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
payload (InputStream): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
payload (Payload): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
payload (String): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
payload (byte []): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
type (StorageType): BlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
userMetadata (Map): BlobBuilder 0%   (0/1)0%   (0/5)0%   (0/1)
BlobBuilderImpl$PayloadBlobBuilderImpl (BlobBuilderImpl, BlobBuilder, Payload... 100% (1/1)100% (24/24)100% (5/5)
build (): Blob 100% (1/1)100% (4/4)100% (1/1)
calculateMD5 (): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (10/10)100% (1/1)
contentLength (long): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (8/8)100% (2/2)
contentMD5 (byte []): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (7/7)100% (2/2)
contentType (String): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (7/7)100% (2/2)
     
class BlobBuilderImpl100% (1/1)55%  (6/11)70%  (79/113)70%  (19/27)
payload (File): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/7)0%   (0/1)
payload (InputStream): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/7)0%   (0/1)
payload (byte []): BlobBuilder$PayloadBlobBuilder 0%   (0/1)0%   (0/7)0%   (0/1)
type (StorageType): BlobBuilder 0%   (0/1)0%   (0/5)0%   (0/2)
userMetadata (Map): BlobBuilder 0%   (0/1)0%   (0/8)0%   (0/3)
BlobBuilderImpl (Crypto): void 100% (1/1)100% (15/15)100% (5/5)
build (): Blob 100% (1/1)100% (34/34)100% (8/8)
forSigning (): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (6/6)100% (1/1)
name (String): BlobBuilder 100% (1/1)100% (5/5)100% (2/2)
payload (Payload): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (12/12)100% (2/2)
payload (String): BlobBuilder$PayloadBlobBuilder 100% (1/1)100% (7/7)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.blobstore.domain.internal;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22import static org.jclouds.io.Payloads.newPayload;
23 
24import java.io.File;
25import java.io.IOException;
26import java.io.InputStream;
27import java.util.Map;
28 
29import javax.inject.Inject;
30 
31import org.jclouds.blobstore.domain.Blob;
32import org.jclouds.blobstore.domain.BlobBuilder;
33import org.jclouds.blobstore.domain.StorageType;
34import org.jclouds.crypto.Crypto;
35import org.jclouds.io.Payload;
36import org.jclouds.io.Payloads;
37import org.jclouds.io.payloads.PhantomPayload;
38 
39import com.google.common.collect.Maps;
40 
41/**
42 * @author Adrian Cole
43 */
44public class BlobBuilderImpl implements BlobBuilder {
45   private final Crypto crypto;
46 
47   @Inject
48   public BlobBuilderImpl(Crypto crypto) {
49      this.crypto = checkNotNull(crypto, "crypto");
50   }
51 
52   private Payload payload;
53   private String name;
54   private Map<String, String> userMetadata = Maps.newLinkedHashMap();
55   private StorageType type = StorageType.BLOB;
56 
57   @Override
58   public BlobBuilder name(String name) {
59      this.name = name;
60      return this;
61   }
62 
63   @Override
64   public BlobBuilder type(StorageType type) {
65      this.type = type;
66      return this;
67   }
68 
69   @Override
70   public BlobBuilder userMetadata(Map<String, String> userMetadata) {
71      if (userMetadata != null)
72         this.userMetadata = Maps.newLinkedHashMap(userMetadata);
73      return this;
74   }
75 
76   @Override
77   public PayloadBlobBuilder payload(Payload payload) {
78      this.payload = payload;
79      return new PayloadBlobBuilderImpl(this, payload, crypto);
80   }
81 
82   /**
83    * {@inheritDoc}
84    */
85   @Override
86   public PayloadBlobBuilder payload(InputStream data) {
87      return payload(newPayload(checkNotNull(data, "data")));
88   }
89 
90   /**
91    * {@inheritDoc}
92    */
93   @Override
94   public PayloadBlobBuilder payload(byte[] data) {
95      return payload(newPayload(checkNotNull(data, "data")));
96   }
97 
98   /**
99    * {@inheritDoc}
100    */
101   @Override
102   public PayloadBlobBuilder payload(String data) {
103      return payload(newPayload(checkNotNull(data, "data")));
104   }
105 
106   /**
107    * {@inheritDoc}
108    */
109   @Override
110   public PayloadBlobBuilder payload(File data) {
111      return payload(newPayload(checkNotNull(data, "data")));
112   }
113 
114   @Override
115   public Blob build() {
116      Blob blob = new BlobImpl(new MutableBlobMetadataImpl());
117      if (name != null)
118         blob.getMetadata().setName(name);
119      if (payload != null)
120         blob.setPayload(payload);
121      blob.getMetadata().setUserMetadata(userMetadata);
122      blob.getMetadata().setType(type);
123      return blob;
124   }
125 
126   public class PayloadBlobBuilderImpl implements PayloadBlobBuilder {
127      private final BlobBuilder builder;
128      private final Payload payload;
129      private final Crypto crypto;
130 
131      public PayloadBlobBuilderImpl(BlobBuilder builder, Payload payload, Crypto crypto) {
132         this.builder = checkNotNull(builder, "builder");
133         this.payload = checkNotNull(payload, "payload");
134         this.crypto = checkNotNull(crypto, "crypto");
135      }
136 
137      @Override
138      public BlobBuilder name(String name) {
139         return builder.name(name);
140      }
141 
142      @Override
143      public BlobBuilder type(StorageType type) {
144         return builder.type(type);
145      }
146 
147      @Override
148      public BlobBuilder userMetadata(Map<String, String> userMetadata) {
149         return builder.userMetadata(userMetadata);
150      }
151 
152      @Override
153      public PayloadBlobBuilder payload(Payload payload) {
154         return builder.payload(payload);
155      }
156 
157      @Override
158      public PayloadBlobBuilder calculateMD5() throws IOException {
159         return builder.payload(Payloads.calculateMD5(payload, crypto.md5()));
160      }
161 
162      @Override
163      public PayloadBlobBuilder payload(InputStream payload) {
164         return builder.payload(payload);
165      }
166 
167      @Override
168      public PayloadBlobBuilder payload(byte[] payload) {
169         return builder.payload(payload);
170      }
171 
172      @Override
173      public PayloadBlobBuilder payload(String payload) {
174         return builder.payload(payload);
175      }
176 
177      @Override
178      public PayloadBlobBuilder payload(File payload) {
179         return builder.payload(payload);
180      }
181 
182      @Override
183      public Blob build() {
184         return builder.build();
185      }
186 
187      @Override
188      public PayloadBlobBuilder contentLength(long contentLength) {
189         payload.getContentMetadata().setContentLength(contentLength);
190         return this;
191      }
192 
193      @Override
194      public PayloadBlobBuilder contentMD5(byte[] md5) {
195         payload.getContentMetadata().setContentMD5(md5);
196         return this;
197      }
198 
199      @Override
200      public PayloadBlobBuilder contentType(String contentType) {
201         payload.getContentMetadata().setContentType(contentType);
202         return this;
203      }
204 
205      @Override
206      public PayloadBlobBuilder contentDisposition(String contentDisposition) {
207         payload.getContentMetadata().setContentDisposition(contentDisposition);
208         return this;
209      }
210 
211      @Override
212      public PayloadBlobBuilder contentLanguage(String contentLanguage) {
213         payload.getContentMetadata().setContentLanguage(contentLanguage);
214         return this;
215 
216      }
217 
218      @Override
219      public PayloadBlobBuilder contentEncoding(String contentEncoding) {
220         payload.getContentMetadata().setContentEncoding(contentEncoding);
221         return this;
222      }
223 
224      @Override
225      public PayloadBlobBuilder forSigning() {
226         return builder.forSigning();
227      }
228 
229   }
230 
231   @Override
232   public PayloadBlobBuilder forSigning() {
233      return payload(new PhantomPayload());
234   }
235}

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