@Override
    protected JoinResult doInBackground(String... params) {
      try {
        XMPPAuctionHouse house = XMPPAuctionHouse.login(params[0], params[1], params[2]);
        Bidder bidder = join(house, AUCTION_ITEM_ID);

        return JoinResult.ok(bidder);
      } catch (AuctionIsNotAvailable e) {
        return JoinResult.failed(getString(R.string.failed_to_join));
      } catch (AuctionIsNotAccessible e) {
        return JoinResult.failed(getString(R.string.failed_to_connect));
      } catch (AuctionLoginFailure e) {
        return JoinResult.failed(getString(R.string.failed_to_login));
      }
    }
 public static JoinResult failed(String message) {
   JoinResult result = new JoinResult();
   result.ok = false;
   result.message = message;
   return result;
 }
 public static JoinResult ok(Bidder bidder) {
   JoinResult result = new JoinResult();
   result.ok = true;
   result.bidder = bidder;
   return result;
 }