|
18 | 18 |
|
19 | 19 | import java.util.ArrayList; |
20 | 20 | import java.util.Calendar; |
| 21 | +import java.util.HashMap; |
21 | 22 | import java.util.List; |
| 23 | +import java.util.Map; |
| 24 | +import java.util.Set; |
22 | 25 | import java.util.UUID; |
23 | 26 |
|
24 | 27 | import org.apache.commons.codec.binary.Base64; |
@@ -210,88 +213,104 @@ public CreateVolumeResponse createVolume(CreateVolume createVolume) { |
210 | 213 |
|
211 | 214 | public CreateTagsResponse createTags(CreateTags createTags) { |
212 | 215 | EC2Tags request = new EC2Tags(); |
| 216 | + ArrayList<String> resourceIdList = new ArrayList<String>(); |
| 217 | + Map<String, String> resourceTagList = new HashMap<String, String>(); |
| 218 | + |
213 | 219 | CreateTagsType ctt = createTags.getCreateTags(); |
214 | 220 |
|
215 | 221 | ResourceIdSetType resourceIds = ctt.getResourcesSet(); |
216 | 222 | ResourceTagSetType resourceTags = ctt.getTagSet(); |
217 | | - request = toResourceTypeAndIds(resourceIds); |
| 223 | + |
| 224 | + ResourceIdSetItemType[] resourceIdItems = resourceIds.getItem(); |
| 225 | + if (resourceIdItems != null) { |
| 226 | + for( int i=0; i < resourceIdItems.length; i++ ) |
| 227 | + resourceIdList.add(resourceIdItems[i].getResourceId()); |
| 228 | + } |
| 229 | + request = toResourceTypeAndIds(request, resourceIdList); |
| 230 | + |
218 | 231 | //add resource tag's to the request |
219 | | - if (resourceTags != null) { |
220 | | - ResourceTagSetItemType[] items = resourceTags.getItem(); |
221 | | - if (items != null) { |
222 | | - for( int i=0; i < items.length; i++ ) { |
223 | | - EC2TagKeyValue param1 = new EC2TagKeyValue(); |
224 | | - param1.setKey(items[i].getKey()); |
225 | | - param1.setValue(items[i].getValue()); |
226 | | - request.addResourceTag(param1); |
227 | | - } |
228 | | - } |
| 232 | + ResourceTagSetItemType[] resourceTagItems = resourceTags.getItem(); |
| 233 | + if (resourceTagItems != null) { |
| 234 | + for( int i=0; i < resourceTagItems.length; i++ ) |
| 235 | + resourceTagList.put(resourceTagItems[i].getKey(), resourceTagItems[i].getValue()); |
229 | 236 | } |
| 237 | + request = toResourceTag(request, resourceTagList); |
| 238 | + |
230 | 239 | return toCreateTagsResponse( engine.modifyTags( request, "create")); |
231 | 240 | } |
232 | 241 |
|
233 | 242 | public DeleteTagsResponse deleteTags(DeleteTags deleteTags) { |
234 | 243 | EC2Tags request = new EC2Tags(); |
| 244 | + ArrayList<String> resourceIdList = new ArrayList<String>(); |
| 245 | + Map<String, String> resourceTagList = new HashMap<String, String>(); |
| 246 | + |
235 | 247 | DeleteTagsType dtt = deleteTags.getDeleteTags(); |
236 | 248 |
|
237 | 249 | ResourceIdSetType resourceIds = dtt.getResourcesSet(); |
238 | 250 | DeleteTagsSetType resourceTags = dtt.getTagSet(); |
239 | | - request = toResourceTypeAndIds(resourceIds); |
| 251 | + |
| 252 | + ResourceIdSetItemType[] resourceIdItems = resourceIds.getItem(); |
| 253 | + |
| 254 | + if (resourceIdItems != null) { |
| 255 | + for( int i=0; i < resourceIdItems.length; i++ ) |
| 256 | + resourceIdList.add(resourceIdItems[i].getResourceId()); |
| 257 | + } |
| 258 | + request = toResourceTypeAndIds(request, resourceIdList); |
| 259 | + |
240 | 260 | //add resource tag's to the request |
241 | | - if (resourceTags != null) { |
242 | | - DeleteTagsSetItemType[] items = resourceTags.getItem(); |
243 | | - if (items != null) { |
244 | | - for( int i=0; i < items.length; i++ ) { |
245 | | - EC2TagKeyValue param1 = new EC2TagKeyValue(); |
246 | | - param1.setKey(items[i].getKey()); |
247 | | - if (items[i].getValue() != null) |
248 | | - param1.setValue(items[i].getValue()); |
249 | | - request.addResourceTag(param1); |
250 | | - } |
251 | | - } |
| 261 | + DeleteTagsSetItemType[] resourceTagItems = resourceTags.getItem(); |
| 262 | + if (resourceTagItems != null) { |
| 263 | + for( int i=0; i < resourceTagItems.length; i++ ) |
| 264 | + resourceTagList.put(resourceTagItems[i].getKey(), resourceTagItems[i].getValue()); |
252 | 265 | } |
| 266 | + request = toResourceTag(request, resourceTagList); |
| 267 | + |
253 | 268 | return toDeleteTagsResponse( engine.modifyTags( request, "delete")); |
254 | 269 | } |
255 | 270 |
|
256 | | - private EC2Tags toResourceTypeAndIds(ResourceIdSetType resourceIds) { |
257 | | - EC2Tags request = new EC2Tags(); |
258 | | - //add resource-type and resource-id's to the request |
259 | | - if (resourceIds != null) { |
260 | | - ResourceIdSetItemType[] items = resourceIds.getItem(); |
261 | | - List<String> resourceTypeList = new ArrayList<String>(); |
262 | | - if (items != null) { |
263 | | - for( int i=0; i < items.length; i++ ) { |
264 | | - if (!items[i].getResourceId().contains(":") || items[i].getResourceId().split(":").length != 2) { |
265 | | - throw new EC2ServiceException( ClientError.InvalidResourceId_Format, |
266 | | - "Invalid Format. ResourceId format is resource-type:resource-uuid"); |
267 | | - } |
268 | | - String resourceType = items[i].getResourceId().split(":")[0]; |
269 | | - if (resourceTypeList.isEmpty()) |
270 | | - resourceTypeList.add(resourceType); |
271 | | - else { |
272 | | - Boolean existsInList = false; |
273 | | - for (String addedResourceType : resourceTypeList) { |
274 | | - if (addedResourceType.equalsIgnoreCase(resourceType)) { |
275 | | - existsInList = true; |
276 | | - break; |
277 | | - } |
278 | | - } |
279 | | - if (!existsInList) |
280 | | - resourceTypeList.add(resourceType); |
281 | | - } |
282 | | - } |
283 | | - for (String resourceType : resourceTypeList){ |
284 | | - EC2TagTypeId param1 = new EC2TagTypeId(); |
285 | | - param1.setResourceType(resourceType); |
286 | | - for( int i=0; i < items.length; i++ ) { |
287 | | - String[] resourceTag = items[i].getResourceId().split(":"); |
288 | | - if (resourceType.equals(resourceTag[0])) |
289 | | - param1.addResourceId(resourceTag[1]); |
| 271 | + public static EC2Tags toResourceTypeAndIds( EC2Tags request, ArrayList<String> resourceIdList ) { |
| 272 | + List<String> resourceTypeList = new ArrayList<String>(); |
| 273 | + for (String resourceId : resourceIdList) { |
| 274 | + if (!resourceId.contains(":") || resourceId.split(":").length != 2) { |
| 275 | + throw new EC2ServiceException( ClientError.InvalidResourceId_Format, |
| 276 | + "Invalid Format. ResourceId format is resource-type:resource-uuid"); |
| 277 | + } |
| 278 | + String resourceType = resourceId.split(":")[0]; |
| 279 | + if (resourceTypeList.isEmpty()) |
| 280 | + resourceTypeList.add(resourceType); |
| 281 | + else { |
| 282 | + Boolean existsInList = false; |
| 283 | + for (String addedResourceType : resourceTypeList) { |
| 284 | + if (addedResourceType.equalsIgnoreCase(resourceType)) { |
| 285 | + existsInList = true; |
| 286 | + break; |
290 | 287 | } |
291 | | - request.addResourceType(param1); |
292 | 288 | } |
| 289 | + if (!existsInList) |
| 290 | + resourceTypeList.add(resourceType); |
293 | 291 | } |
294 | 292 | } |
| 293 | + for (String resourceType : resourceTypeList) { |
| 294 | + EC2TagTypeId param1 = new EC2TagTypeId(); |
| 295 | + param1.setResourceType(resourceType); |
| 296 | + for (String resourceId : resourceIdList) { |
| 297 | + String[] resourceTag = resourceId.split(":"); |
| 298 | + if (resourceType.equals(resourceTag[0])) |
| 299 | + param1.addResourceId(resourceTag[1]); |
| 300 | + } |
| 301 | + request.addResourceType(param1); |
| 302 | + } |
| 303 | + return request; |
| 304 | + } |
| 305 | + |
| 306 | + public static EC2Tags toResourceTag( EC2Tags request, Map<String, String> resourceTagList ) { |
| 307 | + Set<String> resourceTagKeySet = resourceTagList.keySet(); |
| 308 | + for (String resourceTagKey : resourceTagKeySet) { |
| 309 | + EC2TagKeyValue param1 = new EC2TagKeyValue(); |
| 310 | + param1.setKey(resourceTagKey); |
| 311 | + param1.setValue(resourceTagList.get(resourceTagKey)); |
| 312 | + request.addResourceTag(param1); |
| 313 | + } |
295 | 314 | return request; |
296 | 315 | } |
297 | 316 |
|
|
0 commit comments