View Javadoc

1   package com.atlassian.marketplace.client.impl;
2   
3   import java.net.URI;
4   
5   import com.atlassian.marketplace.client.MpacException;
6   import com.atlassian.marketplace.client.api.AddonCategories;
7   import com.atlassian.marketplace.client.api.ApplicationKey;
8   import com.atlassian.marketplace.client.api.Applications;
9   import com.atlassian.marketplace.client.model.AddonCategorySummary;
10  import com.atlassian.marketplace.client.model.Application;
11  
12  import com.google.common.collect.ImmutableList;
13  
14  final class AddonCategoriesImpl implements AddonCategories
15  {
16      private final ApiHelper apiHelper;
17      private final Applications applicationsApi;
18  
19      AddonCategoriesImpl(ApiHelper apiHelper, Applications applicationsApi)
20      {
21          this.apiHelper = apiHelper;
22          this.applicationsApi = applicationsApi;
23          // Note that the per-application category list resource is accessed through a link from the application resource,
24          // because we don't have link templates in the API for accessing it directly.
25      }
26  
27      @Override
28      public Iterable<AddonCategorySummary> findForApplication(ApplicationKey appKey) throws MpacException
29      {
30          for (Application a: applicationsApi.getByKey(appKey))
31          {
32              URI uri = apiHelper.requireLinkUri(a.getLinks(), "addonCategories", Application.class);
33              InternalModel.AddonCategories listRep = apiHelper.getEntity(uri, InternalModel.AddonCategories.class);
34              return ImmutableList.copyOf(listRep._embedded.categories);
35          }
36          return ImmutableList.of();
37      }
38  }