You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by nd...@apache.org on 2024/06/18 02:41:41 UTC
(tika) 01/01: Merge branch 'TIKA-4181-grpc' into tika-grpc-3x-features
This is an automated email from the ASF dual-hosted git repository.
ndipiazza pushed a commit to branch tika-grpc-3x-features
in repository https://gitbox.apache.org/repos/asf/tika.git
commit e50944daff525057cc5bf5e41963ff67de683ad2
Merge: db337cc5d bcd3179f9
Author: Nicholas DiPiazza <nd...@apache.org>
AuthorDate: Mon Jun 17 21:39:44 2024 -0500
Merge branch 'TIKA-4181-grpc' into tika-grpc-3x-features
.../apache/tika/pipes/grpc/TikaGrpcServerImpl.java | 68 +++++++++++++---------
tika-pipes/tika-grpc/src/main/proto/tika.proto | 2 +
.../apache/tika/pipes/grpc/TikaGrpcServerTest.java | 30 +++++++---
3 files changed, 64 insertions(+), 36 deletions(-)
diff --cc tika-pipes/tika-grpc/src/main/java/org/apache/tika/pipes/grpc/TikaGrpcServerImpl.java
index 1ef13c5a7,fb5b15f2e..c5e13473d
--- a/tika-pipes/tika-grpc/src/main/java/org/apache/tika/pipes/grpc/TikaGrpcServerImpl.java
+++ b/tika-pipes/tika-grpc/src/main/java/org/apache/tika/pipes/grpc/TikaGrpcServerImpl.java
@@@ -200,38 -200,20 +200,18 @@@ class TikaGrpcServerImpl extends TikaGr
}
Metadata tikaMetadata = new Metadata();
try {
- Map<String, Object> metadataJsonObject = new HashMap<>();
- if (!StringUtils.isBlank(request.getMetadataJson())) {
- try {
- metadataJsonObject = OBJECT_MAPPER.readValue(request.getMetadataJson(), new TypeReference<>() {});
- } catch (JsonProcessingException e) {
- metadataJsonObject = new HashMap<>();
- }
- }
- for (Map.Entry<String, Object> entry : metadataJsonObject.entrySet()) {
- if (entry.getValue() instanceof List) {
- List<Object> list = (List<Object>) entry.getValue();
- tikaMetadata.set(Property.externalText(entry.getKey()), list.stream()
- .map(String::valueOf)
- .collect(Collectors.toList())
- .toArray(new String[] {}));
- } else if (entry.getValue() instanceof String) {
- tikaMetadata.set(Property.externalText(entry.getKey()), (String) entry.getValue());
- } else if (entry.getValue() instanceof Integer) {
- tikaMetadata.set(Property.externalText(entry.getKey()), (Integer) entry.getValue());
- } else if (entry.getValue() instanceof Double) {
- tikaMetadata.set(Property.externalText(entry.getKey()), (Double) entry.getValue());
- } else if (entry.getValue() instanceof Float) {
- tikaMetadata.set(Property.externalText(entry.getKey()), (Float) entry.getValue());
- } else if (entry.getValue() instanceof Boolean) {
- tikaMetadata.set(Property.externalText(entry.getKey()), (Boolean) entry.getValue());
- }
- }
+ String metadataJson = request.getMetadataJson();
- if (StringUtils.isNotBlank(metadataJson)) {
- loadMetadata(metadataJson, tikaMetadata);
- }
++ loadMetadata(metadataJson, tikaMetadata);
PipesResult pipesResult = pipesClient.process(new FetchEmitTuple(request.getFetchKey(),
new FetchKey(fetcher.getName(), request.getFetchKey()), new EmitKey(), tikaMetadata,
- HandlerConfig.DEFAULT_HANDLER_CONFIG, FetchEmitTuple.ON_PARSE_EXCEPTION.SKIP));
+ HandlerConfig.DEFAULT_HANDLER_CONFIG, FetchEmitTuple.ON_PARSE_EXCEPTION.SKIP));
FetchAndParseReply.Builder fetchReplyBuilder =
- FetchAndParseReply.newBuilder().setFetchKey(request.getFetchKey());
+ FetchAndParseReply.newBuilder()
+ .setFetchKey(request.getFetchKey())
+ .setStatus(pipesResult.getStatus().name());
+ if (pipesResult.getStatus().equals(PipesResult.STATUS.FETCH_EXCEPTION)) {
+ fetchReplyBuilder.setErrorMessage(pipesResult.getMessage());
+ }
if (pipesResult.getEmitData() != null && pipesResult.getEmitData().getMetadataList() != null) {
for (Metadata metadata : pipesResult.getEmitData().getMetadataList()) {
for (String name : metadata.names()) {
@@@ -250,6 -232,29 +230,36 @@@
}
}
+ private static void loadMetadata(String metadataJson, Metadata tikaMetadata) throws JsonProcessingException {
- Map<String, Object> metadataJsonObject = OBJECT_MAPPER.readValue(metadataJson, new TypeReference<>() {});
++ Map<String, Object> metadataJsonObject = new HashMap<>();
++ if (!StringUtils.isBlank(metadataJson)) {
++ try {
++ metadataJsonObject = OBJECT_MAPPER.readValue(metadataJson, new TypeReference<>() {});
++ } catch (JsonProcessingException e) {
++ metadataJsonObject = new HashMap<>();
++ }
++ }
+ for (Map.Entry<String, Object> entry : metadataJsonObject.entrySet()) {
+ if (entry.getValue() instanceof List) {
+ List<Object> list = (List<Object>) entry.getValue();
+ tikaMetadata.set(Property.externalText(entry.getKey()), list.stream()
+ .map(String::valueOf)
+ .collect(Collectors.toList())
+ .toArray(new String[] {}));
+ } else if (entry.getValue() instanceof String) {
+ tikaMetadata.set(Property.externalText(entry.getKey()), (String) entry.getValue());
+ } else if (entry.getValue() instanceof Integer) {
+ tikaMetadata.set(Property.externalText(entry.getKey()), (Integer) entry.getValue());
+ } else if (entry.getValue() instanceof Double) {
+ tikaMetadata.set(Property.externalText(entry.getKey()), (Double) entry.getValue());
+ } else if (entry.getValue() instanceof Float) {
+ tikaMetadata.set(Property.externalText(entry.getKey()), (Float) entry.getValue());
+ } else if (entry.getValue() instanceof Boolean) {
+ tikaMetadata.set(Property.externalText(entry.getKey()), (Boolean) entry.getValue());
+ }
+ }
+ }
+
@SuppressWarnings("raw")
@Override
public void saveFetcher(SaveFetcherRequest request,