1 package com.atlassian.plugins.rest.common.expand.resolver;
2
3 import com.atlassian.plugins.rest.common.expand.EntityExpander;
4 import static com.google.common.base.Preconditions.checkNotNull;
5
6 import java.util.List;
7
8 public class ChainingEntityExpanderResolver implements EntityExpanderResolver
9 {
10 private final List<EntityExpanderResolver> resolvers;
11
12 public ChainingEntityExpanderResolver(List<EntityExpanderResolver> resolvers)
13 {
14 for (EntityExpanderResolver resolver : checkNotNull(resolvers))
15 {
16 if (resolver == null)
17 {
18 throw new NullPointerException("Resolver items cannot be null!");
19 }
20 }
21 this.resolvers = resolvers;
22 }
23
24 public boolean hasExpander(Class<?> type)
25 {
26 checkNotNull(type);
27 for (EntityExpanderResolver resolver : resolvers)
28 {
29 if (resolver.hasExpander(type))
30 {
31 return true;
32 }
33 }
34 return false;
35 }
36
37 public <T> EntityExpander<T> getExpander(Class<? extends T> type)
38 {
39 for (EntityExpanderResolver resolver : resolvers)
40 {
41 final EntityExpander<T> expander = resolver.getExpander(type);
42 if (expander != null)
43 {
44 return expander;
45 }
46 }
47 return null;
48 }
49 }