From eab789066342781ca724c922052a45dcfa6ee7e5 Mon Sep 17 00:00:00 2001 From: Patrick Tasse Date: Fri, 18 Mar 2016 16:40:34 -0400 Subject: [PATCH] tmf: Bug 489971: Premature processing of payload in custom parser Change-Id: Ifc49df1f2a40171bf285d600244350fb5da4e1a5 Signed-off-by: Patrick Tasse Reviewed-on: https://git.eclipse.org/r/68817 Reviewed-by: Hudson CI Reviewed-by: Marc-Andre Laperle Tested-by: Marc-Andre Laperle --- .../tests/parsers/custom/CustomTxtIndexTest.java | 4 ++++ .../testfiles/txt/testTxtDefinition.xml | 5 +++++ .../tmf/core/parsers/custom/CustomEvent.java | 12 ++++++++++++ .../tmf/core/parsers/custom/CustomTxtTrace.java | 2 +- .../tmf/core/parsers/custom/CustomXmlTrace.java | 2 +- 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtIndexTest.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtIndexTest.java index ae92428356..5bcdba1b0d 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtIndexTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/parsers/custom/CustomTxtIndexTest.java @@ -57,6 +57,10 @@ public class CustomTxtIndexTest extends AbstractCustomTraceIndexTest { SimpleDateFormat f = new SimpleDateFormat(TIMESTAMP_FORMAT); String eventStr = f.format(new Date(i)) + " hello world\n"; writer.write(eventStr); + int extra = i % 3; + for (int j = 0; j < extra; j++) { + writer.write("extra line\n"); + } } } diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/testfiles/txt/testTxtDefinition.xml b/tmf/org.eclipse.tracecompass.tmf.core.tests/testfiles/txt/testTxtDefinition.xml index ee2f9cbd73..b2af6b4b8b 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core.tests/testfiles/txt/testTxtDefinition.xml +++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/testfiles/txt/testTxtDefinition.xml @@ -7,6 +7,11 @@ (\S*\s\S*) (.*\S) + + +(.*\S) + + diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomEvent.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomEvent.java index e06481fcb7..6d55a9664a 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomEvent.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomEvent.java @@ -172,6 +172,18 @@ public class CustomEvent extends TmfEvent { customEventContent = content; } + /** + * Get this event's content value. + *

+ * This does not process the payload data and is therefore safe to call in + * the middle of parsing an event. + * + * @return the event's content value. + */ + Object getContentValue() { + return customEventContent.getValue(); + } + /** * Set this event's type * diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomTxtTrace.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomTxtTrace.java index 207408d78b..2cecbaa36e 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomTxtTrace.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomTxtTrace.java @@ -380,7 +380,7 @@ public class CustomTxtTrace extends TmfTrace implements ITmfPersistentlyIndexabl } } } - ((StringBuffer) event.getContent().getValue()).append("\n").append(line); //$NON-NLS-1$ + ((StringBuffer) event.getContentValue()).append("\n").append(line); //$NON-NLS-1$ } } rawPos = fFile.getFilePointer(); diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomXmlTrace.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomXmlTrace.java index 6dac5bcc3d..8af0cc739a 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomXmlTrace.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/parsers/custom/CustomXmlTrace.java @@ -277,7 +277,7 @@ public class CustomXmlTrace extends TmfTrace implements ITmfPersistentlyIndexabl final Element element = parseElementBuffer(elementBuffer); event = extractEvent(element, fRecordInputElement); - ((StringBuffer) event.getContent().getValue()).append(elementBuffer); + ((StringBuffer) event.getContentValue()).append(elementBuffer); long rawPos = fFile.getFilePointer(); String line = fFile.getNextLine(); -- 2.34.1