Skip to content

Commit

Permalink
Extract MultiClassKey from Registries to be reusable.
Browse files Browse the repository at this point in the history
  • Loading branch information
TWiStErRob authored and sjudd committed Sep 3, 2014
1 parent 3b3414f commit 1e5d51a
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 108 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.bumptech.glide.load.resource.transcode;

import com.bumptech.glide.util.MultiClassKey;

import java.util.HashMap;
import java.util.Map;

Expand Down Expand Up @@ -50,59 +52,4 @@ public <Z, R> ResourceTranscoder<Z, R> get(Class<Z> decodedClass, Class<R> trans
}
return (ResourceTranscoder<Z, R>) result;
}

private static class MultiClassKey {
private Class decoded;
private Class transcoded;

public MultiClassKey() {
// Empty.
}

public MultiClassKey(Class decoded, Class transcoded) {
this.decoded = decoded;
this.transcoded = transcoded;
}

public void set(Class decoded, Class transcoded) {
this.decoded = decoded;
this.transcoded = transcoded;
}

@Override
public String toString() {
return "MultiClassKey{"
+ "decoded=" + decoded
+ ", transcoded=" + transcoded
+ '}';
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

MultiClassKey that = (MultiClassKey) o;

if (!decoded.equals(that.decoded)) {
return false;
}
if (!transcoded.equals(that.transcoded)) {
return false;
}

return true;
}

@Override
public int hashCode() {
int result = decoded.hashCode();
result = 31 * result + transcoded.hashCode();
return result;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.bumptech.glide.provider;

import com.bumptech.glide.util.MultiClassKey;

import java.util.HashMap;
import java.util.Map;

Expand Down Expand Up @@ -45,57 +47,4 @@ public <T, Z> DataLoadProvider<T, Z> get(Class<T> dataClass, Class<Z> resourceCl
}
return (DataLoadProvider<T, Z>) result;
}

private static class MultiClassKey {
private Class dataClass;
private Class resourceClass;

public MultiClassKey() { }

public MultiClassKey(Class dataClass, Class resourceClass) {
this.dataClass = dataClass;
this.resourceClass = resourceClass;
}

@Override
public String toString() {
return "MultiClassKey{"
+ "dataClass=" + dataClass
+ ", resourceClass=" + resourceClass
+ '}';
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

MultiClassKey that = (MultiClassKey) o;

if (!dataClass.equals(that.dataClass)) {
return false;
}
if (!resourceClass.equals(that.resourceClass)) {
return false;
}

return true;
}

@Override
public int hashCode() {
int result = dataClass.hashCode();
result = 31 * result + resourceClass.hashCode();
return result;
}

public void set(Class dataClass, Class resourceClass) {
this.dataClass = dataClass;
this.resourceClass = resourceClass;
}
}
}
58 changes: 58 additions & 0 deletions library/src/main/java/com/bumptech/glide/util/MultiClassKey.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.bumptech.glide.util;

/**
* A key of two {@link Class}es to be used in hashed collections.
*/
public class MultiClassKey {
private Class<?> first;
private Class<?> second;

public MultiClassKey() {
// leave them null
}

public MultiClassKey(Class<?> first, Class<?> second) {
set(first, second);
}

public void set(Class<?> first, Class<?> second) {
this.first = first;
this.second = second;
}

@Override
public String toString() {
return "MultiClassKey{"
+ "first=" + first
+ ", second=" + second
+ '}';
}

@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

MultiClassKey that = (MultiClassKey) o;

if (!first.equals(that.first)) {
return false;
}
if (!second.equals(that.second)) {
return false;
}

return true;
}

@Override
public int hashCode() {
int result = first.hashCode();
result = 31 * result + second.hashCode();
return result;
}
}

0 comments on commit 1e5d51a

Please sign in to comment.