@@ -278,6 +278,35 @@ public void testRecursiveParserWrapper() throws Exception {
278278 assertEquals ("/embed1.xml" , m1 .get (TikaCoreProperties .EMBEDDED_RESOURCE_PATH ));
279279 }
280280
281+ @ Test
282+ public void testRecursiveParserWrapperMassiveEmbedded () throws Exception {
283+ Parser parser = new AutoDetectParser ();
284+ RecursiveParserWrapper wrapper = new RecursiveParserWrapper (parser );
285+ RecursiveParserWrapperHandler handler = new RecursiveParserWrapperHandler (
286+ new BasicContentHandlerFactory (BasicContentHandlerFactory .HANDLER_TYPE .TEXT ,
287+ 20000 ));
288+ try (ForkParser fork = new ForkParser (ForkParserTest .class .getClassLoader (), wrapper );
289+ InputStream is = getResourceAsStream ("/test-documents/massive_embedded.xml" )) {
290+ Metadata metadata = new Metadata ();
291+ ParseContext context = new ParseContext ();
292+ fork .parse (is , handler , metadata , context );
293+ }
294+ List <Metadata > metadataList = handler .getMetadataList ();
295+ assertEquals (111 , metadataList .size ());
296+ Metadata m0 = metadataList .get (0 );
297+ assertEquals ("Nikolai Lobachevsky" , m0 .get (TikaCoreProperties .CREATOR ));
298+ assertContains ("main_content" , m0 .get (TikaCoreProperties .TIKA_CONTENT ));
299+
300+ for (int i = 1 ; i <= 110 ; i ++) {
301+ assertContains ("embed" + i + ".xml" , m0 .get (TikaCoreProperties .TIKA_CONTENT ));
302+
303+ Metadata m1 = metadataList .get (i );
304+ assertEquals ("embeddedAuthor" , m1 .get (TikaCoreProperties .CREATOR ));
305+ assertContains ("some_embedded_content" , m1 .get (TikaCoreProperties .TIKA_CONTENT ));
306+ assertEquals ("/embed" + i + ".xml" , m1 .get (TikaCoreProperties .EMBEDDED_RESOURCE_PATH ));
307+ }
308+ }
309+
281310 @ Test
282311 public void testRPWWithEmbeddedNPE () throws Exception {
283312 Parser parser = new AutoDetectParser ();
0 commit comments