001    package com.nimbusds.openid.connect.sdk;
002    
003    
004    import net.jcip.annotations.Immutable;
005    
006    import com.nimbusds.openid.connect.sdk.claims.ACR;
007    import com.nimbusds.openid.connect.sdk.claims.ClaimRequirement;
008    
009    
010    /**
011     * Authentication Context Class Reference (ACR) request.
012     *
013     * @author Vladimir Dzhuvinov
014     */
015    @Immutable 
016    public final class ACRRequest {
017    
018    
019            /**
020             * The requirement type.
021             */
022            private final ClaimRequirement requirement;
023    
024    
025            /**
026             * The requested ACR values.
027             */
028            private final ACR[] values;
029    
030    
031            /**
032             * Creates a new Authentication Context Class Reference (ACR) request.
033             *
034             * @param requirement The claim requirement. Must not be {@code null}.
035             * @param values      The requested ACR values, in order of preference.
036             *                    Must not be {@code null}.
037             */
038            public ACRRequest(final ClaimRequirement requirement, final ACR[] values) {
039    
040                    if (requirement == null)
041                            throw new IllegalArgumentException("The ACR claim requirement must not be null");
042    
043                    this.requirement = requirement;
044    
045    
046                    if (values == null)
047                            throw new IllegalArgumentException("The requested ACR values must not be null");
048    
049                    this.values = values;
050            }
051            
052    
053            /**
054             * Gets the ACR claim requirement.
055             *
056             * @return The claim requirement.
057             */
058            public ClaimRequirement getRequirement() {
059    
060                    return requirement;
061            }
062    
063    
064            /**
065             * Gets the requested ACR values.
066             *
067             * @return The requested ACR values, in order of preference.
068             */
069            public ACR[] getValues() {
070    
071                    return values;
072            }
073    }