aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java
index cf182ebf5..2abf3ddd8 100644
--- a/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java
+++ b/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java
@@ -50,12 +50,13 @@ public class DisplayHelperImpl implements DisplayHelper {
private Map<Class<?>, DisplayBoundsHandler<?>> handlerCache = Maps.newHashMap();
private Map<Class, List<DisplayBoundsHandler<?>>> handlerSortedCache = Maps.newHashMap();
private BaseBoundsHandler baseBoundsHandler;
- private Class tempScreen;
+ private Class<?> tempScreen;
@Override
public List<DisplayBoundsHandler<?>> getSortedBoundsHandlers(Class<?> screenClass) {
- if (handlerSortedCache.containsKey(screenClass))
- return handlerSortedCache.get(screenClass);
+ List<DisplayBoundsHandler<?>> possibleCached = handlerSortedCache.get(screenClass);
+ if (possibleCached != null)
+ return possibleCached;
tempScreen = screenClass;
handlerSortedCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(this::filterResponsible).sorted(BOUNDS_HANDLER_COMPARATOR).collect(Collectors.toList()));
return handlerSortedCache.get(screenClass);
@@ -68,14 +69,16 @@ public class DisplayHelperImpl implements DisplayHelper {
@Override
public DisplayBoundsHandler<?> getResponsibleBoundsHandler(Class<?> screenClass) {
- if (handlerCache.containsKey(screenClass))
- return handlerCache.get(screenClass);
- tempScreen = screenClass;
- handlerCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(this::filterResponsible).sorted(BOUNDS_HANDLER_COMPARATOR).findAny().orElse(EMPTY));
+ DisplayBoundsHandler<?> possibleCached = handlerCache.get(screenClass);
+ if (possibleCached != null)
+ return possibleCached;
+ List<DisplayBoundsHandler<?>> handlers = getSortedBoundsHandlers(screenClass);
+ handlerCache.put(screenClass, handlers.isEmpty() ? EMPTY : handlers.get(0));
return handlerCache.get(screenClass);
}
- public boolean filterResponsible(DisplayBoundsHandler handler) {
+ @Deprecated
+ public boolean filterResponsible(DisplayBoundsHandler<?> handler) {
return handler.getBaseSupportedClass().isAssignableFrom(tempScreen);
}
@@ -89,14 +92,17 @@ public class DisplayHelperImpl implements DisplayHelper {
return baseBoundsHandler;
}
+ @Deprecated
public void setBaseBoundsHandler(BaseBoundsHandler baseBoundsHandler) {
this.baseBoundsHandler = baseBoundsHandler;
}
+ @Deprecated
public void resetData() {
screenDisplayBoundsHandlers.clear();
}
+ @Deprecated
public void resetCache() {
handlerCache.clear();
handlerSortedCache.clear();