Skip to content

Commit b6bc09c

Browse files
committed
Update Deserializers.java
1 parent 2d62e52 commit b6bc09c

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

microsphere-java-core/src/main/java/io/microsphere/io/Deserializers.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@
1616
*/
1717
package io.microsphere.io;
1818

19-
import io.microsphere.util.PriorityComparator;
20-
2119
import java.util.HashMap;
2220
import java.util.LinkedList;
2321
import java.util.List;
2422
import java.util.Map;
2523

24+
import static io.microsphere.collection.ListUtils.first;
25+
import static io.microsphere.collection.ListUtils.last;
2626
import static io.microsphere.reflect.TypeUtils.resolveTypeArgumentClasses;
27+
import static io.microsphere.util.ClassLoaderUtils.getDefaultClassLoader;
28+
import static io.microsphere.util.ServiceLoaderUtils.loadServicesList;
2729
import static java.util.Collections.emptyList;
28-
import static java.util.ServiceLoader.load;
2930

3031
/**
3132
* {@link Deserializer} Utilities class
@@ -44,16 +45,15 @@ public Deserializers(ClassLoader classLoader) {
4445
}
4546

4647
public Deserializers() {
47-
this(Thread.currentThread().getContextClassLoader());
48+
this(getDefaultClassLoader());
4849
}
4950

5051
public void loadSPI() {
51-
for (Deserializer deserializer : load(Deserializer.class)) {
52+
for (Deserializer deserializer : loadServicesList(Deserializer.class, classLoader)) {
5253
List<Class<?>> typeArguments = resolveTypeArgumentClasses(deserializer.getClass());
53-
Class<?> targetClass = typeArguments.isEmpty() ? Object.class : typeArguments.get(0);
54+
Class<?> targetClass = first(typeArguments);
5455
List<Deserializer> deserializers = typedDeserializers.computeIfAbsent(targetClass, k -> new LinkedList());
5556
deserializers.add(deserializer);
56-
deserializers.sort(PriorityComparator.INSTANCE);
5757
}
5858
}
5959

@@ -80,7 +80,7 @@ public Deserializer<?> getMostCompatible(Class<?> deserializedType) {
8080
*/
8181
public <T> Deserializer<T> getHighestPriority(Class<?> deserializedType) {
8282
List<Deserializer<T>> serializers = get(deserializedType);
83-
return serializers.isEmpty() ? null : serializers.get(0);
83+
return first(serializers);
8484
}
8585

8686
/**
@@ -92,7 +92,7 @@ public <T> Deserializer<T> getHighestPriority(Class<?> deserializedType) {
9292
*/
9393
public <T> Deserializer<T> getLowestPriority(Class<?> deserializedType) {
9494
List<Deserializer<T>> serializers = get(deserializedType);
95-
return serializers.isEmpty() ? null : serializers.get(0);
95+
return last(serializers);
9696
}
9797

9898
/**

0 commit comments

Comments
 (0)