summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-05-01 23:10:18 +0200
committerGitHub <noreply@github.com>2019-05-01 23:10:18 +0200
commitb3c22361baac22c64df66f6574ea99d21dcdd652 (patch)
tree10e2c9cf4613f3c949e27f6cc4cc049151d4ef75
parente9ac899b7879d9abfe34c3d7241e367171f0f70d (diff)
parent872c8cda1d91e79e903f63d790b800273fecd7e1 (diff)
Merge pull request #9252 from vespa-engine/revert-9250-balder/more-lenient-xml-feeder-if-necessary
Revert "Handle xml feed without the wrapping <vespafeed> tag"
-rw-r--r--document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java19
-rwxr-xr-xdocument/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java65
-rw-r--r--vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java2
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java2
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java2
5 files changed, 10 insertions, 80 deletions
diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java
index efbfd4a2167..7bc0cc871ca 100644
--- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java
+++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLFeedReader.java
@@ -28,13 +28,11 @@ import java.util.Optional;
*/
public class VespaXMLFeedReader extends VespaXMLReader implements FeedReader {
- private final boolean requireVespaFeedTag;
/**
* Creates a reader that reads from the given file.
*/
public VespaXMLFeedReader(String fileName, DocumentTypeManager docTypeManager) throws Exception {
super(fileName, docTypeManager);
- requireVespaFeedTag = true;
readInitial();
}
@@ -42,18 +40,17 @@ public class VespaXMLFeedReader extends VespaXMLReader implements FeedReader {
* Creates a reader that reads from the given stream.
*/
public VespaXMLFeedReader(InputStream stream, DocumentTypeManager docTypeManager) throws Exception {
- this(stream, docTypeManager, true);
+ super(stream, docTypeManager);
+ readInitial();
}
/**
- * Creates a reader that reads from the given stream.
+ * Creates a reader that uses the given reader to read - this can be used if the vespa feed
+ * is part of a larger XML document.
*/
- public VespaXMLFeedReader(InputStream stream, DocumentTypeManager docTypeManager, boolean requireVespaFeedTag) throws Exception {
- super(stream, docTypeManager);
- this.requireVespaFeedTag = requireVespaFeedTag;
- if (requireVespaFeedTag) {
- readInitial();
- }
+ public VespaXMLFeedReader(XMLStreamReader reader, DocumentTypeManager manager) throws Exception {
+ super(reader, manager);
+ readInitial();
}
/**
@@ -134,8 +131,6 @@ public class VespaXMLFeedReader extends VespaXMLReader implements FeedReader {
throw newDeserializeException("Missing \"documentid\" attribute for remove operation");
}
return new RemoveFeedOperation(documentId, TestAndSetCondition.fromConditionString(condition));
- } else if ("vespafeed".equals(startTag)) {
- //Ignore it
} else {
throw newDeserializeException("Element \"" + startTag + "\" not allowed in this context");
}
diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java
index 167b3d385c5..e33dbfe8898 100755
--- a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java
+++ b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXMLReaderTestCase.java
@@ -821,71 +821,6 @@ public class VespaXMLReaderTestCase {
assertEquals("Worker", child.getFieldValue("content").toString());
}
- private void verifyTitle(String input, boolean requireFeedTag) throws Exception {
- DocumentTypeManager dtm = new DocumentTypeManager();
-
- DocumentType type = new DocumentType("foo");
- type.addField(new Field("title", DataType.STRING));
-
- dtm.registerDocumentType(type);
-
- VespaXMLFeedReader parser = new VespaXMLFeedReader(new ByteArrayInputStream(Utf8.toBytes(input)), dtm, requireFeedTag);
- List<FeedOperation> ops = parser.readAll();
-
- assertEquals(1, ops.size());
- FeedOperation op = ops.get(0);
- assertEquals(FeedOperation.Type.DOCUMENT, op.getType());
- assertEquals(1, op.getDocument().getFieldCount());
- assertEquals("xyz", op.getDocument().getFieldValue("title").toString());
- }
-
- @Test
- public void testWithEncodingAndVespaFeedWrapping() throws Exception {
- verifyTitle("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
- "<vespafeed>\n" +
- " <document documenttype=\"foo\" documentid=\"doc:foo:bar:baz\"> \n" +
- " <title>xyz</title>\n" +
- " </document>\n" +
- "</vespafeed>\n",
- true);
- verifyTitle("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
- "<vespafeed>\n" +
- " <document documenttype=\"foo\" documentid=\"doc:foo:bar:baz\"> \n" +
- " <title>xyz</title>\n" +
- " </document>\n" +
- "</vespafeed>\n",
- false);
-
- verifyTitle("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
- " <document documenttype=\"foo\" documentid=\"doc:foo:bar:baz\"> \n" +
- " <title>xyz</title>\n" +
- " </document>\n",
- false);
-
- verifyTitle("<document documenttype=\"foo\" documentid=\"doc:foo:bar:baz\"> \n" +
- " <title>xyz</title>\n" +
- "</document>\n",
- false);
- }
-
- @Test(expected = DeserializationException.class)
- public void testThatMissingFeedTagThrows() throws Exception {
- verifyTitle("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
- " <document documenttype=\"foo\" documentid=\"doc:foo:bar:baz\"> \n" +
- " <title>xyz</title>\n" +
- " </document>\n",
- true);
- }
- @Test
- public void testThatMissingXmlHeaderWorks() throws Exception {
- verifyTitle("<vespafeed>\n" +
- " <document documenttype=\"foo\" documentid=\"doc:foo:bar:baz\"> \n" +
- " <title>xyz</title>\n" +
- " </document>\n" +
- "</vespafeed>\n",
- true);
- }
-
@Test(expected = DeserializationException.class)
public void testBinaryEncodingStrings() throws Exception {
DocumentTypeManager dtm = new DocumentTypeManager();
diff --git a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
index 126c4a8fd65..32e883f171a 100644
--- a/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
+++ b/vespa_feed_perf/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java
@@ -364,7 +364,7 @@ public class SimpleFeeder implements ReplyHandler {
} else if ((b[0] == 'V') && (b[1] == '1')) {
return new VespaV1FeedReader(in, docTypeMgr);
} else {
- return new VespaXMLFeedReader(in, docTypeMgr, false);
+ return new VespaXMLFeedReader(in, docTypeMgr);
}
}
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
index e30ac3919bb..6a3229e86b7 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/vespa/http/server/FeedReaderFactory.java
@@ -29,7 +29,7 @@ public class FeedReaderFactory {
switch (dataFormat) {
case XML_UTF8:
try {
- return new VespaXMLFeedReader(inputStream, docTypeManager, true);
+ return new VespaXMLFeedReader(inputStream, docTypeManager);
} catch (Exception e) {
throw new RuntimeException("Could not create VespaXMLFeedReader", e);
}
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java
index c5bd8643687..85b714b3b42 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/XMLFeeder.java
@@ -21,6 +21,6 @@ public class XMLFeeder extends Feeder {
@Override
protected FeedReader createReader() throws Exception {
- return new VespaXMLFeedReader(stream, docMan, false);
+ return new VespaXMLFeedReader(stream, docMan);
}
}