[
https://issues.apache.org/jira/browse/TIKA-1332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14222947#comment-14222947
]
Tim Allison commented on TIKA-1332:
-----------------------------------
In a personal communication, I asked [~sergey_beryozkin] for recommendations
for handling static content in the jax-rs framework. For the UI component of
the eval code -- how the user interacts with the results of the eval -- Is
there an easy equivalent in JAX-RS that allows for the user to browse a
directory of files and click on desired files for download as easily as one can
with Jetty's ResourceHandler.
With permission, I'm posting/summarizing [~sergey_beryozkin]'s responses. If
anyone else has a recommendation leveraging the JAX-RS framework for dynamic
data and still using something so easy as Jetty's ResourceHandler for static
content, please let us know.
Option 1:
Handcode a JAX-RS handler that mimics Jetty's ResourceHandler
> That can be easily enough though with JAX-RS if you'd like to explore
> this path, something like this I guess:
>
{noformat}
@Path("eval")
public class TikaEvaluation {
@Context
private UriInfo ui;
@GET
@Path("list")
@Produces("text/html")
public Response getListOfResultURIs() {
List<URI> uris = new LinkedList<URI>();
for (File f : getResultFiles()) {
uris.add(ui.getAbsoluteUriBuilder().path(f.getName()).build());
}
// uris list now how a list of links to individual files
// next we need to decide how to convert that to HTML
// one option is to return the list as is and redirect that to
// JSP, another option is to build a basic HTML string right here in
the
// method, another option is to register a MessageBodyWriter that
will
// convert the list into HTML
// the individual links will be managed by getFile() method
return Response.ok(uris).build();
}
@GET
@Path("list/{name}")
@Produces("application/json", "multipart/mixed")
public Response getFile(@PathParam("name") String name) {
...
}
{noformat}
Option 2:
Run Jetty's ResourceHandler from the same embedded Jetty server that is hosting
the JAX-RS code.
> This link would probably be the best one: [link|
> https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob_plain;f=distribution/src/main/release/samples/jax_rs/search/src/main/java/demo/jaxrs/search/server/Server.java;hb=HEAD]
> Tika JAX-RS server actually runs on top of Jetty right now too, but in
> this case we have a direct Jetty server setup.
>
> The server registers a CXF servlet and Jetty handlers too. CXF servlet
> also redirect to default handlers like a default handler for serving the
> static content. This is not needed if the result files are accessible
> over URI that does not overlap with a CXF servlet URI pattern.
> In fact, I wonder if a Tika JAXRS style of the registration may also do
> ? If you register a CXF endpoint at /eval and the results are accessible
> over /results then it should work ? Unless Jetty ContentHandler is not
> installed by default - then the linked to code would def do :-)
> the only possible downside here is that as far as the consistent URI
> space management is concerned we'd have one part of it (the static
> resources) controlled natively by Jetty and the rest - by JAX-RS. so it
> can be trickier to provide a support for searching the results,
> enforcing the common security rules (when/if needed).
> That said may be it is not of a real concern, it can always be removed
> in the future if needed.
Other options?
> Create "eval" code
> ------------------
>
> Key: TIKA-1332
> URL: https://issues.apache.org/jira/browse/TIKA-1332
> Project: Tika
> Issue Type: Sub-task
> Components: cli, general, server
> Reporter: Tim Allison
>
> For this issue, we can start with code to gather statistics on each run (# of
> exceptions per file type, most common exceptions per file type, number of
> metadata items, total text extracted, etc). We should also be able to
> compare one run against another. Going forward, there's plenty of room to
> improve.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)