You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/10/21 09:48:52 UTC

[18/29] incubator-taverna-workbench git commit: Let MediaTypeDetector do the mime guessing

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 <st...@apache.org>
Authored: Fri Aug 19 12:30:01 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
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);