class StackArtifactResourceProvider extends AbstractControllerResourceProvider {

  @Override
  public Set<Resource> getResources(Request request, Predicate predicate)
      throws SystemException,
             UnsupportedPropertyException,
             NoSuchResourceException,
             NoSuchParentResourceException {

    Set<Resource> resources = new HashSet<>();

    resources.addAll(getKerberosDescriptors(request, predicate));
    resources.addAll(getMetricsDescriptors(request, predicate));
    resources.addAll(getWidgetsDescriptors(request, predicate));
    // add other artifacts types here

    if (resources.isEmpty()) {
      throw new NoSuchResourceException(
          "The requested resource doesn't exist: Artifact not found, " + predicate);
    }

    return resources;
  }

  protected  StackArtifactResourceProvider(AmbariManagementController managementController);

}