1 package com.atlassian.plugins.rest.common.expand;
2
3 import com.atlassian.plugins.rest.common.expand.resolver.EntityExpanderResolver;
4
5 public abstract class AbstractRecursiveEntityExpander<T> implements EntityExpander<T> {
6 public final T expand(ExpandContext<T> context, EntityExpanderResolver expanderResolver, EntityCrawler entityCrawler) {
7 final T expandedEntity = expandInternal(context.getEntity());
8 if (!context.getEntityExpandParameter().isEmpty()) {
9 entityCrawler.crawl(expandedEntity, context.getEntityExpandParameter().getExpandParameter(context.getExpandable()), expanderResolver);
10 }
11 return expandedEntity;
12 }
13
14 protected abstract T expandInternal(T entity);
15 }