Moved Cache, LruCache, Pair, Primitives and UnsafeAllocator to com.google.gson and made them package private.
This commit is contained in:
parent
46a8e9b411
commit
5bc80cd693
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.gson.internal;
|
||||
package com.google.gson;
|
||||
|
||||
/**
|
||||
* Defines generic cache interface.
|
||||
@ -22,7 +22,7 @@ package com.google.gson.internal;
|
||||
* @author Inderjeet Singh
|
||||
* @author Joel Leitch
|
||||
*/
|
||||
public interface $Cache<K, V> {
|
||||
interface Cache<K, V> {
|
||||
|
||||
/**
|
||||
* Adds the new value object into the cache for the given key. If the key already
|
@ -16,8 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Cache;
|
||||
import com.google.gson.internal.$LruCache;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
|
||||
@ -30,14 +28,14 @@ class DefaultConstructorAllocator {
|
||||
private static final Constructor<Null> NULL_CONSTRUCTOR = createNullConstructor();
|
||||
|
||||
// Package private for testing purposes.
|
||||
final $Cache<Class<?>, Constructor<?>> constructorCache;
|
||||
final Cache<Class<?>, Constructor<?>> constructorCache;
|
||||
|
||||
public DefaultConstructorAllocator() {
|
||||
this(200);
|
||||
}
|
||||
|
||||
public DefaultConstructorAllocator(int cacheSize) {
|
||||
constructorCache = new $LruCache<Class<?>, Constructor<?>>(cacheSize);
|
||||
constructorCache = new LruCache<Class<?>, Constructor<?>>(cacheSize);
|
||||
}
|
||||
|
||||
private static final Constructor<Null> createNullConstructor() {
|
||||
|
@ -16,9 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Cache;
|
||||
import com.google.gson.internal.$LruCache;
|
||||
import com.google.gson.internal.$Pair;
|
||||
import com.google.gson.internal.$Preconditions;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
@ -42,8 +39,8 @@ public final class FieldAttributes {
|
||||
private static final String MAX_CACHE_PROPERTY_NAME =
|
||||
"com.google.gson.annotation_cache_size_hint";
|
||||
|
||||
private static final $Cache<$Pair<Class<?>, String>, Collection<Annotation>> ANNOTATION_CACHE =
|
||||
new $LruCache<$Pair<Class<?>,String>, Collection<Annotation>>(getMaxCacheSize());
|
||||
private static final Cache<Pair<Class<?>, String>, Collection<Annotation>> ANNOTATION_CACHE =
|
||||
new LruCache<Pair<Class<?>,String>, Collection<Annotation>>(getMaxCacheSize());
|
||||
|
||||
private final Class<?> declaringClazz;
|
||||
private final Field field;
|
||||
@ -157,7 +154,7 @@ public final class FieldAttributes {
|
||||
*/
|
||||
public Collection<Annotation> getAnnotations() {
|
||||
if (annotations == null) {
|
||||
$Pair<Class<?>, String> key = new $Pair<Class<?>, String>(declaringClazz, name);
|
||||
Pair<Class<?>, String> key = new Pair<Class<?>, String>(declaringClazz, name);
|
||||
annotations = ANNOTATION_CACHE.getElement(key);
|
||||
if (annotations == null) {
|
||||
annotations = Collections.unmodifiableCollection(
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Primitives;
|
||||
import com.google.gson.stream.JsonReader;
|
||||
import com.google.gson.stream.JsonToken;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
@ -388,7 +387,7 @@ public final class Gson {
|
||||
*/
|
||||
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
|
||||
Object object = fromJson(json, (Type) classOfT);
|
||||
return $Primitives.wrap(classOfT).cast(object);
|
||||
return Primitives.wrap(classOfT).cast(object);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -441,7 +440,7 @@ public final class Gson {
|
||||
JsonReader jsonReader = new JsonReader(json);
|
||||
Object object = fromJson(jsonReader, classOfT);
|
||||
assertFullConsumption(object, jsonReader);
|
||||
return $Primitives.wrap(classOfT).cast(object);
|
||||
return Primitives.wrap(classOfT).cast(object);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -520,7 +519,7 @@ public final class Gson {
|
||||
*/
|
||||
public <T> T fromJson(JsonElement json, Class<T> classOfT) throws JsonSyntaxException {
|
||||
Object object = fromJson(json, (Type) classOfT);
|
||||
return $Primitives.wrap(classOfT).cast(object);
|
||||
return Primitives.wrap(classOfT).cast(object);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Pair;
|
||||
import com.google.gson.internal.$Preconditions;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
@ -74,7 +73,7 @@ abstract class JsonDeserializationVisitor<T> implements ObjectNavigator.Visitor
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public final boolean visitUsingCustomHandler(ObjectTypePair objTypePair) {
|
||||
$Pair<JsonDeserializer<?>, ObjectTypePair> pair = objTypePair.getMatchingHandler(deserializers);
|
||||
Pair<JsonDeserializer<?>, ObjectTypePair> pair = objTypePair.getMatchingHandler(deserializers);
|
||||
if (pair == null) {
|
||||
return false;
|
||||
}
|
||||
@ -85,7 +84,7 @@ abstract class JsonDeserializationVisitor<T> implements ObjectNavigator.Visitor
|
||||
}
|
||||
|
||||
protected Object invokeCustomDeserializer(JsonElement element,
|
||||
$Pair<JsonDeserializer<?>, ObjectTypePair> pair) {
|
||||
Pair<JsonDeserializer<?>, ObjectTypePair> pair) {
|
||||
if (element == null || element.isJsonNull()) {
|
||||
return null;
|
||||
}
|
||||
|
@ -16,8 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Pair;
|
||||
import com.google.gson.internal.$Primitives;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
@ -102,7 +100,7 @@ final class JsonObjectDeserializationVisitor<T> extends JsonDeserializationVisit
|
||||
throw new JsonParseException("Expecting object found: " + json);
|
||||
}
|
||||
JsonElement child = json.getAsJsonObject().get(fName);
|
||||
boolean isPrimitive = $Primitives.isPrimitive(declaredTypeOfField);
|
||||
boolean isPrimitive = Primitives.isPrimitive(declaredTypeOfField);
|
||||
if (child == null) { // Child will be null if the field wasn't present in Json
|
||||
return true;
|
||||
} else if (child.isJsonNull()) {
|
||||
@ -112,7 +110,7 @@ final class JsonObjectDeserializationVisitor<T> extends JsonDeserializationVisit
|
||||
return true;
|
||||
}
|
||||
ObjectTypePair objTypePair = new ObjectTypePair(null, declaredTypeOfField, false);
|
||||
$Pair<JsonDeserializer<?>, ObjectTypePair> pair = objTypePair.getMatchingHandler(deserializers);
|
||||
Pair<JsonDeserializer<?>, ObjectTypePair> pair = objTypePair.getMatchingHandler(deserializers);
|
||||
if (pair == null) {
|
||||
return false;
|
||||
}
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Pair;
|
||||
import com.google.gson.internal.$Types;
|
||||
import com.google.gson.internal.$Preconditions;
|
||||
|
||||
@ -174,7 +173,7 @@ final class JsonSerializationVisitor implements ObjectNavigator.Visitor {
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private JsonElement findAndInvokeCustomSerializer(ObjectTypePair objTypePair) {
|
||||
$Pair<JsonSerializer<?>,ObjectTypePair> pair = objTypePair.getMatchingHandler(serializers);
|
||||
Pair<JsonSerializer<?>,ObjectTypePair> pair = objTypePair.getMatchingHandler(serializers);
|
||||
if (pair == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -14,26 +14,26 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.gson.internal;
|
||||
package com.google.gson;
|
||||
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* An implementation of the {@link $Cache} interface that evict objects from the cache using an
|
||||
* An implementation of the {@link Cache} interface that evict objects from the cache using an
|
||||
* LRU (least recently used) algorithm. Object start getting evicted from the cache once the
|
||||
* {@code maxCapacity} is reached.
|
||||
*
|
||||
* @author Inderjeet Singh
|
||||
* @author Joel Leitch
|
||||
*/
|
||||
public final class $LruCache<K, V> extends LinkedHashMap<K, V> implements $Cache<K, V> {
|
||||
final class LruCache<K, V> extends LinkedHashMap<K, V> implements Cache<K, V> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final int maxCapacity;
|
||||
|
||||
public $LruCache(int maxCapacity) {
|
||||
public LruCache(int maxCapacity) {
|
||||
super(maxCapacity, 0.7F, true);
|
||||
this.maxCapacity = maxCapacity;
|
||||
}
|
@ -17,7 +17,6 @@
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Types;
|
||||
import com.google.gson.internal.$UnsafeAllocator;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Type;
|
||||
@ -33,7 +32,7 @@ import java.lang.reflect.Type;
|
||||
* @author Joel Leitch
|
||||
*/
|
||||
final class MappedObjectConstructor implements ObjectConstructor {
|
||||
private static final $UnsafeAllocator unsafeAllocator = $UnsafeAllocator.create();
|
||||
private static final UnsafeAllocator unsafeAllocator = UnsafeAllocator.create();
|
||||
private static final DefaultConstructorAllocator defaultConstructorAllocator =
|
||||
new DefaultConstructorAllocator(500);
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Types;
|
||||
import com.google.gson.internal.$Primitives;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
@ -129,6 +128,6 @@ final class ObjectNavigator {
|
||||
private static boolean isPrimitiveOrString(Object objectToVisit) {
|
||||
Class<?> realClazz = objectToVisit.getClass();
|
||||
return realClazz == Object.class || realClazz == String.class
|
||||
|| $Primitives.unwrap(realClazz).isPrimitive();
|
||||
|| Primitives.unwrap(realClazz).isPrimitive();
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Pair;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
@ -52,7 +51,7 @@ final class ObjectTypePair {
|
||||
return String.format("preserveType: %b, type: %s, obj: %s", preserveType, type, obj);
|
||||
}
|
||||
|
||||
<HANDLER> $Pair<HANDLER, ObjectTypePair> getMatchingHandler(
|
||||
<HANDLER> Pair<HANDLER, ObjectTypePair> getMatchingHandler(
|
||||
ParameterizedTypeHandlerMap<HANDLER> handlers) {
|
||||
HANDLER handler = null;
|
||||
if (!preserveType && obj != null) {
|
||||
@ -60,12 +59,12 @@ final class ObjectTypePair {
|
||||
ObjectTypePair moreSpecificType = toMoreSpecificType();
|
||||
handler = handlers.getHandlerFor(moreSpecificType.type);
|
||||
if (handler != null) {
|
||||
return new $Pair<HANDLER, ObjectTypePair>(handler, moreSpecificType);
|
||||
return new Pair<HANDLER, ObjectTypePair>(handler, moreSpecificType);
|
||||
}
|
||||
}
|
||||
// Try the specified type
|
||||
handler = handlers.getHandlerFor(type);
|
||||
return handler == null ? null : new $Pair<HANDLER, ObjectTypePair>(handler, this);
|
||||
return handler == null ? null : new Pair<HANDLER, ObjectTypePair>(handler, this);
|
||||
}
|
||||
|
||||
ObjectTypePair toMoreSpecificType() {
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.gson.internal;
|
||||
package com.google.gson;
|
||||
|
||||
/**
|
||||
* A simple object that holds onto a pair of object references, first and second.
|
||||
@ -25,11 +25,11 @@ package com.google.gson.internal;
|
||||
* @param <FIRST>
|
||||
* @param <SECOND>
|
||||
*/
|
||||
public final class $Pair<FIRST, SECOND> {
|
||||
final class Pair<FIRST, SECOND> {
|
||||
public final FIRST first;
|
||||
public final SECOND second;
|
||||
|
||||
public $Pair(FIRST first, SECOND second) {
|
||||
public Pair(FIRST first, SECOND second) {
|
||||
this.first = first;
|
||||
this.second = second;
|
||||
}
|
||||
@ -42,11 +42,11 @@ public final class $Pair<FIRST, SECOND> {
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof $Pair<?, ?>)) {
|
||||
if (!(o instanceof Pair<?, ?>)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$Pair<?, ?> that = ($Pair<?, ?>) o;
|
||||
Pair<?, ?> that = (Pair<?, ?>) o;
|
||||
return equal(this.first, that.first) && equal(this.second, that.second);
|
||||
}
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Pair;
|
||||
import com.google.gson.internal.$Types;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
@ -40,15 +39,15 @@ final class ParameterizedTypeHandlerMap<T> {
|
||||
private static final Logger logger =
|
||||
Logger.getLogger(ParameterizedTypeHandlerMap.class.getName());
|
||||
private final Map<Type, T> map = new HashMap<Type, T>();
|
||||
private final List<$Pair<Class<?>, T>> typeHierarchyList = new ArrayList<$Pair<Class<?>, T>>();
|
||||
private final List<Pair<Class<?>, T>> typeHierarchyList = new ArrayList<Pair<Class<?>, T>>();
|
||||
private boolean modifiable = true;
|
||||
|
||||
public synchronized void registerForTypeHierarchy(Class<?> typeOfT, T value) {
|
||||
$Pair<Class<?>, T> pair = new $Pair<Class<?>, T>(typeOfT, value);
|
||||
Pair<Class<?>, T> pair = new Pair<Class<?>, T>(typeOfT, value);
|
||||
registerForTypeHierarchy(pair);
|
||||
}
|
||||
|
||||
public synchronized void registerForTypeHierarchy($Pair<Class<?>, T> pair) {
|
||||
public synchronized void registerForTypeHierarchy(Pair<Class<?>, T> pair) {
|
||||
if (!modifiable) {
|
||||
throw new IllegalStateException("Attempted to modify an unmodifiable map.");
|
||||
}
|
||||
@ -70,7 +69,7 @@ final class ParameterizedTypeHandlerMap<T> {
|
||||
|
||||
private int getIndexOfAnOverriddenHandler(Class<?> type) {
|
||||
for (int i = typeHierarchyList.size()-1; i >= 0; --i) {
|
||||
$Pair<Class<?>, T> entry = typeHierarchyList.get(i);
|
||||
Pair<Class<?>, T> entry = typeHierarchyList.get(i);
|
||||
if (type.isAssignableFrom(entry.first)) {
|
||||
return i;
|
||||
}
|
||||
@ -100,7 +99,7 @@ final class ParameterizedTypeHandlerMap<T> {
|
||||
// Quite important to traverse the typeHierarchyList from stack bottom first since
|
||||
// we want to register the handlers in the same order to preserve priority order
|
||||
for (int i = other.typeHierarchyList.size()-1; i >= 0; --i) {
|
||||
$Pair<Class<?>, T> entry = other.typeHierarchyList.get(i);
|
||||
Pair<Class<?>, T> entry = other.typeHierarchyList.get(i);
|
||||
int index = getIndexOfSpecificHandlerForTypeHierarchy(entry.first);
|
||||
if (index < 0) {
|
||||
registerForTypeHierarchy(entry);
|
||||
@ -118,7 +117,7 @@ final class ParameterizedTypeHandlerMap<T> {
|
||||
// Quite important to traverse the typeHierarchyList from stack bottom first since
|
||||
// we want to register the handlers in the same order to preserve priority order
|
||||
for (int i = other.typeHierarchyList.size()-1; i >= 0; --i) {
|
||||
$Pair<Class<?>, T> entry = other.typeHierarchyList.get(i);
|
||||
Pair<Class<?>, T> entry = other.typeHierarchyList.get(i);
|
||||
registerForTypeHierarchy(entry);
|
||||
}
|
||||
}
|
||||
@ -152,7 +151,7 @@ final class ParameterizedTypeHandlerMap<T> {
|
||||
}
|
||||
|
||||
private T getHandlerForTypeHierarchy(Class<?> type) {
|
||||
for ($Pair<Class<?>, T> entry : typeHierarchyList) {
|
||||
for (Pair<Class<?>, T> entry : typeHierarchyList) {
|
||||
if (entry.first.isAssignableFrom(type)) {
|
||||
return entry.second;
|
||||
}
|
||||
@ -186,7 +185,7 @@ final class ParameterizedTypeHandlerMap<T> {
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder("{mapForTypeHierarchy:{");
|
||||
boolean first = true;
|
||||
for ($Pair<Class<?>, T> entry : typeHierarchyList) {
|
||||
for (Pair<Class<?>, T> entry : typeHierarchyList) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.gson.internal;
|
||||
package com.google.gson;
|
||||
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
@ -22,14 +22,16 @@ import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gson.internal.$Preconditions;
|
||||
|
||||
/**
|
||||
* Contains static utility methods pertaining to primitive types and their
|
||||
* corresponding wrapper types.
|
||||
*
|
||||
* @author Kevin Bourrillion
|
||||
*/
|
||||
public final class $Primitives {
|
||||
private $Primitives() {}
|
||||
final class Primitives {
|
||||
private Primitives() {}
|
||||
|
||||
/** A map from primitive types to their corresponding wrapper types. */
|
||||
private static final Map<Class<?>, Class<?>> PRIMITIVE_TO_WRAPPER_TYPE;
|
@ -16,7 +16,6 @@
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.ObjectNavigator.Visitor;
|
||||
import com.google.gson.internal.$LruCache;
|
||||
import com.google.gson.internal.$Types;
|
||||
import com.google.gson.internal.$Preconditions;
|
||||
|
||||
@ -34,10 +33,10 @@ import java.util.List;
|
||||
* @author Jesse Wilson
|
||||
*/
|
||||
final class ReflectingFieldNavigator {
|
||||
private static final $LruCache<Type, List<Class<?>>> classCache =
|
||||
new $LruCache<Type, List<Class<?>>>(500);
|
||||
private static final $LruCache<Class<?>, Field[]> fieldsCache =
|
||||
new $LruCache<Class<?>, Field[]>(500);
|
||||
private static final LruCache<Type, List<Class<?>>> classCache =
|
||||
new LruCache<Type, List<Class<?>>>(500);
|
||||
private static final LruCache<Class<?>, Field[]> fieldsCache =
|
||||
new LruCache<Class<?>, Field[]>(500);
|
||||
|
||||
private final ExclusionStrategy exclusionStrategy;
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.gson.internal;
|
||||
package com.google.gson;
|
||||
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
@ -27,10 +27,10 @@ import java.lang.reflect.Method;
|
||||
* @author Joel Leitch
|
||||
* @author Jesse Wilson
|
||||
*/
|
||||
public abstract class $UnsafeAllocator {
|
||||
abstract class UnsafeAllocator {
|
||||
public abstract <T> T newInstance(Class<T> c) throws Exception;
|
||||
|
||||
public static $UnsafeAllocator create() {
|
||||
public static UnsafeAllocator create() {
|
||||
// try JVM
|
||||
// public class Unsafe {
|
||||
// public Object allocateInstance(Class<?> type);
|
||||
@ -41,7 +41,7 @@ public abstract class $UnsafeAllocator {
|
||||
f.setAccessible(true);
|
||||
final Object unsafe = f.get(null);
|
||||
final Method allocateInstance = unsafeClass.getMethod("allocateInstance", Class.class);
|
||||
return new $UnsafeAllocator() {
|
||||
return new UnsafeAllocator() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T newInstance(Class<T> c) throws Exception {
|
||||
@ -60,7 +60,7 @@ public abstract class $UnsafeAllocator {
|
||||
final Method newInstance = ObjectInputStream.class
|
||||
.getDeclaredMethod("newInstance", Class.class, Class.class);
|
||||
newInstance.setAccessible(true);
|
||||
return new $UnsafeAllocator() {
|
||||
return new UnsafeAllocator() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T newInstance(Class<T> c) throws Exception {
|
||||
@ -83,7 +83,7 @@ public abstract class $UnsafeAllocator {
|
||||
final Method newInstance = ObjectStreamClass.class
|
||||
.getDeclaredMethod("newInstance", Class.class, int.class);
|
||||
newInstance.setAccessible(true);
|
||||
return new $UnsafeAllocator() {
|
||||
return new UnsafeAllocator() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T newInstance(Class<T> c) throws Exception {
|
||||
@ -94,7 +94,7 @@ public abstract class $UnsafeAllocator {
|
||||
}
|
||||
|
||||
// give up
|
||||
return new $UnsafeAllocator() {
|
||||
return new UnsafeAllocator() {
|
||||
@Override
|
||||
public <T> T newInstance(Class<T> c) {
|
||||
throw new UnsupportedOperationException("Cannot allocate " + c);
|
@ -16,13 +16,11 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Cache;
|
||||
import com.google.gson.internal.$LruCache;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Unit test for the {@link $LruCache} class.
|
||||
* Unit test for the {@link LruCache} class.
|
||||
*
|
||||
* @author Inderjeet Singh
|
||||
* @author Joel Leitch
|
||||
@ -30,7 +28,7 @@ import junit.framework.TestCase;
|
||||
public class LruCacheTest extends TestCase {
|
||||
|
||||
public void testCacheHitAndMiss() throws Exception {
|
||||
$Cache<String, Integer> cache = new $LruCache<String, Integer>(3);
|
||||
Cache<String, Integer> cache = new LruCache<String, Integer>(3);
|
||||
|
||||
String key = "key1";
|
||||
assertNull(cache.getElement(key));
|
||||
@ -44,7 +42,7 @@ public class LruCacheTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testCacheKeyOverwrite() throws Exception {
|
||||
$Cache<String, Integer> cache = new $LruCache<String, Integer>(3);
|
||||
Cache<String, Integer> cache = new LruCache<String, Integer>(3);
|
||||
|
||||
String key = "key1";
|
||||
assertNull(cache.getElement(key));
|
||||
@ -56,7 +54,7 @@ public class LruCacheTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testCacheEviction() throws Exception {
|
||||
$Cache<String, Integer> cache = new $LruCache<String, Integer>(5);
|
||||
Cache<String, Integer> cache = new LruCache<String, Integer>(5);
|
||||
|
||||
cache.addElement("key1", 1);
|
||||
cache.addElement("key2", 2);
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Primitives;
|
||||
import com.google.gson.internal.$Types;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@ -51,7 +50,7 @@ public class ParamterizedTypeFixtures {
|
||||
|
||||
private String getExpectedJson(Object obj) {
|
||||
Class<?> clazz = obj.getClass();
|
||||
if ($Primitives.isWrapperType($Primitives.wrap(clazz))) {
|
||||
if (Primitives.isWrapperType(Primitives.wrap(clazz))) {
|
||||
return obj.toString();
|
||||
} else if (obj.getClass().equals(String.class)) {
|
||||
return "\"" + obj.toString() + "\"";
|
||||
@ -127,7 +126,7 @@ public class ParamterizedTypeFixtures {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static<T> String getExpectedJson(MyParameterizedType<T> obj) {
|
||||
Class<T> clazz = (Class<T>) obj.value.getClass();
|
||||
boolean addQuotes = !clazz.isArray() && !$Primitives.unwrap(clazz).isPrimitive();
|
||||
boolean addQuotes = !clazz.isArray() && !Primitives.unwrap(clazz).isPrimitive();
|
||||
StringBuilder sb = new StringBuilder("{\"");
|
||||
sb.append(obj.value.getClass().getSimpleName()).append("\":");
|
||||
if (addQuotes) {
|
||||
@ -156,7 +155,7 @@ public class ParamterizedTypeFixtures {
|
||||
Class<?> rawType = $Types.getRawType(genericClass);
|
||||
String className = rawType.getSimpleName();
|
||||
T value = (T) json.getAsJsonObject().get(className).getAsObject();
|
||||
if ($Primitives.isPrimitive(genericClass)) {
|
||||
if (Primitives.isPrimitive(genericClass)) {
|
||||
PrimitiveTypeAdapter typeAdapter = new PrimitiveTypeAdapter();
|
||||
value = (T) typeAdapter.adaptType(value, rawType);
|
||||
}
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
package com.google.gson;
|
||||
|
||||
import com.google.gson.internal.$Primitives;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
@ -31,8 +30,8 @@ final class PrimitiveTypeAdapter {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T adaptType(Object from, Class<T> to) {
|
||||
Class<?> aClass = $Primitives.wrap(to);
|
||||
if ($Primitives.isWrapperType(aClass)) {
|
||||
Class<?> aClass = Primitives.wrap(to);
|
||||
if (Primitives.isWrapperType(aClass)) {
|
||||
if (aClass == Character.class) {
|
||||
String value = from.toString();
|
||||
if (value.length() == 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user