1 package com.atlassian.jira.rest.client.api;
2
3 import javax.annotation.Nullable;
4 import java.util.Collections;
5 import java.util.Iterator;
6
7
8
9
10
11
12
13
14
15 public class OptionalIterable<T> implements Iterable<T> {
16
17 @SuppressWarnings("unchecked")
18 private static final OptionalIterable absentInstance = new OptionalIterable(null);
19
20 @Nullable
21 private final Iterable<T> iterable;
22
23 @SuppressWarnings("unchecked")
24 public static <T> OptionalIterable<T> absent() {
25 return absentInstance;
26 }
27
28 public OptionalIterable(@Nullable Iterable<T> iterable) {
29 this.iterable = iterable;
30 }
31
32
33
34
35
36 @Override
37 public Iterator<T> iterator() {
38 return isSupported()
39 ? iterable.iterator()
40 : Collections.<T>emptyList().iterator();
41 }
42
43
44
45
46 public boolean isSupported() {
47 return iterable != null;
48 }
49
50 @Override
51 public String toString() {
52 return isSupported() ? iterable.toString() : Collections.emptyList().toString();
53 }
54 }