public void registerFeedJoint(IFeedJoint feedJoint) {
   List<IFeedJoint> feedJointsOnPipeline = feedPipeline.get(feedJoint.getOwnerFeedId());
   if (feedJointsOnPipeline == null) {
     feedJointsOnPipeline = new ArrayList<IFeedJoint>();
     feedPipeline.put(feedJoint.getOwnerFeedId(), feedJointsOnPipeline);
     feedJointsOnPipeline.add(feedJoint);
   } else {
     if (!feedJointsOnPipeline.contains(feedJoint)) {
       feedJointsOnPipeline.add(feedJoint);
     } else {
       throw new IllegalArgumentException("Feed joint " + feedJoint + " already registered");
     }
   }
 }
  public synchronized void submitFeedConnectionRequest(
      IFeedJoint feedJoint, final FeedConnectionRequest request) throws Exception {
    List<String> locations = null;
    switch (feedJoint.getType()) {
      case INTAKE:
        FeedIntakeInfo intakeInfo = intakeJobInfos.get(feedJoint.getOwnerFeedId());
        locations = intakeInfo.getIntakeLocation();
        break;
      case COMPUTE:
        FeedConnectionId connectionId = feedJoint.getProvider();
        FeedConnectJobInfo cInfo = connectJobInfos.get(connectionId);
        locations = cInfo.getComputeLocations();
        break;
    }

    SubscribeFeedWork work = new SubscribeFeedWork(locations.toArray(new String[] {}), request);
    FeedWorkManager.INSTANCE.submitWork(
        work, new SubscribeFeedWork.FeedSubscribeWorkEventListener());
  }