package com.github.dreamhead.moco.parser.model; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.github.dreamhead.moco.MocoRest; import com.github.dreamhead.moco.RestSetting; import com.google.common.base.Function; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import java.util.List; import static com.github.dreamhead.moco.parser.model.RestIds.asIdMatcher; import static com.github.dreamhead.moco.util.Iterables.head; import static com.github.dreamhead.moco.util.Iterables.tail; import static com.google.common.collect.FluentIterable.from; @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) public class RestSubResourceSetting extends ResourceSetting { private String id; @Override public String toString() { return MoreObjects.toStringHelper(this) .omitNullValues() .add("name", this.getName()) .add("get", get) .add("post", post) .add("put", put) .add("delete", delete) .add("head", head) .add("patch", patch) .add("sub resource", resource) .add("id", id) .toString(); } private static Function<RestSubResourceSetting, RestSetting> toSubResourceSetting() { return new Function<RestSubResourceSetting, RestSetting>() { @Override public RestSetting apply(final RestSubResourceSetting input) { RestSetting[] settings = input.getSettings(); return MocoRest.id(asIdMatcher(input.id)) .name(input.getName()).settings(head(settings), tail(settings)); } }; } public static Iterable<RestSetting> asSubRestSetting(final List<RestSubResourceSetting> setting) { if (setting == null || setting.isEmpty()) { return ImmutableList.of(); } return from(setting).transform(toSubResourceSetting()); } }