code: public Subscription subscribe(String jid) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
          PubSub pubSub = createPubsubPacket(Type.set, new SubscribeExtension(jid, getId()));
          PubSub reply = sendPubsubPacket(pubSub);
          return reply.getExtension(PubSubElementType.SUBSCRIPTION);
      }
docs: The user subscribes to the node using the supplied jid.  The
  bare jid portion of this one must match the jid for the connection.
  
  Please note that the {@link Subscription.State} should be checked
  on return since more actions may be required by the caller.
  {@link Subscription.State#pending} - The owner must approve the subscription
  request before messages will be received.
  {@link Subscription.State#unconfigured} - If the {@link Subscription#isConfigRequired()} is true,
  the caller must configure the subscription before messages will be received.  If it is false
  the caller can configure it but is not required to do so.
  @param jid The jid to subscribe as.
  @return The subscription
  @throws XMPPErrorException
  @throws NoResponseException
  @throws NotConnectedException
  @throws InterruptedException