This is an automated email from the ASF dual-hosted git repository. tballison pushed a commit to branch TIKA-4809-stage-4 in repository https://gitbox.apache.org/repos/asf/tika.git
commit b0a24fee570f04a8db62e81155eefee2d3125a10 Author: tallison <[email protected]> AuthorDate: Sun Aug 9 20:35:55 2026 -0400 TIKA-4809: Remove the maxEmbeddedResources/maxEmbeddedCount headers --- .../core/resource/RecursiveMetadataResource.java | 40 +++++----------------- .../server/core/resource/ServerHandlerConfig.java | 35 ------------------- .../standard/RecursiveMetadataResourceTest.java | 3 -- 3 files changed, 8 insertions(+), 70 deletions(-) diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java index 762b8ab0ab..554f513c96 100644 --- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java +++ b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java @@ -37,7 +37,6 @@ import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.tika.config.EmbeddedLimits; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.ParseContext; @@ -64,7 +63,7 @@ public class RecursiveMetadataResource { */ public List<Metadata> parseMetadata(TikaInputStream tis, Metadata metadata, MultivaluedMap<String, String> httpHeaders, - ServerHandlerConfig handlerConfig) + String handlerTypeName) throws Exception { final ParseContext context = tikaResource.createParseContext(); @@ -72,32 +71,12 @@ public class RecursiveMetadataResource { fillMetadata(null, metadata, httpHeaders); TikaResource.logRequest(LOG, "/rmeta", metadata); - // Set up handler factory in context using shared utility - setupContentHandlerFactory(context, handlerConfig.type().toString()); - - // Set up embedded limits if specified - if (handlerConfig.maxEmbeddedCount() >= 0) { - EmbeddedLimits limits = new EmbeddedLimits(); - limits.setMaxCount(handlerConfig.maxEmbeddedCount()); - context.set(EmbeddedLimits.class, limits); - } + setupContentHandlerFactory(context, handlerTypeName); // Filtering is done in child process, no need to filter again return tikaResource.parseWithPipes(tis, metadata, context, ParseMode.RMETA); } - static ServerHandlerConfig buildHandlerConfig(MultivaluedMap<String, String> httpHeaders, String handlerTypeName, ParseMode parseMode) { - int maxEmbeddedCount = -1; - // Support both old header name and new for backwards compatibility - if (httpHeaders.containsKey("maxEmbeddedResources")) { - maxEmbeddedCount = Integer.parseInt(httpHeaders.getFirst("maxEmbeddedResources")); - } else if (httpHeaders.containsKey("maxEmbeddedCount")) { - maxEmbeddedCount = Integer.parseInt(httpHeaders.getFirst("maxEmbeddedCount")); - } - return new ServerHandlerConfig(BasicContentHandlerFactory.parseHandlerType(handlerTypeName, DEFAULT_HANDLER_TYPE), - parseMode, maxEmbeddedCount); - } - /** * Returns an InputStream that can be deserialized as a list of * {@link Metadata} objects. @@ -132,7 +111,7 @@ public class RecursiveMetadataResource { try (TikaInputStream tis = TikaInputStream.get(att.getObject(InputStream.class))) { tis.getPath(); // Spool to temp file for pipes-based parsing List<Metadata> metadataList = parseMetadata(tis, Metadata.newInstance(context), att.getHeaders(), - buildHandlerConfig(att.getHeaders(), handlerTypeName, ParseMode.RMETA)); + handlerTypeName); return Response.ok(new MetadataList(metadataList)).build(); } } @@ -157,17 +136,14 @@ public class RecursiveMetadataResource { TikaResource.logRequest(LOG, "/rmeta/config", metadata); return Response - .ok(parseMetadataWithContext(tis, metadata, httpHeaders.getRequestHeaders(), - buildHandlerConfig(httpHeaders.getRequestHeaders(), null, ParseMode.RMETA), - context)) + .ok(parseMetadataWithContext(tis, metadata, null, context)) .build(); } } - private MetadataList parseMetadataWithContext(TikaInputStream tis, Metadata metadata, MultivaluedMap<String, String> httpHeaders, - ServerHandlerConfig handlerConfig, ParseContext context) throws Exception { - // Set up handler factory in context if not already set using shared utility - setupContentHandlerFactoryIfNeeded(context, handlerConfig.type().toString()); + private MetadataList parseMetadataWithContext(TikaInputStream tis, Metadata metadata, + String handlerTypeName, ParseContext context) throws Exception { + setupContentHandlerFactoryIfNeeded(context, handlerTypeName); // Filtering is done in child process, no need to filter again List<Metadata> metadataList = tikaResource.parseWithPipes(tis, metadata, context, ParseMode.RMETA); @@ -207,7 +183,7 @@ public class RecursiveMetadataResource { try (TikaInputStream tis = TikaInputStream.get(is)) { tis.getPath(); // Spool to temp file for pipes-based parsing List<Metadata> metadataList = parseMetadata(tis, metadata, httpHeaders.getRequestHeaders(), - buildHandlerConfig(httpHeaders.getRequestHeaders(), handlerTypeName, ParseMode.RMETA)); + handlerTypeName); return Response.ok(new MetadataList(metadataList)).build(); } } diff --git a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/ServerHandlerConfig.java b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/ServerHandlerConfig.java deleted file mode 100644 index 5187563d95..0000000000 --- a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/ServerHandlerConfig.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tika.server.core.resource; - -import org.apache.tika.pipes.api.ParseMode; -import org.apache.tika.sax.BasicContentHandlerFactory; - -/** - * Server-internal configuration for request handlers. - * This holds configuration parsed from HTTP headers for a single request - * for the BasicContentHandlerFactory kinds of elements. - * <p> - * Note: Embedded resource limits are now configured via EmbeddedLimits in ParseContext, - * not through this config. - */ -public record ServerHandlerConfig( - BasicContentHandlerFactory.HANDLER_TYPE type, - ParseMode parseMode, - int maxEmbeddedCount -) { -} diff --git a/tika-server/tika-server-standard/src/test/java/org/apache/tika/server/standard/RecursiveMetadataResourceTest.java b/tika-server/tika-server-standard/src/test/java/org/apache/tika/server/standard/RecursiveMetadataResourceTest.java index 025c4593c1..de3605813e 100644 --- a/tika-server/tika-server-standard/src/test/java/org/apache/tika/server/standard/RecursiveMetadataResourceTest.java +++ b/tika-server/tika-server-standard/src/test/java/org/apache/tika/server/standard/RecursiveMetadataResourceTest.java @@ -469,9 +469,6 @@ public class RecursiveMetadataResourceTest extends CXFTestBase { assertContains("plundered our seas", content); } - // TIKA-3227 - TODO: re-enable once maxEmbeddedResources is configurable via JSON - // Use maxEmbeddedResources=0 in config to skip embedded documents - @Test public void testXFA() throws Exception { Response response = WebClient
