diff options
Diffstat (limited to 'platform/util/src/com/intellij/util/containers')
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; } |