001package com.nimbusds.oauth2.sdk.token; 002 003 004import net.minidev.json.JSONObject; 005 006import net.jcip.annotations.Immutable; 007 008 009/** 010 * Access and refresh token pair. 011 */ 012@Immutable 013public final class TokenPair { 014 015 016 /** 017 * Access token. 018 */ 019 private final AccessToken accessToken; 020 021 022 /** 023 * Refresh token, {@code null} if not specified. 024 */ 025 private final RefreshToken refreshToken; 026 027 028 /** 029 * Creates a new access and refresh token pair. 030 * 031 * @param accessToken The access token. Must not be {@code null}. 032 * @param refreshToken The refresh token. If none {@code null}. 033 */ 034 public TokenPair(final AccessToken accessToken, final RefreshToken refreshToken) { 035 036 if (accessToken == null) 037 throw new IllegalArgumentException("The access token must not be null"); 038 039 this.accessToken = accessToken; 040 041 this.refreshToken = refreshToken; 042 } 043 044 045 /** 046 * Returns the access token. 047 * 048 * @return The access token. 049 */ 050 public AccessToken getAccessToken() { 051 052 return accessToken; 053 } 054 055 056 /** 057 * Returns the refresh token. 058 * 059 * @return The refresh token, {@code null} if none. 060 */ 061 public RefreshToken getRefreshToken() { 062 063 return refreshToken; 064 } 065 066 067 /** 068 * Returns the JSON object representation of this token pair. 069 * 070 * <p>Example JSON object: 071 * 072 * <pre> 073 * { 074 * "access_token" : "dZdt8BlltORMTz5U", 075 * "refresh_token" : "E87zjAoeNXaSoF1U" 076 * } 077 * </pre> 078 * 079 * @return The JSON object representation. 080 */ 081 public JSONObject toJSONObject() { 082 083 JSONObject o = accessToken.toJSONObject(); 084 085 if (refreshToken != null) 086 o.putAll(refreshToken.toJSONObject()); 087 088 return o; 089 } 090 091 092 @Override 093 public String toString() { 094 095 return "TokenPair [accessToken=" + accessToken + " refreshToken=" + refreshToken + "]"; 096 } 097}