11e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papppackage com.bumptech.glide.util;
21e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
31e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp/**
41e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp * A key of two {@link Class}es to be used in hashed collections.
51e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp */
61e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papppublic class MultiClassKey {
71e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    private Class<?> first;
81e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    private Class<?> second;
91e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
101e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    public MultiClassKey() {
111e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        // leave them null
121e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    }
131e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
141e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    public MultiClassKey(Class<?> first, Class<?> second) {
151e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        set(first, second);
161e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    }
171e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
181e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    public void set(Class<?> first, Class<?> second) {
191e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        this.first = first;
201e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        this.second = second;
211e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    }
221e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
231e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    @Override
241e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    public String toString() {
251e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        return "MultiClassKey{"
261e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp                + "first=" + first
271e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp                + ", second=" + second
281e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp                + '}';
291e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    }
301e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
311e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    @Override
321e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    public boolean equals(Object o) {
331e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        if (this == o) {
341e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp            return true;
351e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        }
361e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        if (o == null || getClass() != o.getClass()) {
371e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp            return false;
381e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        }
391e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
401e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        MultiClassKey that = (MultiClassKey) o;
411e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
421e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        if (!first.equals(that.first)) {
431e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp            return false;
441e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        }
451e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        if (!second.equals(that.second)) {
461e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp            return false;
471e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        }
481e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
491e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        return true;
501e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    }
511e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp
521e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    @Override
531e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    public int hashCode() {
541e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        int result = first.hashCode();
551e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        result = 31 * result + second.hashCode();
561e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp        return result;
571e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp    }
581e5d51a9dd0bbde1f974675c16372a4f97126872Robert Papp}
59