}
public int getVersion() {
- return 0;
+ final DomApplicationComponent component = DomApplicationComponent.getInstance();
+ int result = 0;
+ for (DomFileDescription description : component.getAllFileDescriptions()) {
+ result += description.getVersion();
+ result += description.getRootTagName().hashCode(); // so that a plugin enabling/disabling could trigger the reindexing
+ }
+ return result;
}
- private static class RootTagReachedException extends RuntimeException{
- }
}
import org.jetbrains.annotations.Nullable;
import java.lang.reflect.Type;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import static com.intellij.util.containers.CollectionFactory.arrayList;
+
/**
* @author peter
*/
myTypeChooserManager.copyFrom(description.getTypeChooserManager());
}
+ public synchronized List<DomFileDescription> getAllFileDescriptions() {
+ final List<DomFileDescription> result = arrayList();
+ for (Set<DomFileDescription> descriptions : myRootTagName2FileDescription.values()) {
+ result.addAll(descriptions);
+ }
+ result.addAll(myAcceptingOtherRootTagNamesDescriptions);
+ return result;
+ }
+
@Nullable
private synchronized DomFileDescription findFileDescription(Class rootElementClass) {
for (Set<DomFileDescription> descriptions : myRootTagName2FileDescription.values()) {
*/
package com.intellij.util.xml;
-import com.intellij.openapi.Disposable;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.module.Module;
import com.intellij.util.containers.ConcurrentHashMap;
import com.intellij.util.containers.ConcurrentInstanceMap;
import com.intellij.util.xml.highlighting.DomElementsAnnotator;
-import gnu.trove.THashSet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
return Collections.emptyList();
}
- @Deprecated
- protected final void registerClassChooser(final Type aClass, final TypeChooser typeChooser, Disposable parentDisposable) {
- registerTypeChooser(aClass, typeChooser);
+ /**
+ * @return some version. Override and change (e.g. <code>super.getVersion()+1</code>) when after some changes some files stopped being
+ * described by this description or vice versa, so that the
+ * {@link com.intellij.util.xml.DomService#getDomFileCandidates(Class, com.intellij.openapi.project.Project)} index is rebuilt correctly.
+ */
+ public int getVersion() {
+ return myRootTagName.hashCode();
}
protected final void registerTypeChooser(final Type aClass, final TypeChooser typeChooser) {
return Collections.emptySet();
}
- /**
- * @deprecated not used
- */
- @NotNull
- public Set<Class<? extends DomElement>> getDomModelDependencyItems() {
- return Collections.emptySet();
- }
-
- /**
- * @deprecated not used
- */
- @NotNull
- public Set<XmlFile> getDomModelDependentFiles(@NotNull DomFileElement changedRoot) {
- return Collections.emptySet();
- }
-
- protected static Set<Class<? extends DomElement>> convertToSet(Class<? extends DomElement> classes) {
- return new THashSet<Class<? extends DomElement>>(Arrays.asList(classes));
- }
-
/**
* @param reference DOM reference
* @return element, whose all children will be searched for declaration