Skip to content

Commit b0a24fe

Browse files
committed
TIKA-4809: Remove the maxEmbeddedResources/maxEmbeddedCount headers
1 parent 871d2c0 commit b0a24fe

3 files changed

Lines changed: 8 additions & 70 deletions

File tree

tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/RecursiveMetadataResource.java

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.slf4j.Logger;
3838
import org.slf4j.LoggerFactory;
3939

40-
import org.apache.tika.config.EmbeddedLimits;
4140
import org.apache.tika.io.TikaInputStream;
4241
import org.apache.tika.metadata.Metadata;
4342
import org.apache.tika.parser.ParseContext;
@@ -64,40 +63,20 @@ public RecursiveMetadataResource(TikaResource tikaResource) {
6463
*/
6564
public List<Metadata> parseMetadata(TikaInputStream tis, Metadata metadata,
6665
MultivaluedMap<String, String> httpHeaders,
67-
ServerHandlerConfig handlerConfig)
66+
String handlerTypeName)
6867
throws Exception {
6968

7069
final ParseContext context = tikaResource.createParseContext();
7170

7271
fillMetadata(null, metadata, httpHeaders);
7372
TikaResource.logRequest(LOG, "/rmeta", metadata);
7473

75-
// Set up handler factory in context using shared utility
76-
setupContentHandlerFactory(context, handlerConfig.type().toString());
77-
78-
// Set up embedded limits if specified
79-
if (handlerConfig.maxEmbeddedCount() >= 0) {
80-
EmbeddedLimits limits = new EmbeddedLimits();
81-
limits.setMaxCount(handlerConfig.maxEmbeddedCount());
82-
context.set(EmbeddedLimits.class, limits);
83-
}
74+
setupContentHandlerFactory(context, handlerTypeName);
8475

8576
// Filtering is done in child process, no need to filter again
8677
return tikaResource.parseWithPipes(tis, metadata, context, ParseMode.RMETA);
8778
}
8879

89-
static ServerHandlerConfig buildHandlerConfig(MultivaluedMap<String, String> httpHeaders, String handlerTypeName, ParseMode parseMode) {
90-
int maxEmbeddedCount = -1;
91-
// Support both old header name and new for backwards compatibility
92-
if (httpHeaders.containsKey("maxEmbeddedResources")) {
93-
maxEmbeddedCount = Integer.parseInt(httpHeaders.getFirst("maxEmbeddedResources"));
94-
} else if (httpHeaders.containsKey("maxEmbeddedCount")) {
95-
maxEmbeddedCount = Integer.parseInt(httpHeaders.getFirst("maxEmbeddedCount"));
96-
}
97-
return new ServerHandlerConfig(BasicContentHandlerFactory.parseHandlerType(handlerTypeName, DEFAULT_HANDLER_TYPE),
98-
parseMode, maxEmbeddedCount);
99-
}
100-
10180
/**
10281
* Returns an InputStream that can be deserialized as a list of
10382
* {@link Metadata} objects.
@@ -132,7 +111,7 @@ public Response getMetadataFromMultipart(Attachment att, @PathParam(HANDLER_TYPE
132111
try (TikaInputStream tis = TikaInputStream.get(att.getObject(InputStream.class))) {
133112
tis.getPath(); // Spool to temp file for pipes-based parsing
134113
List<Metadata> metadataList = parseMetadata(tis, Metadata.newInstance(context), att.getHeaders(),
135-
buildHandlerConfig(att.getHeaders(), handlerTypeName, ParseMode.RMETA));
114+
handlerTypeName);
136115
return Response.ok(new MetadataList(metadataList)).build();
137116
}
138117
}
@@ -157,17 +136,14 @@ public Response getMetadataWithConfig(
157136
TikaResource.logRequest(LOG, "/rmeta/config", metadata);
158137

159138
return Response
160-
.ok(parseMetadataWithContext(tis, metadata, httpHeaders.getRequestHeaders(),
161-
buildHandlerConfig(httpHeaders.getRequestHeaders(), null, ParseMode.RMETA),
162-
context))
139+
.ok(parseMetadataWithContext(tis, metadata, null, context))
163140
.build();
164141
}
165142
}
166143

167-
private MetadataList parseMetadataWithContext(TikaInputStream tis, Metadata metadata, MultivaluedMap<String, String> httpHeaders,
168-
ServerHandlerConfig handlerConfig, ParseContext context) throws Exception {
169-
// Set up handler factory in context if not already set using shared utility
170-
setupContentHandlerFactoryIfNeeded(context, handlerConfig.type().toString());
144+
private MetadataList parseMetadataWithContext(TikaInputStream tis, Metadata metadata,
145+
String handlerTypeName, ParseContext context) throws Exception {
146+
setupContentHandlerFactoryIfNeeded(context, handlerTypeName);
171147

172148
// Filtering is done in child process, no need to filter again
173149
List<Metadata> metadataList = tikaResource.parseWithPipes(tis, metadata, context, ParseMode.RMETA);
@@ -207,7 +183,7 @@ public Response getMetadata(InputStream is, @Context HttpHeaders httpHeaders, @P
207183
try (TikaInputStream tis = TikaInputStream.get(is)) {
208184
tis.getPath(); // Spool to temp file for pipes-based parsing
209185
List<Metadata> metadataList = parseMetadata(tis, metadata, httpHeaders.getRequestHeaders(),
210-
buildHandlerConfig(httpHeaders.getRequestHeaders(), handlerTypeName, ParseMode.RMETA));
186+
handlerTypeName);
211187
return Response.ok(new MetadataList(metadataList)).build();
212188
}
213189
}

tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/ServerHandlerConfig.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

tika-server/tika-server-standard/src/test/java/org/apache/tika/server/standard/RecursiveMetadataResourceTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,9 +469,6 @@ public void testHandlerTypeInMultipartXML() throws Exception {
469469
assertContains("plundered our seas", content);
470470
}
471471

472-
// TIKA-3227 - TODO: re-enable once maxEmbeddedResources is configurable via JSON
473-
// Use maxEmbeddedResources=0 in config to skip embedded documents
474-
475472
@Test
476473
public void testXFA() throws Exception {
477474
Response response = WebClient

0 commit comments

Comments
 (0)