当前位置: 首页>>代码示例>>Java>>正文


Java UserDataHolderEx类代码示例

本文整理汇总了Java中com.intellij.openapi.util.UserDataHolderEx的典型用法代码示例。如果您正苦于以下问题:Java UserDataHolderEx类的具体用法?Java UserDataHolderEx怎么用?Java UserDataHolderEx使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


UserDataHolderEx类属于com.intellij.openapi.util包,在下文中一共展示了UserDataHolderEx类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: get

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
@NotNull
static RefCountHolder get(@NotNull PsiFile file) {
  Reference<RefCountHolder> ref = file.getUserData(REF_COUNT_HOLDER_IN_FILE_KEY);
  RefCountHolder holder = com.intellij.reference.SoftReference.dereference(ref);
  if (holder == null) {
    holder = new RefCountHolder(file);
    Reference<RefCountHolder> newRef = new SoftReference<RefCountHolder>(holder);
    while (true) {
      boolean replaced = ((UserDataHolderEx)file).replace(REF_COUNT_HOLDER_IN_FILE_KEY, ref, newRef);
      if (replaced) {
        break;
      }
      ref = file.getUserData(REF_COUNT_HOLDER_IN_FILE_KEY);
      RefCountHolder newHolder = com.intellij.reference.SoftReference.dereference(ref);
      if (newHolder != null) {
        holder = newHolder;
        break;
      }
    }
  }
  return holder;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:23,代码来源:RefCountHolder.java

示例2: shouldAbbreviateName

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
private static boolean shouldAbbreviateName(PsiPackage aPackage) {
  final Project project = aPackage.getProject();
  ConcurrentMap<PsiPackage, Boolean> map = project.getUserData(SHOULD_ABBREV_PACK_KEY);
  if (map == null) {
    final ConcurrentMap<PsiPackage, Boolean> newMap = ContainerUtil.createConcurrentWeakMap();
    map = ((UserDataHolderEx)project).putUserDataIfAbsent(SHOULD_ABBREV_PACK_KEY, newMap);
    if (map == newMap) {
      ((PsiManagerEx)PsiManager.getInstance(project)).registerRunnableToRunOnChange(new Runnable() {
        @Override
        public void run() {
          newMap.clear();
        }
      });
    }
  }

  Boolean ret = map.get(aPackage);
  if (ret != null) return ret;
  ret = scanPackages(aPackage, 1);
  map.put(aPackage, ret);
  return ret;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:23,代码来源:TreeViewUtil.java

示例3: getParameterizedCachedValue

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
public <T, D extends UserDataHolder, P> T getParameterizedCachedValue(@NotNull D dataHolder,
                            @NotNull Key<ParameterizedCachedValue<T,P>> key,
                            @NotNull ParameterizedCachedValueProvider<T, P> provider,
                            boolean trackValue,
                            P parameter) {
  ParameterizedCachedValue<T,P> value;

  if (dataHolder instanceof UserDataHolderEx) {
    UserDataHolderEx dh = (UserDataHolderEx)dataHolder;
    value = dh.getUserData(key);
    if (value == null) {
      value = createParameterizedCachedValue(provider, trackValue);
      value = dh.putUserDataIfAbsent(key, value);
    }
  }
  else {
    synchronized (dataHolder) {
      value = dataHolder.getUserData(key);
      if (value == null) {
        value = createParameterizedCachedValue(provider, trackValue);
        dataHolder.putUserData(key, value);
      }
    }
  }
  return value.getValue(parameter);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:27,代码来源:CachedValuesManager.java

示例4: set

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
public long set(@NotNull Document document, @NotNull ID<?, ?> indexId, long value) {
  List<IdVersionInfo> list = document.getUserData(KEY);
  if (list == null) {
    list = ((UserDataHolderEx)document).putUserDataIfAbsent(KEY, new ArrayList<IdVersionInfo>());
  }

  synchronized (list) {
    for (IdVersionInfo info : list) {
      if (info.id == indexId) {
        long old = info.docVersion;
        if (info.mapVersion != mapVersion) {
          old = INVALID_STAMP;
          info.mapVersion = mapVersion;
        }
        info.docVersion = value;
        return old;
      }
    }
    list.add(new IdVersionInfo(indexId, value, mapVersion));
    return INVALID_STAMP;
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:23,代码来源:PerIndexDocumentVersionMap.java

示例5: processDynamicElements

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
@Override
public void processDynamicElements(@NotNull PsiType qualifierType,
                                   PsiClass aClass,
                                   @NotNull PsiScopeProcessor processor,
                                   @NotNull PsiElement place,
                                   @NotNull ResolveState state) {
  ClassHint classHint = processor.getHint(ClassHint.KEY);
  if (classHint != null && !classHint.shouldProcess(ClassHint.ResolveKind.METHOD)) return;

  MultiMap<String, PsiMethod> methodMap = aClass.getUserData(KEY);
  if (methodMap == null) {
    MyBuilder builder = new MyBuilder(aClass);
    builder.generateMethods();
    methodMap = ((UserDataHolderEx)aClass).putUserDataIfAbsent(KEY, builder.myResult);
  }

  String nameHint = ResolveUtil.getNameHint(processor);

  Collection<? extends PsiMethod> methods = nameHint == null ? methodMap.values() : methodMap.get(nameHint);

  for (PsiMethod method : methods) {
    if (!processor.execute(method, state)) return;
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:25,代码来源:SwingBuilderNonCodeMemberContributor.java

示例6: shouldAbbreviateName

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
private static boolean shouldAbbreviateName(PsiPackage aPackage) {
  final Project project = aPackage.getProject();
  ConcurrentMap<PsiPackage, Boolean> map = project.getUserData(SHOULD_ABBREV_PACK_KEY);
  if (map == null) {
    final ConcurrentWeakHashMap<PsiPackage, Boolean> newMap = new ConcurrentWeakHashMap<PsiPackage, Boolean>();
    map = ((UserDataHolderEx)project).putUserDataIfAbsent(SHOULD_ABBREV_PACK_KEY, newMap);
    if (map == newMap) {
      ((PsiManagerEx)PsiManager.getInstance(project)).registerRunnableToRunOnChange(new Runnable() {
        @Override
        public void run() {
          newMap.clear();
        }
      });
    }
  }

  Boolean ret = map.get(aPackage);
  if (ret != null) return ret;
  ret = scanPackages(aPackage, 1);
  map.put(aPackage, ret);
  return ret;
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:23,代码来源:TreeViewUtil.java

示例7: getAndSet

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
public long getAndSet(@NotNull Document document, @NotNull ID<?, ?> indexId, long value) {
  List<IdVersionInfo> list = document.getUserData(KEY);
  if (list == null) {
    list = ((UserDataHolderEx)document).putUserDataIfAbsent(KEY, new ArrayList<IdVersionInfo>());
  }

  synchronized (list) {
    for (IdVersionInfo info : list) {
      if (info.id == indexId) {
        long old = info.docVersion;
        if (info.mapVersion != mapVersion) {
          old = 0;
          info.mapVersion = mapVersion;
        }
        info.docVersion = value;
        return old;
      }
    }
    list.add(new IdVersionInfo(indexId, value, mapVersion));
    return 0;
  }
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:23,代码来源:PerIndexDocumentVersionMap.java

示例8: processDynamicElements

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
@Override
public void processDynamicElements(@NotNull PsiType qualifierType,
                                   PsiClass aClass,
                                   PsiScopeProcessor processor,
                                   PsiElement place,
                                   ResolveState state) {
  ClassHint classHint = processor.getHint(ClassHint.KEY);
  if (classHint != null && !classHint.shouldProcess(ClassHint.ResolveKind.METHOD)) return;

  MultiMap<String, PsiMethod> methodMap = aClass.getUserData(KEY);
  if (methodMap == null) {
    MyBuilder builder = new MyBuilder(aClass);
    builder.generateMethods();
    methodMap = ((UserDataHolderEx)aClass).putUserDataIfAbsent(KEY, builder.myResult);
  }

  String nameHint = ResolveUtil.getNameHint(processor);

  Collection<? extends PsiMethod> methods = nameHint == null ? methodMap.values() : methodMap.get(nameHint);

  for (PsiMethod method : methods) {
    if (!processor.execute(method, state)) return;
  }
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:25,代码来源:SwingBuilderNonCodeMemberContributor.java

示例9: getResultCacheResultImpl

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
@Exported
@NotNull
@RequiredReadAction
private static <E extends PsiElement> DotNetTypeRef getResultCacheResultImpl(@NotNull Key<CachedValue<DotNetTypeRef>> cachedValueKey,
		@NotNull E element,
		@NotNull Key dropKey,
		@NotNull final NotNullFunction<E, DotNetTypeRef> resolver)
{
	Class<? extends NotNullFunction> aClass = resolver.getClass();
	if(!BitUtil.isSet(aClass.getModifiers(), Modifier.STATIC))
	{
		throw new IllegalArgumentException("Accepted only static resolver");
	}

	CachedValue<DotNetTypeRef> cachedValue = element.getUserData(cachedValueKey);
	if(cachedValue == null)
	{
		DotNetTypeRefCachedValueProvider<E> provider = new DotNetTypeRefCachedValueProvider<>(dropKey, element, resolver);

		cachedValue = ((UserDataHolderEx) element).putUserDataIfAbsent(cachedValueKey, CachedValuesManager.getManager(element.getProject()).createCachedValue(provider, false));

		return cachedValue.getValue();
	}
	return cachedValue.getValue();
}
 
开发者ID:consulo,项目名称:consulo-dotnet,代码行数:26,代码来源:DotNetTypeRefCacheUtil.java

示例10: getParameterizedCachedValue

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
public <T, D extends UserDataHolder, P> T getParameterizedCachedValue(@Nonnull D dataHolder,
                                                                      @Nonnull Key<ParameterizedCachedValue<T, P>> key,
                                                                      @Nonnull ParameterizedCachedValueProvider<T, P> provider,
                                                                      boolean trackValue,
                                                                      P parameter) {
  ParameterizedCachedValue<T, P> value;

  if (dataHolder instanceof UserDataHolderEx) {
    UserDataHolderEx dh = (UserDataHolderEx)dataHolder;
    value = dh.getUserData(key);
    if (value == null) {
      value = createParameterizedCachedValue(provider, trackValue);
      value = dh.putUserDataIfAbsent(key, value);
    }
  }
  else {
    synchronized (dataHolder) {
      value = dataHolder.getUserData(key);
      if (value == null) {
        value = createParameterizedCachedValue(provider, trackValue);
        dataHolder.putUserData(key, value);
      }
    }
  }
  return value.getValue(parameter);
}
 
开发者ID:consulo,项目名称:consulo,代码行数:27,代码来源:CachedValuesManager.java

示例11: set

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
public long set(@Nonnull Document document, @Nonnull ID<?, ?> indexId, long value) {
  List<IdVersionInfo> list = document.getUserData(KEY);
  if (list == null) {
    list = ((UserDataHolderEx)document).putUserDataIfAbsent(KEY, new ArrayList<>());
  }

  synchronized (list) {
    for (IdVersionInfo info : list) {
      if (info.id == indexId) {
        long old = info.docVersion;
        if (info.mapVersion != mapVersion) {
          old = INVALID_STAMP;
          info.mapVersion = mapVersion;
        }
        info.docVersion = value;
        return old;
      }
    }
    list.add(new IdVersionInfo(indexId, value, mapVersion));
    return INVALID_STAMP;
  }
}
 
开发者ID:consulo,项目名称:consulo,代码行数:23,代码来源:PerIndexDocumentVersionMap.java

示例12: getMarkupModelMap

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
private static ConcurrentMap<Project, MarkupModelImpl> getMarkupModelMap(@NotNull Document document) {
  ConcurrentMap<Project, MarkupModelImpl> markupModelMap = document.getUserData(MARKUP_MODEL_MAP_KEY);
  if (markupModelMap == null) {
    ConcurrentMap<Project, MarkupModelImpl> newMap = ContainerUtil.newConcurrentMap();
    markupModelMap = ((UserDataHolderEx)document).putUserDataIfAbsent(MARKUP_MODEL_MAP_KEY, newMap);
  }
  return markupModelMap;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:9,代码来源:DocumentMarkupModel.java

示例13: getCachedValue

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
@Override
@Nullable
public <T, D extends UserDataHolder> T getCachedValue(@NotNull D dataHolder,
                                                      @NotNull Key<CachedValue<T>> key,
                                                      @NotNull CachedValueProvider<T> provider,
                                                      boolean trackValue) {
  CachedValueChecker.checkProvider(provider, dataHolder);
  CachedValue<T> value;
  if (dataHolder instanceof UserDataHolderEx) {
    UserDataHolderEx dh = (UserDataHolderEx)dataHolder;
    value = dh.getUserData(key);
    if (value instanceof CachedValueBase && !((CachedValueBase)value).isFromMyProject(myProject)) {
      value = null;
      dh.putUserData(key, null);
    }
    if (value == null) {
      value = createCachedValue(provider, trackValue);
      assert ((CachedValueBase)value).isFromMyProject(myProject);
      value = dh.putUserDataIfAbsent(key, value);
    }
  }
  else {
    synchronized (dataHolder) {
      value = dataHolder.getUserData(key);
      if (value instanceof CachedValueBase && !((CachedValueBase)value).isFromMyProject(myProject)) {
        value = null;
      }
      if (value == null) {
        value = createCachedValue(provider, trackValue);
        dataHolder.putUserData(key, value);
      }
    }
  }
  return value.getValue();
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:36,代码来源:CachedValuesManagerImpl.java

示例14: updateSaveability

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
private static void updateSaveability(Map<Document, Project> documentsToWarn, boolean allowSave) {
  Object newValue = allowSave ? null : SAVE_DENIED;
  for (Document document : documentsToWarn.keySet()) {
    Project oldData = documentsToWarn.get(document);
    //the committing thread could have finished already and file is not being committed anymore
    ((UserDataHolderEx)document).replace(CommitHelper.DOCUMENT_BEING_COMMITTED_KEY, oldData, newValue);
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:9,代码来源:VetoSavingCommittingDocumentsAdapter.java

示例15: getHighlightInfoMap

import com.intellij.openapi.util.UserDataHolderEx; //导入依赖的package包/类
@Nullable
public Map<RangeHighlighter, HighlightInfo> getHighlightInfoMap(@NotNull Editor editor, boolean toCreate) {
  if (editor instanceof EditorWindow) return getHighlightInfoMap(((EditorWindow)editor).getDelegate(), toCreate);
  Map<RangeHighlighter, HighlightInfo> map = editor.getUserData(HIGHLIGHT_INFO_MAP_KEY);
  if (map == null && toCreate) {
    map = ((UserDataHolderEx)editor).putUserDataIfAbsent(HIGHLIGHT_INFO_MAP_KEY, new HashMap<RangeHighlighter, HighlightInfo>());
  }
  return map;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:10,代码来源:HighlightManagerImpl.java


注:本文中的com.intellij.openapi.util.UserDataHolderEx类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。