001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.oauth;
003    
004    import oauth.signpost.OAuthConsumer;
005    
006    import org.openstreetmap.josm.tools.CheckParameterUtil;
007    
008    public class OAuthToken {
009    
010        /**
011         * Creates an OAuthToken from the token currently managed by the {@link OAuthConsumer}.
012         *
013         * @param consumer the consumer
014         * @return the token
015         */
016        static public OAuthToken createToken(OAuthConsumer consumer) {
017            return new OAuthToken(consumer.getToken(), consumer.getTokenSecret());
018        }
019    
020        private String key;
021        private String secret;
022    
023        /**
024         * Creates a new token
025         *
026         * @param key the token key
027         * @param secret the token secret
028         */
029        public OAuthToken(String key, String secret) {
030            this.key = key;
031            this.secret = secret;
032        }
033    
034        /**
035         * Creates a clone of another token
036         *
037         * @param other the other token. Must not be null.
038         * @throws IllegalArgumentException thrown if other is null
039         */
040        public OAuthToken(OAuthToken other) throws IllegalArgumentException {
041            CheckParameterUtil.ensureParameterNotNull(other, "other");
042            this.key = other.key;
043            this.secret = other.secret;
044        }
045    
046        /**
047         * Replies the token key
048         *
049         * @return the token key
050         */
051        public String getKey() {
052            return key;
053        }
054    
055        /**
056         * Replies the token secret
057         *
058         * @return the token secret
059         */
060        public String getSecret() {
061            return secret;
062        }
063    
064        @Override
065        public int hashCode() {
066            final int prime = 31;
067            int result = 1;
068            result = prime * result + ((key == null) ? 0 : key.hashCode());
069            result = prime * result + ((secret == null) ? 0 : secret.hashCode());
070            return result;
071        }
072    
073        @Override
074        public boolean equals(Object obj) {
075            if (this == obj)
076                return true;
077            if (obj == null)
078                return false;
079            if (getClass() != obj.getClass())
080                return false;
081            OAuthToken other = (OAuthToken) obj;
082            if (key == null) {
083                if (other.key != null)
084                    return false;
085            } else if (!key.equals(other.key))
086                return false;
087            if (secret == null) {
088                if (other.secret != null)
089                    return false;
090            } else if (!secret.equals(other.secret))
091                return false;
092            return true;
093        }
094    }