You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2012/01/20 20:36:44 UTC
svn commit: r1234092 - in
/uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors:
MultiPageEditor.java ui/AbstractSection.java
Author: schor
Date: Fri Jan 20 19:36:44 2012
New Revision: 1234092
URL: http://svn.apache.org/viewvc?rev=1234092&view=rev
Log:
[UIMA-239] support parsing UIMA descriptors in a mode that preserves comments and formatting whitespace.
Modified:
uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/MultiPageEditor.java
uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java
Modified: uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/MultiPageEditor.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/MultiPageEditor.java?rev=1234092&r1=1234091&r2=1234092&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/MultiPageEditor.java (original)
+++ uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/MultiPageEditor.java Fri Jan 20 19:36:44 2012
@@ -154,6 +154,7 @@ import org.eclipse.ui.forms.widgets.Form
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.texteditor.ITextEditor;
import org.osgi.framework.Bundle;
+import org.w3c.dom.Node;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
@@ -205,6 +206,8 @@ public class MultiPageEditor extends For
public final int INITIAL_SIZE_TYPE_COLLECTIONS = 20;
public final int INITIAL_SIZE_FEATURE_COLLECTIONS = 40;
+
+ public final boolean PRESERVE_COMMENTS = true;
// ******************************
@@ -222,6 +225,7 @@ public class MultiPageEditor extends For
private TypeSystemDescription importedTypeSystemDescription = null;
+ private Node xmlInfoset = null; // captures comments and ignorableWhitespace
/**
* Key = unique ID of included AE in aggregate Value = AnalysisEngineSpecification or URISpecifier
* if remote This value is obtained from aeDescription.getDelegateAnalysisEngineSpecifiers() for
@@ -957,7 +961,7 @@ public class MultiPageEditor extends For
// leaves isBadXML set, if it can't parse but isn't throwing
isContextLoaded = false;
try {
- parseSource(input, filePathName);
+ parseSource(input, filePathName, PRESERVE_COMMENTS);
} catch (MultilevelCancel e) {
throw new PartInitException("Operation Cancelled");
}
@@ -974,15 +978,15 @@ public class MultiPageEditor extends For
private IUimaEditorExtension extensionEditor;
- private void parseSource(XMLInputSource input, String filePathName) throws PartInitException {
+ private void parseSource(XMLInputSource input, String filePathName, boolean preserveComments) throws PartInitException {
extensionEditor = null;
- parseSourceInner(input, filePathName);
+ parseSourceInner(input, filePathName, preserveComments);
}
- private void parseSourceInner(XMLInputSource input, String filePathName) throws PartInitException {
+ private void parseSourceInner(XMLInputSource input, String filePathName, boolean preserveComments) throws PartInitException {
XMLizable inputDescription = null;
try {
- inputDescription = AbstractSection.parseDescriptor(input);
+ inputDescription = AbstractSection.parseDescriptor(input, preserveComments);
if (inputDescription instanceof AnalysisEngineDescription) {
validateDescriptorType(DESCRIPTOR_AE);
setAeDescription((AnalysisEngineDescription) inputDescription);
@@ -1039,7 +1043,7 @@ public class MultiPageEditor extends For
// exception go away - so try reparsing.
try {
- parseSourceInner(new XMLInputSource(input.getURL()), filePathName);
+ parseSourceInner(new XMLInputSource(input.getURL()), filePathName, preserveComments);
} catch (IOException e1) {
Utility.popMessage(
"Internal Error",
@@ -1288,7 +1292,7 @@ public class MultiPageEditor extends For
TypeSystemDescription oldTsdWithResolvedImports = mergedTypeSystemDescription;
try {
- parseSource(input, filePathName); // sets isBadXML to false if OK
+ parseSource(input, filePathName, true); // sets isBadXML to false if OK
} catch (PartInitException e1) { // if user switched the kind of descriptor
Utility.popMessage(Messages.getString("MultiPageEditor.20"), //$NON-NLS-1$
getMessagesToRootCause(e1), MessageDialog.ERROR);
@@ -1411,7 +1415,8 @@ public class MultiPageEditor extends For
try {
XMLSerializer xmlSerializer = new XMLSerializer(true);
xmlSerializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", Integer.valueOf(
- MultiPageEditorContributor.getXMLindent()).toString());
+ MultiPageEditorContributor.getXMLindent()).toString());
+ xmlSerializer.setIndent(false);
xmlSerializer.setWriter(writer);
ContentHandler contentHandler = xmlSerializer.getContentHandler();
contentHandler.startDocument();
@@ -1720,7 +1725,7 @@ public class MultiPageEditor extends For
}
if (null != input)
try {
- parseSource(input, contextFile);
+ parseSource(input, contextFile, !PRESERVE_COMMENTS);
} catch (PartInitException e) {
showContextLoadFailureMessage(e, contextFile);
throw new MultilevelCancel();
Modified: uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java?rev=1234092&r1=1234091&r2=1234092&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java (original)
+++ uima/uimaj/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java Fri Jan 20 19:36:44 2012
@@ -1422,8 +1422,13 @@ implements Listener, StandardStrings {
}
public static XMLizable parseDescriptor(XMLInputSource input) throws InvalidXMLException {
+ return parseDescriptor(input, false);
+ }
+
+ public static XMLizable parseDescriptor(XMLInputSource input, boolean preserveComments) throws InvalidXMLException {
// turn off environment variable expansion
XMLParser.ParsingOptions parsingOptions = new XMLParser.ParsingOptions(false);
+ parsingOptions.preserveComments = preserveComments;
XMLParser parser = UIMAFramework.getXMLParser();
// disabled - error messages from XML validation not very helpful
// parser.enableSchemaValidation(true);