public ListMergeStatus check(final CommittedChangeList list, final boolean ignoreEnabled) { if (!enabledAndGettersFilled(ignoreEnabled)) { return ListMergeStatus.ALIEN; } if (!(list instanceof SvnChangeList)) { return ListMergeStatus.ALIEN; } final MergeinfoCached cachedState = getCurrentCache(); if (cachedState != null) { if (cachedState.getCopyRevision() != -1 && cachedState.getCopyRevision() >= list.getNumber()) { return ListMergeStatus.COMMON; } final SvnMergeInfoCache17.MergeCheckResult result = cachedState.getMap().get(list.getNumber()); return convert(result, true); } else { final MergeinfoCached state = myMergeInfoCache.getCachedState(myRootGetter.get(), myWcPathGetter.get()); if (state == null) { refresh(ignoreEnabled); return ListMergeStatus.REFRESHING; } else { if (state.getCopyRevision() != -1 && state.getCopyRevision() >= list.getNumber()) { return ListMergeStatus.COMMON; } return convert(state.getMap().get(list.getNumber()), false); } } }
@Nullable public CommittedChangeListsListener createRefresher(final boolean ignoreEnabled) { if (refreshEnabled(ignoreEnabled)) { // on awt thread final MergeinfoCached state = myMergeInfoCache.getCachedState(myRootGetter.get(), myWcPathGetter.get()); myCachedMap.put( createKey(myRootGetter.get(), myBranchGetter.get()), (state == null) ? new MergeinfoCached() : new MergeinfoCached( new HashMap<Long, SvnMergeInfoCache17.MergeCheckResult>(state.getMap()), state.getCopyRevision())); myMergeInfoCache.clear(myRootGetter.get(), myWcPathGetter.get()); return new MyRefresher(); } return null; }