@Override
  public List<Release> getReleasesByComponentId(String id, User user) throws TException {
    assertUser(user);
    assertId(id);

    return handler.getReleasesFromComponentId(id, user);
  }
  @Override
  public Component getComponentByIdForEdit(String id, User user) throws TException {
    assertId(id);
    assertUser(user);

    return handler.getComponentForEdit(id, user);
  }
  @Override
  public RequestStatus unsubscribeRelease(String id, User user) throws TException {
    assertUser(user);
    assertId(id);

    return handler.unsubscribeRelease(id, user);
  }
  @Override
  public Release getReleaseByIdForEdit(String id, User user) throws TException {
    assertId(id);
    assertUser(user);

    return handler.getReleaseForEdit(id, user);
  }
  //////////////////////////////////
  // SUBSCRIBE INDIVIDUAL OBJECTS //
  //////////////////////////////////
  @Override
  public RequestStatus subscribeComponent(String id, User user) throws TException {
    assertUser(user);
    assertId(id);

    return handler.subscribeComponent(id, user);
  }
  @Override
  public RequestStatus updateComponent(Component component, User user) throws TException {
    assertNotNull(component);
    assertId(component.getId());
    assertUser(user);

    return handler.updateComponent(component, user);
  }
  @Override
  public AddDocumentRequestSummary addComponent(Component component, User user) throws TException {
    assertNotNull(component);
    assertIdUnset(component.getId());
    assertUser(user);

    return handler.addComponent(component, user.getEmail());
  }
  @Override
  public RequestStatus updateReleaseFossology(Release release, User user) throws TException {
    assertNotNull(release);
    assertId(release.getId());
    assertUser(user);

    return handler.updateRelease(release, user, ThriftUtils.immutableOfReleaseForFossology());
  }
  @Override
  public AddDocumentRequestSummary addRelease(Release release, User user) throws TException {
    assertNotNull(release);
    assertIdUnset(release.getId());
    assertUser(user);

    return handler.addRelease(release, user.getEmail());
  }
  @Override
  public List<Release> getReleaseSummary(User user) throws TException {
    assertUser(user);

    return handler.getReleaseSummary();
  }
 @Override
 public Map<String, List<String>> getDuplicateReleaseSources() throws TException {
   return handler.getDuplicateReleaseSources();
 }
 @Override
 public Component getComponentForReportFromFossologyUploadId(String uploadId) throws TException {
   return handler.getComponentForReportFromFossologyUploadId(uploadId);
 }
 public RequestStatus updateReleaseFromModerationRequest(
     Release releaseAdditions, Release releaseDeletions, User user) {
   return handler.updateReleaseFromAdditionsAndDeletions(releaseAdditions, releaseDeletions, user);
 }
 @Override
 public RequestSummary updateReleases(Set<Release> releases, User user) throws TException {
   assertUser(user);
   return handler.updateReleases(releases, user);
 }
 public RequestStatus updateComponentFromModerationRequest(
     Component componentAdditions, Component componentDeletions, User user) {
   return handler.updateComponentFromAdditionsAndDeletions(
       componentAdditions, componentDeletions, user);
 }
  @Override
  public RequestSummary updateComponents(Set<Component> components, User user) throws TException {
    assertUser(user);

    return handler.updateComponents(components, user);
  }
 @Override
 public List<Component> getComponentDetailedSummaryForExport() throws TException {
   return handler.getComponentDetailedSummaryForExport();
 }
  @Override
  public List<ReleaseLink> getLinkedReleases(Map<String, String> relations) throws TException {
    assertNotNull(relations);

    return handler.getLinkedReleases(relations);
  }
 @Override
 public List<Component> searchComponentForExport(String name) throws TException {
   return handler.searchComponentByNameForExport(name);
 }
 @Override
 public Set<String> getUsedAttachmentContentIds() throws TException {
   return handler.getusedAttachmentContentIds();
 }
 @Override
 public Set<Attachment> getSourceAttachments(String releaseId) throws TException {
   return handler.getSourceAttachments(releaseId);
 }
 @Override
 public List<Release> getReleasesFromVendorIds(Set<String> ids) throws TException {
   return handler.getReleasesFromVendorIds(ids);
 }
 @Override
 public List<ReleaseLink> getLinkedReleaseRelations(Map<String, ReleaseRelationship> relations)
     throws TException {
   return handler.getLinkedReleases(relations);
 }
 @Override
 public Set<Component> getUsingComponentsForRelease(String releaseId) throws TException {
   return handler.getUsingComponents(releaseId);
 }
 @Override
 public Map<String, List<String>> getDuplicateComponents() throws TException {
   return handler.getDuplicateComponents();
 }
 @Override
 public Set<Component> getUsingComponentsForComponent(Set<String> releaseIds) throws TException {
   return handler.getUsingComponents(releaseIds);
 }
  @Override
  public List<Component> getComponentSummary(User user) throws TException {
    assertUser(user);

    return handler.getComponentSummary(user);
  }
 @Override
 public boolean releaseIsUsed(String releaseId) throws TException {
   return handler.checkIfInUse(releaseId);
 }
  @Override
  public List<Component> getMyComponents(User user) throws TException {
    assertUser(user);

    return handler.getMyComponents(user.getEmail());
  }
 @Override
 public boolean componentIsUsed(String componentId) throws TException {
   return handler.checkIfInUseComponent(componentId);
 }