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}