Repository: tomee
Updated Branches:
  refs/heads/master d81d45b6c -> c732d2fdd


TOMEE-1904 ensure cdi extensions can be sorted


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c732d2fd
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c732d2fd
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c732d2fd

Branch: refs/heads/master
Commit: c732d2fdd3109c145e56938c7eaf8a906b3aa4cc
Parents: d81d45b
Author: Romain manni-Bucau <rmannibu...@gmail.com>
Authored: Tue Aug 16 09:54:10 2016 +0200
Committer: Romain manni-Bucau <rmannibu...@gmail.com>
Committed: Tue Aug 16 09:54:10 2016 +0200

----------------------------------------------------------------------
 .../openejb/cdi/OptimizedLoaderService.java     | 23 ++++++++++++++++++++
 1 file changed, 23 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/c732d2fd/container/openejb-core/src/main/java/org/apache/openejb/cdi/OptimizedLoaderService.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OptimizedLoaderService.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OptimizedLoaderService.java
index bfa5736..93f1645 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OptimizedLoaderService.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OptimizedLoaderService.java
@@ -36,6 +36,7 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
@@ -111,6 +112,28 @@ public class OptimizedLoaderService implements 
LoaderService {
                 }
             }
         }
+
+        if 
("true".equals(OptimizedLoaderService.this.config.getProperty("openejb.cdi.extensions.sorted",
+                
SystemInstance.get().getProperty("openejb.cdi.extensions.sorted")))) {
+            Collections.sort(list, new Comparator<Extension>() {
+                @Override
+                public int compare(final Extension o1, final Extension o2) {
+                    final int val1 = getVal(o1);
+                    final int val2 = getVal(o1);
+                    if (val1 == val2) {
+                        return 
o1.getClass().getName().compareTo(o2.getClass().getName());
+                    }
+                    return val1 - val2;
+                }
+
+                private int getVal(final Extension o1) {
+                    final String key = "openejb.cdi.extensions." + 
o1.getClass().getName() + ".ordinal";
+                    final String config = 
OptimizedLoaderService.this.config.getProperty(key, 
SystemInstance.get().getProperty(key));
+                    return config == null ? 0 : 
Integer.parseInt(config.trim());
+                }
+            });
+        }
+
         return list;
     }
 

Reply via email to