[144713] DOM seems to be out of sync with text file after using XSD refactoring
diff --git a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/impl/XMLSearchDocument.java b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/impl/XMLSearchDocument.java
index 55e6256..7908adf 100644
--- a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/impl/XMLSearchDocument.java
+++ b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/impl/XMLSearchDocument.java
@@ -43,7 +43,7 @@
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(getPath()));
if(file != null){
try {
- model = (IDOMModel)StructuredModelManager.getModelManager().getModelForRead(file);
+ model = (IDOMModel)StructuredModelManager.getModelManager().getModelForEdit(file);
} catch (IOException e) {
e.printStackTrace();
} catch (CoreException e) {
@@ -95,4 +95,11 @@
}
+ public void dispose()
+ {
+ if (model != null)
+ {
+ model.releaseFromEdit();
+ }
+ }
}
diff --git a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScan.java b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScan.java
index 3ba70ec..f966606 100644
--- a/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScan.java
+++ b/bundles/org.eclipse.wst.xml.core/src-search/org/eclipse/wst/xml/core/internal/search/quickscan/XMLQuickScan.java
@@ -18,7 +18,10 @@
import org.eclipse.wst.common.core.search.document.SearchDocument;
import org.eclipse.wst.common.core.search.pattern.SearchPattern;
import org.eclipse.wst.xml.core.internal.search.matching.PatternMatcher;
+import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
/**
@@ -62,6 +65,7 @@
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
reader = parser.getXMLReader();
reader.setFeature("http://xml.org/sax/features/namespaces", true); //$NON-NLS-1$
+ reader.setErrorHandler(new InternalErrorHandler());
}
catch (Exception e)
{
@@ -70,6 +74,19 @@
return reader;
}
+ static class InternalErrorHandler implements ErrorHandler
+ {
+ public void error(SAXParseException exception) throws SAXException
+ {
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException
+ {
+ }
+ public void warning(SAXParseException exception) throws SAXException
+ {
+ }
+ }
private synchronized static void parseFile(String fullFilePath,
XMLQuickScanContentHandler handler)
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
index ff56f6c..bb30a05 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
@@ -130,31 +130,23 @@
adapter = (XSDModelAdapter)notifier.getAdapterFor(XSDModelAdapter.class);
if (adapter == null)
{
- adapter = new XSDModelAdapter();
+ adapter = new XSDModelAdapter();
notifier.addAdapter(adapter);
}
}
return adapter;
}
- //addDocumentChangeListener()
- //removeDocumentChangeListener()
public static XSDSchema lookupOrCreateSchema(Document document)
{
- XSDSchema result = null;
- if (document instanceof INodeNotifier)
- {
- INodeNotifier notifier = (INodeNotifier)document;
- XSDModelAdapter adapter = (XSDModelAdapter)notifier.getAdapterFor(XSDModelAdapter.class);
- if (adapter == null)
- {
- adapter = new XSDModelAdapter();
- notifier.addAdapter(adapter);
- adapter.createSchema(document);
- }
- result = adapter.getSchema();
- }
+ XSDSchema result = null;
+ XSDModelAdapter adapter = lookupOrCreateModelAdapter(document);
+ if (adapter.getSchema() == null)
+ {
+ adapter.createSchema(document);
+ }
+ result = adapter.getSchema();
return result;
}
}
\ No newline at end of file