summaryrefslogtreecommitdiff
path: root/platform/util/src/com/intellij/util/containers
diff options
context:
space:
mode:
Diffstat (limited to 'platform/util/src/com/intellij/util/containers')
-rw-r--r--platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java4
-rw-r--r--platform/util/src/com/intellij/util/containers/ContainerUtil.java22
-rw-r--r--platform/util/src/com/intellij/util/containers/FilteringIterator.java17
-rw-r--r--platform/util/src/com/intellij/util/containers/InternalIterator.java4
4 files changed, 29 insertions, 18 deletions
diff --git a/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java b/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java
index e99db9d1d2c3..4c85f15a8c7c 100644
--- a/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java
+++ b/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java
@@ -29,10 +29,10 @@ public class ConcurrentInstanceMap<T> extends ConcurrentFactoryMap<Class<? exten
return key.newInstance();
}
catch (InstantiationException e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Couldn't instantiate " + key, e);
}
catch (IllegalAccessException e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Couldn't instantiate " + key, e);
}
}
} \ No newline at end of file
diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java
index dca7a0e6b30d..40bd75a2eff8 100644
--- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java
+++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java
@@ -1073,7 +1073,8 @@ public class ContainerUtil extends ContainerUtilRt {
}
public static <T, U extends T> U findInstance(@NotNull Iterator<T> iterator, @NotNull Class<U> aClass) {
- @SuppressWarnings("unchecked") U u = (U)find(iterator, new FilteringIterator.InstanceOf<U>(aClass));
+ //noinspection unchecked
+ U u = (U)find(iterator, FilteringIterator.instanceOf(aClass));
return u;
}
@@ -1429,6 +1430,16 @@ public class ContainerUtil extends ContainerUtilRt {
return sorted;
}
+ @NotNull
+ public static <T extends Comparable<T>> List<T> sorted(@NotNull Collection<T> list) {
+ return sorted(list, new Comparator<T>() {
+ @Override
+ public int compare(T o1, T o2) {
+ return o1.compareTo(o2);
+ }
+ });
+ }
+
public static <T> void sort(@NotNull T[] a, @NotNull Comparator<T> comparator) {
int size = a.length;
@@ -1927,6 +1938,15 @@ public class ContainerUtil extends ContainerUtilRt {
return -1;
}
+ public static <T> int indexOf(@NotNull List<T> list, @NotNull final T object) {
+ return indexOf(list, new Condition<T>() {
+ @Override
+ public boolean value(T t) {
+ return t.equals(object);
+ }
+ });
+ }
+
@NotNull
public static <A,B> Map<B,A> reverseMap(@NotNull Map<A,B> map) {
final Map<B,A> result = newHashMap();
diff --git a/platform/util/src/com/intellij/util/containers/FilteringIterator.java b/platform/util/src/com/intellij/util/containers/FilteringIterator.java
index c6b7173b4db2..3e146441d6ab 100644
--- a/platform/util/src/com/intellij/util/containers/FilteringIterator.java
+++ b/platform/util/src/com/intellij/util/containers/FilteringIterator.java
@@ -17,7 +17,6 @@ package com.intellij.util.containers;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Conditions;
-import com.intellij.util.ReflectionUtil;
import org.jetbrains.annotations.NotNull;
import java.util.Iterator;
@@ -30,7 +29,7 @@ import java.util.NoSuchElementException;
*/
public class FilteringIterator<Dom, E extends Dom> implements Iterator<E> {
private final Iterator<Dom> myBaseIterator;
- private final Condition<Dom> myFilter;
+ private final Condition<? super Dom> myFilter;
private boolean myNextObtained = false;
private boolean myCurrentIsValid = false;
private Dom myCurrent;
@@ -42,7 +41,7 @@ public class FilteringIterator<Dom, E extends Dom> implements Iterator<E> {
}
};
- public FilteringIterator(@NotNull Iterator<Dom> baseIterator, @NotNull Condition<Dom> filter) {
+ public FilteringIterator(@NotNull Iterator<Dom> baseIterator, @NotNull Condition<? super Dom> filter) {
myBaseIterator = baseIterator;
myFilter = filter;
}
@@ -103,7 +102,7 @@ public class FilteringIterator<Dom, E extends Dom> implements Iterator<E> {
return create(iterator, NOT_NULL);
}
- public static <Dom, T extends Dom> Iterator<T> create(Iterator<Dom> iterator, Condition<Dom> condition) {
+ public static <Dom, T extends Dom> Iterator<T> create(Iterator<Dom> iterator, Condition<? super Dom> condition) {
return new FilteringIterator<Dom, T>(iterator, condition);
}
@@ -119,7 +118,7 @@ public class FilteringIterator<Dom, E extends Dom> implements Iterator<E> {
return create((Iterator<T>)iterator, instanceOf(aClass));
}
- public static class InstanceOf<T> implements Condition {
+ public static class InstanceOf<T> implements Condition<Object> {
private final Class<T> myInstancesClass;
public InstanceOf(Class<T> instancesClass) {
@@ -130,13 +129,5 @@ public class FilteringIterator<Dom, E extends Dom> implements Iterator<E> {
public boolean value(Object object) {
return myInstancesClass.isInstance(object);
}
-
- public boolean isClassAcceptable(Class hintClass) {
- return ReflectionUtil.isAssignable(myInstancesClass, hintClass);
- }
-
- public T cast(Object object) {
- return (T)object;
- }
}
}
diff --git a/platform/util/src/com/intellij/util/containers/InternalIterator.java b/platform/util/src/com/intellij/util/containers/InternalIterator.java
index 9b7d1da8f156..49c84ece6a48 100644
--- a/platform/util/src/com/intellij/util/containers/InternalIterator.java
+++ b/platform/util/src/com/intellij/util/containers/InternalIterator.java
@@ -70,10 +70,10 @@ public interface InternalIterator<T>{
}
class Filtering<T> implements InternalIterator<T> {
- private final Condition<T> myFilter;
+ private final Condition<? super T> myFilter;
private final InternalIterator<T> myIterator;
- public Filtering(InternalIterator<T> iterator, Condition<T> filter) {
+ public Filtering(InternalIterator<T> iterator, Condition<? super T> filter) {
myIterator = iterator;
myFilter = filter;
}