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