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,