001package com.nimbusds.jose;
002
003
004import java.util.Collections;
005import java.util.Set;
006
007import net.jcip.annotations.ThreadSafe;
008
009
010/**
011 * Javascript Object Signing and Encryption (JOSE) header filter 
012 * implementation. This class is thread-safe.
013 *
014 * @author Vladimir Dzhuvinov
015 * @version $version$ (2013-03-22)
016 */
017@ThreadSafe
018public class DefaultHeaderFilter implements HeaderFilter {
019
020
021        /**
022         * The accepted header parameters.
023         */
024        private Set<String> acceptedParams;
025
026
027        /**
028         * Creates a new JOSE header filter.
029         *
030         * @param acceptedParams The accepted header parameters. Must not be
031         *                       {@code null}.
032         */
033        public DefaultHeaderFilter(final Set<String> acceptedParams) {
034
035                setAcceptedParameters(acceptedParams);
036        }
037
038
039        @Override
040        public Set<String> getAcceptedParameters() {
041
042                return acceptedParams;
043        }
044
045
046        @Override
047        public void setAcceptedParameters(final Set<String> acceptedParams) {
048
049                if (acceptedParams == null) {
050
051                        throw new IllegalArgumentException("The accepted header parameters set must not be null");
052                }
053
054                this.acceptedParams = Collections.unmodifiableSet(acceptedParams);
055        }
056}