Skip to content

Commit 2d62e52

Browse files
committed
Update Serializers.java
1 parent 144974d commit 2d62e52

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@
2222
import java.util.List;
2323
import java.util.Map;
2424

25+
import static io.microsphere.collection.ListUtils.first;
26+
import static io.microsphere.collection.ListUtils.last;
2527
import static io.microsphere.reflect.TypeUtils.resolveTypeArgumentClasses;
26-
import static io.microsphere.util.PriorityComparator.INSTANCE;
28+
import static io.microsphere.util.ClassLoaderUtils.getDefaultClassLoader;
29+
import static io.microsphere.util.ServiceLoaderUtils.loadServicesList;
2730
import static java.util.Collections.emptyList;
28-
import static java.util.ServiceLoader.load;
2931

3032
/**
3133
* {@link Serializer} Utilities class
@@ -44,16 +46,15 @@ public Serializers(ClassLoader classLoader) {
4446
}
4547

4648
public Serializers() {
47-
this(Thread.currentThread().getContextClassLoader());
49+
this(getDefaultClassLoader());
4850
}
4951

5052
public void loadSPI() {
51-
for (Serializer serializer : load(Serializer.class)) {
53+
for (Serializer serializer : loadServicesList(Serializer.class, classLoader)) {
5254
List<Class<?>> typeArguments = resolveTypeArgumentClasses(serializer.getClass());
53-
Class<?> targetClass = typeArguments.isEmpty() ? Object.class : typeArguments.get(0);
55+
Class<?> targetClass = first(typeArguments);
5456
List<Serializer> serializers = typedSerializers.computeIfAbsent(targetClass, k -> new LinkedList());
5557
serializers.add(serializer);
56-
serializers.sort(INSTANCE);
5758
}
5859
}
5960

@@ -80,7 +81,7 @@ public Serializer<?> getMostCompatible(Class<?> serializedType) {
8081
*/
8182
public <S> Serializer<S> getHighestPriority(Class<S> serializedType) {
8283
List<Serializer<S>> serializers = get(serializedType);
83-
return serializers.isEmpty() ? null : serializers.get(0);
84+
return first(serializers);
8485
}
8586

8687

@@ -93,7 +94,7 @@ public <S> Serializer<S> getHighestPriority(Class<S> serializedType) {
9394
*/
9495
public <S> Serializer<S> getLowestPriority(Class<S> serializedType) {
9596
List<Serializer<S>> serializers = get(serializedType);
96-
return serializers.isEmpty() ? null : serializers.get(serializers.size() - 1);
97+
return last(serializers);
9798
}
9899

99100
/**

0 commit comments

Comments
 (0)