Let MediaTypeDetector do the mime guessing
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/commit/d3efff94 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/d3efff94 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/d3efff94 Branch: refs/heads/master Commit: d3efff94f62bed37129ae75e41a59f2fdcdf0f16 Parents: 7ece6bd Author: Stian Soiland-Reyes <[email protected]> Authored: Fri Aug 19 12:30:01 2016 +0100 Committer: Stian Soiland-Reyes <[email protected]> Committed: Fri Oct 21 09:17:18 2016 +0200 ---------------------------------------------------------------------- .../workflow/RenderedResultComponent.java | 47 +++++++------------- 1 file changed, 17 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/d3efff94/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/workflow/RenderedResultComponent.java ---------------------------------------------------------------------- diff --git a/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/workflow/RenderedResultComponent.java b/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/workflow/RenderedResultComponent.java index f0900b8..d280a56 100644 --- a/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/workflow/RenderedResultComponent.java +++ b/taverna-results-view/src/main/java/org/apache/taverna/workbench/views/results/workflow/RenderedResultComponent.java @@ -23,7 +23,6 @@ import static java.awt.event.ItemEvent.SELECTED; import static javax.swing.BoxLayout.LINE_AXIS; import static javax.swing.SwingUtilities.invokeLater; import static org.apache.taverna.renderers.RendererUtils.getInputStream; -import static org.apache.taverna.results.ResultsUtils; import static org.apache.taverna.workbench.icons.WorkbenchIcons.refreshIcon; import static org.apache.commons.lang.StringEscapeUtils.escapeHtml; @@ -38,6 +37,8 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -61,6 +62,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import org.apache.taverna.lang.ui.DialogTextArea; +import org.apache.taverna.renderers.MediaTypeDetector; import org.apache.taverna.renderers.Renderer; import org.apache.taverna.renderers.RendererException; import org.apache.taverna.renderers.RendererRegistry; @@ -71,7 +73,6 @@ import org.apache.log4j.Logger; import org.apache.taverna.databundle.DataBundles; import org.apache.taverna.databundle.ErrorDocument; import org.apache.taverna.scufl2.api.port.OutputWorkflowPort; -import eu.medsea.mimeutil.MimeType; /** * Creates a component that renders an individual result from an output port. @@ -294,36 +295,22 @@ public class RenderedResultComponent extends JPanel { if (DataBundles.isValue(path) || DataBundles.isReference(path)) { // Enable refresh button refreshButton.setEnabled(true); - - List<MimeType> mimeTypes = new ArrayList<>(); - try (InputStream inputstream = getInputStream(path)) { - mimeTypes.addAll(getMimeTypes(inputstream)); + + List<String> mediaTypes; + MediaTypeDetector detector = rendererRegistry.getMimeTypeDetector(); + try { + if (DataBundles.isReference(path)) { + mediaTypes = detector.guessMediaTypes(DataBundles.getReference(path)); + } else { + mediaTypes = detector.guessMediaTypes(path); + } } catch (IOException e) { - logger.warn("Error getting mimetype", e); - } - - if (mimeTypes.isEmpty()) - // If MIME types is empty - add "plain/text" MIME type - mimeTypes.add(new MimeType("text/plain")); - else if (mimeTypes.size() == 1 - && mimeTypes.get(0).toString().equals("chemical/x-fasta")) { - /* - * If MIME type is recognised as "chemical/x-fasta" only then - * this might be an error from MIME magic (i.e., sometimes it - * recognises stuff that is not "chemical/x-fasta" as - * "chemical/x-fasta" and then Seq Vista renderer is used that - * causes errors) - make sure we also add the renderers for - * "text/plain" and "text/xml" as it is most probably just - * normal xml text and push the "chemical/x-fasta" to the bottom - * of the list. - */ - mimeTypes.add(0, new MimeType("text/plain")); - mimeTypes.add(1, new MimeType("text/xml")); + logger.warn("Can't detect media type of " + path, e); + mediaTypes = Collections.emptyList(); } - - for (MimeType mimeType : mimeTypes) { - List<Renderer> renderersList = rendererRegistry.getRenderersForMimeType(mimeType - .toString()); + + for (String mediaType : mediaTypes) { + List<Renderer> renderersList = rendererRegistry.getRenderersForMimeType(mediaType); for (Renderer renderer : renderersList) if (!recognisedRenderersForMimeType.contains(renderer)) recognisedRenderersForMimeType.add(renderer);
