Bug 577558: [*-Model] Add support for SourceContainerElement
Change-Id: I315523dc1211e85cc52470892ca269a4ad3db790
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/ContainerSourceElement.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/ContainerSourceElement.java
index 17c5077..9af2da0 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/ContainerSourceElement.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/ContainerSourceElement.java
@@ -26,8 +26,10 @@
import org.eclipse.statet.docmlet.tex.core.model.TexSourceElement;
import org.eclipse.statet.ltk.ast.core.AstNode;
import org.eclipse.statet.ltk.core.ElementName;
+import org.eclipse.statet.ltk.core.source.SourceModelStamp;
import org.eclipse.statet.ltk.model.core.LtkModelUtils;
import org.eclipse.statet.ltk.model.core.element.LtkModelElementFilter;
+import org.eclipse.statet.ltk.model.core.element.SourceContainerElement;
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
@@ -87,15 +89,21 @@
}
- public static class SourceContainer extends ContainerSourceElement {
+ public static class SourceContainer extends ContainerSourceElement
+ implements SourceContainerElement<TexSourceElement> {
private final SourceUnit sourceUnit;
+ private final SourceModelStamp stamp;
- public SourceContainer(final int type, final SourceUnit su, final TexAstNode astNode) {
+
+ public SourceContainer(final int type, final SourceUnit sourceUnit,
+ final SourceModelStamp stamp,
+ final TexAstNode astNode) {
super(type, astNode);
- this.sourceUnit= su;
+ this.sourceUnit= sourceUnit;
+ this.stamp= stamp;
}
@@ -119,6 +127,11 @@
}
@Override
+ public SourceModelStamp getStamp() {
+ return this.stamp;
+ }
+
+ @Override
public boolean exists() {
final SourceUnitModelInfo modelInfo= getSourceUnit().getModelInfo(TexModel.LTX_TYPE_ID, 0, null);
return (modelInfo != null && modelInfo.getSourceElement() == this);
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/SourceAnalyzer.java b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/SourceAnalyzer.java
index afb3fe7..2b8da7c 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/SourceAnalyzer.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.core/src/org/eclipse/statet/internal/docmlet/tex/core/model/SourceAnalyzer.java
@@ -92,8 +92,8 @@
this.maxSectionLevel= Integer.MIN_VALUE;
}
- public LtxSourceUnitModelInfoImpl createModel(final TexSourceUnit su, final String input,
- final TexAstInfo ast,
+ public LtxSourceUnitModelInfoImpl createModel(final TexSourceUnit sourceUnit,
+ final String input, final TexAstInfo ast,
Map<String, TexCommand> customCommands, Map<String, TexCommand> customEnvs) {
clear();
this.input= input;
@@ -101,7 +101,8 @@
return null;
}
final TexSourceElement root= this.currentElement= new ContainerSourceElement.SourceContainer(
- TexElement.C12_SOURCE_FILE, su, (TexAstNode) ast.getRoot());
+ TexElement.C12_SOURCE_FILE, sourceUnit, ast.getStamp(),
+ (TexAstNode)ast.getRoot() );
try {
((TexAstNode)ast.getRoot()).acceptInTex(this);
diff --git a/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/ContainerSourceElement.java b/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/ContainerSourceElement.java
index 5c7f92a..3fcff2a 100644
--- a/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/ContainerSourceElement.java
+++ b/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/ContainerSourceElement.java
@@ -26,8 +26,10 @@
import org.eclipse.statet.docmlet.wikitext.core.model.WikitextSourceElement;
import org.eclipse.statet.ltk.ast.core.AstNode;
import org.eclipse.statet.ltk.core.ElementName;
+import org.eclipse.statet.ltk.core.source.SourceModelStamp;
import org.eclipse.statet.ltk.model.core.LtkModelUtils;
import org.eclipse.statet.ltk.model.core.element.LtkModelElementFilter;
+import org.eclipse.statet.ltk.model.core.element.SourceContainerElement;
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
@@ -87,15 +89,21 @@
}
- public static class SourceContainer extends ContainerSourceElement {
+ public static class SourceContainer extends ContainerSourceElement
+ implements SourceContainerElement<WikitextSourceElement> {
private final SourceUnit sourceUnit;
+ private final SourceModelStamp stamp;
- public SourceContainer(final int type, final SourceUnit su, final WikitextAstNode astNode) {
+
+ public SourceContainer(final int type, final SourceUnit sourceUnit,
+ final SourceModelStamp stamp,
+ final WikitextAstNode astNode) {
super(type, astNode);
- this.sourceUnit= su;
+ this.sourceUnit= sourceUnit;
+ this.stamp= stamp;
}
@@ -119,6 +127,11 @@
}
@Override
+ public SourceModelStamp getStamp() {
+ return this.stamp;
+ }
+
+ @Override
public boolean exists() {
final SourceUnitModelInfo modelInfo= getSourceUnit().getModelInfo(WikitextModel.WIKIDOC_TYPE_ID, 0, null);
return (modelInfo != null && modelInfo.getSourceElement() == this);
diff --git a/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/SourceAnalyzer.java b/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/SourceAnalyzer.java
index e0351c4..b8b827f 100644
--- a/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/SourceAnalyzer.java
+++ b/docmlet/org.eclipse.statet.docmlet.wikitext.core/src/org/eclipse/statet/internal/docmlet/wikitext/core/model/SourceAnalyzer.java
@@ -86,8 +86,8 @@
this.maxSectionLevel= Integer.MIN_VALUE;
}
- public WikidocSourceUnitModelInfoImpl createModel(final WikitextSourceUnit su, final String input,
- final AstInfo ast) {
+ public WikidocSourceUnitModelInfoImpl createModel(final WikitextSourceUnit sourceUnit,
+ final String input, final AstInfo ast) {
clear();
this.input= input;
if (!(ast.getRoot() instanceof WikitextAstNode)) {
@@ -101,7 +101,8 @@
this.linkDefLabels.clear();
}
final WikitextSourceElement root= this.currentElement= new ContainerSourceElement.SourceContainer(
- WikitextSourceElement.C12_SOURCE_FILE, su, (WikitextAstNode) ast.getRoot());
+ WikitextSourceElement.C12_SOURCE_FILE, sourceUnit, ast.getStamp(),
+ (WikitextAstNode)ast.getRoot() );
try {
((WikitextAstNode) ast.getRoot()).acceptInWikitext(this);
diff --git a/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/CompositeSourceElement.java b/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/CompositeSourceElement.java
index e3f6add..9f0d439 100644
--- a/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/CompositeSourceElement.java
+++ b/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/CompositeSourceElement.java
@@ -24,6 +24,7 @@
import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.jcommons.text.core.TextRegion;
+import org.eclipse.statet.ltk.core.source.SourceModelStamp;
import org.eclipse.statet.ltk.model.core.element.LtkModelElementFilter;
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
@@ -44,9 +45,10 @@
public CompositeSourceElement(final SourceUnit sourceUnit,
+ final SourceModelStamp stamp,
final List<? extends YamlSourceElement> elements,
final TextRegion sourceRange) {
- super(sourceUnit, null);
+ super(sourceUnit, stamp, null);
this.compositeElements= ImCollections.toList(elements);
this.sourceRange= sourceRange;
diff --git a/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/ContainerSourceElement.java b/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/ContainerSourceElement.java
index 95765d6..0183151 100644
--- a/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/ContainerSourceElement.java
+++ b/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/ContainerSourceElement.java
@@ -22,9 +22,11 @@
import org.eclipse.statet.jcommons.text.core.TextRegion;
import org.eclipse.statet.ltk.core.ElementName;
+import org.eclipse.statet.ltk.core.source.SourceModelStamp;
import org.eclipse.statet.ltk.model.core.LtkModelUtils;
import org.eclipse.statet.ltk.model.core.element.LtkModelElement;
import org.eclipse.statet.ltk.model.core.element.LtkModelElementFilter;
+import org.eclipse.statet.ltk.model.core.element.SourceContainerElement;
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
@@ -76,15 +78,21 @@
}
- public static class SourceContainer extends ContainerSourceElement {
+ public static class SourceContainer extends ContainerSourceElement
+ implements SourceContainerElement<YamlSourceElement> {
private final SourceUnit sourceUnit;
+ private final SourceModelStamp stamp;
- public SourceContainer(final SourceUnit sourceUnit, final YamlAstNode astNode) {
+
+ public SourceContainer(final SourceUnit sourceUnit,
+ final SourceModelStamp stamp,
+ final YamlAstNode astNode) {
super(astNode);
this.sourceUnit= sourceUnit;
+ this.stamp= stamp;
final ElementName elementName= sourceUnit.getElementName();
this.name= (elementName instanceof YamlElementName) ?
@@ -109,6 +117,11 @@
}
@Override
+ public SourceModelStamp getStamp() {
+ return this.stamp;
+ }
+
+ @Override
public boolean exists() {
final SourceUnitModelInfo modelInfo= getSourceUnit().getModelInfo(YamlModel.YAML_TYPE_ID, 0, null);
return (modelInfo != null && modelInfo.getSourceElement() == this);
diff --git a/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/SourceAnalyzer.java b/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/SourceAnalyzer.java
index e212446..1e9b2c2 100644
--- a/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/SourceAnalyzer.java
+++ b/yaml/org.eclipse.statet.yaml.core/src/org/eclipse/statet/internal/yaml/core/model/SourceAnalyzer.java
@@ -66,7 +66,8 @@
final var rootNode= (SourceComponent)ast.getRoot();
final var element= new ContainerSourceElement.SourceContainer(
- sourceUnit, rootNode );
+ this.sourceUnit, ast.getStamp(),
+ rootNode );
processSourceLines(element, rootNode);
final YamlSourceUnitModelInfoImpl modelInfo= new YamlSourceUnitModelInfoImpl(ast, element);
@@ -100,7 +101,8 @@
public YamlSourceUnitModelInfo stopChunkSession() {
final var chunkElements= nonNullAssert(this.chunkElements);
try {
- final var compositeElement= new CompositeSourceElement(this.sourceUnit,
+ final var compositeElement= new CompositeSourceElement(
+ this.sourceUnit, this.ast.getStamp(),
chunkElements, this.ast.getRoot() );
return new YamlSourceUnitModelInfoImpl(this.ast, compositeElement);
}