mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
+1
-1
@@ -128,7 +128,7 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements
|
||||
return component;
|
||||
}
|
||||
|
||||
protected void disposeComponents() {
|
||||
protected synchronized void disposeComponents() {
|
||||
assert !myDisposeCompleted : "Already disposed!";
|
||||
|
||||
final List<Object> components = myComponentsRegistry.getRegisteredImplementations();
|
||||
|
||||
@@ -56,6 +56,7 @@ public class JarMemoryLoader {
|
||||
JarMemoryLoader loader = new JarMemoryLoader();
|
||||
for (int i = 0; i < size; i++) {
|
||||
ZipEntry entry = zipStream.getNextEntry();
|
||||
if (entry == null) return loader;
|
||||
byte[] content = FileUtil.loadBytes(zipStream, (int)entry.getSize());
|
||||
MyResource resource = new MyResource(entry.getName(), new URL(baseUrl, entry.getName()), content);
|
||||
loader.myResources.put(entry.getName(), resource);
|
||||
|
||||
@@ -92,6 +92,22 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag {
|
||||
private final int myHC = ourHC++;
|
||||
private static final RecursionGuard ourGuard = RecursionManager.createGuard("xmlTag");
|
||||
|
||||
private static final Key<ParameterizedCachedValue<XmlTag[], XmlTagImpl>> SUBTAGS_KEY = Key.create("subtags");
|
||||
private static final ParameterizedCachedValueProvider<XmlTag[],XmlTagImpl> CACHED_VALUE_PROVIDER =
|
||||
new ParameterizedCachedValueProvider<XmlTag[], XmlTagImpl>() {
|
||||
@Override
|
||||
public CachedValueProvider.Result<XmlTag[]> compute(XmlTagImpl tag) {
|
||||
final List<XmlTag> result = new ArrayList<XmlTag>();
|
||||
|
||||
tag.fillSubTags(result);
|
||||
|
||||
final int s = result.size();
|
||||
XmlTag[] tags = s > 0 ? ContainerUtil.toArray(result, new XmlTag[s]) : EMPTY;
|
||||
return CachedValueProvider.Result
|
||||
.create(tags, PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT, tag.getContainingFile());
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public final int hashCode() {
|
||||
return myHC;
|
||||
@@ -606,19 +622,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag {
|
||||
|
||||
@NotNull
|
||||
public XmlTag[] getSubTags() {
|
||||
return CachedValuesManager.getManager(getProject()).getCachedValue(this, new CachedValueProvider<XmlTag[]>() {
|
||||
@Override
|
||||
public Result<XmlTag[]> compute() {
|
||||
final List<XmlTag> result = new ArrayList<XmlTag>();
|
||||
|
||||
fillSubTags(result);
|
||||
|
||||
final int s = result.size();
|
||||
XmlTag[] tags = s > 0 ? ContainerUtil.toArray(result, new XmlTag[s]) : EMPTY;
|
||||
return Result.create(tags, PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT, getContainingFile());
|
||||
|
||||
}
|
||||
});
|
||||
return CachedValuesManager.getManager(getProject()).getParameterizedCachedValue(this, SUBTAGS_KEY, CACHED_VALUE_PROVIDER, false, this);
|
||||
}
|
||||
|
||||
protected void fillSubTags(final List<XmlTag> result) {
|
||||
|
||||
Reference in New Issue
Block a user