001package com.nimbusds.openid.connect.provider.spi.grants;
002
003
004import java.net.URI;
005import java.util.Collections;
006import java.util.List;
007import java.util.Map;
008import java.util.Objects;
009
010import org.checkerframework.checker.nullness.qual.Nullable;
011
012import com.nimbusds.oauth2.sdk.Scope;
013
014
015/**
016 * Default token request parameters implementation.
017 */
018public class DefaultTokenRequestParameters implements TokenRequestParameters{
019        
020        
021        /**
022         * The requested scope.
023         */
024        private final @Nullable Scope scope;
025        
026        
027        /**
028         * The requested resource server URI(s).
029         */
030        private final @Nullable List<URI> resources;
031        
032        
033        /**
034         * Custom token request parameters.
035         */
036        private final Map<String,List<String>> customParams;
037        
038        
039        /**
040         * Creates a new token request parameters instance.
041         *
042         * @param scope The requested scope, {@code null} if not specified.
043         */
044        public DefaultTokenRequestParameters(final @Nullable Scope scope) {
045                this(scope, null, Collections.emptyMap());
046        }
047        
048        
049        /**
050         * Creates a new token request parameters instance.
051         *
052         * @param scope        The requested scope, {@code null} if not
053         *                     specified.
054         * @param resources    The requested resource server URI(s),
055         *                     {@code null} if not specified.
056         * @param customParams Custom parameters, empty map if none.
057         */
058        public DefaultTokenRequestParameters(final @Nullable Scope scope,
059                                             final @Nullable List<URI> resources,
060                                             final Map<String, List<String>> customParams) {
061                this.scope = scope;
062                this.resources = resources;
063                Objects.requireNonNull(customParams);
064                this.customParams = customParams;
065        }
066        
067        
068        @Override
069        public @Nullable Scope getScope() {
070                return scope;
071        }
072        
073        
074        @Override
075        public @Nullable List<URI> getResources() {
076                return resources;
077        }
078        
079        
080        @Override
081        public Map<String, List<String>> getCustomParameters() {
082                return customParams;
083        }
084}