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 public class OptionalIterable<T> implements Iterable<T> {
15
16 @SuppressWarnings("unchecked")
17 private static final OptionalIterable absentInstance = new OptionalIterable(null);
18
19 @Nullable
20 private final Iterable<T> iterable;
21
22 @SuppressWarnings("unchecked")
23 public static <T> OptionalIterable<T> absent() {
24 return absentInstance;
25 }
26
27 public OptionalIterable(@Nullable Iterable<T> iterable) {
28 this.iterable = iterable;
29 }
30
31
32
33
34
35 @Override
36 public Iterator<T> iterator() {
37 return isSupported()
38 ? iterable.iterator()
39 : Collections.<T>emptyList().iterator();
40 }
41
42
43
44
45 public boolean isSupported() {
46 return iterable != null;
47 }
48 }