2222import java .util .List ;
2323import java .util .Map ;
2424
25+ import static io .microsphere .collection .ListUtils .first ;
26+ import static io .microsphere .collection .ListUtils .last ;
2527import 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 ;
2730import 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