diff --git a/.project b/.project
index fe8261c37b3..956abcdb4eb 100644
--- a/.project
+++ b/.project
@@ -14,4 +14,15 @@
org.eclipse.m2e.core.maven2Nature
+
+
+ 1783424300172
+
+ 30
+
+ org.eclipse.core.resources.regexFilterMatcher
+ node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+
+
+
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
index 00c55267132..1714a48c795 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
@@ -20,8 +20,8 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.Comparator;
+import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
@@ -116,48 +116,59 @@ public String AsJson(int page, int pageSize) {
}
public List getPagedResult(int page, int pageSize) {
- List builder = new ArrayList<>();
- final int start;
- final int end;
- if (page == -1 || pageSize == -1) {
- start = 0;
- end = collection.size();
- } else {
- start = (page - 1) * pageSize;
- end = Math.min(page * pageSize, collection.size());
+ if (collection == null || collection.isEmpty()) {
+ return List.of();
}
- int i = 0;
- for (T e : collection.stream().sorted(getComparator()).collect(Collectors.toList())) {
- if (i >= start && i < end) {
- builder.add(e);
+
+ List collectionList = new ArrayList<>(collection);
+
+ // Pre-compute fields once per element
+ Map