Author: jm
Date: 2010-09-27 13:26:56 -0700 (Mon, 27 Sep 2010)
New Revision: 22073

Modified:
   
core3/psi-mi-impl/trunk/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiCyFileFilter.java
   core3/psi-mi-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Fixed PsiMiCyFileFilter so it doesn't hang when trying to load a remote 
resource when there's no internet connection

Modified: 
core3/psi-mi-impl/trunk/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiCyFileFilter.java
===================================================================
--- 
core3/psi-mi-impl/trunk/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiCyFileFilter.java
   2010-09-27 20:07:31 UTC (rev 22072)
+++ 
core3/psi-mi-impl/trunk/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiCyFileFilter.java
   2010-09-27 20:26:56 UTC (rev 22073)
@@ -5,6 +5,8 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URI;
+import java.net.URL;
+import java.net.URLConnection;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -17,10 +19,12 @@
        private static final String PSI_MI_XML_NAMESPACE = "net:sf:psidev:mi";
 
        private static final int DEFAULT_LINES_TO_CHECK = 20;
+
+       private static final int CONNECTION_TIMEOUT = 500;
        
-       private Set<String> extensions;
-       private Set<String> contentTypes;
-       private String description;
+       private final Set<String> extensions;
+       private final Set<String> contentTypes;
+       private final String description;
 
        private PsiMiCyFileFilter(String description) {
                extensions = new HashSet<String>();
@@ -35,8 +39,11 @@
        
        @Override
        public boolean accept(URI uri, DataCategory category) {
+               if (!category.equals(DataCategory.NETWORK)) {
+                       return false;
+               }
                try {
-                       return accept(uri.toURL().openStream(), category);
+                       return accept(getInputStream(uri.toURL()), category);
                } catch (IOException e) {
                        Logger logger = LoggerFactory.getLogger(getClass());
                        logger.error("Error while checking header", e);
@@ -44,6 +51,13 @@
                }
        }
 
+       private InputStream getInputStream(URL url) throws IOException {
+               URLConnection connection = url.openConnection();
+               connection.setConnectTimeout(CONNECTION_TIMEOUT);
+               connection.connect();
+               return connection.getInputStream();
+       }
+
        private boolean checkHeader(InputStream stream) throws IOException {
                BufferedReader reader = new BufferedReader(new 
InputStreamReader(stream));
                int linesToCheck = DEFAULT_LINES_TO_CHECK;

Modified: 
core3/psi-mi-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/psi-mi-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
    2010-09-27 20:07:31 UTC (rev 22072)
+++ 
core3/psi-mi-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
    2010-09-27 20:26:56 UTC (rev 22073)
@@ -22,7 +22,7 @@
        <context:annotation-config />
 
        <bean id="psiMiFilter" 
class="org.cytoscape.psi_mi.internal.plugin.PsiMiCyFileFilter">
-               <constructor-arg value="PSI-MI" />
+               <constructor-arg value="PSI-MI files (*.xml)" />
        </bean>
 
        <bean id="psiMi1Filter" 
class="org.cytoscape.psi_mi.internal.plugin.PsiMiCyFileFilter">

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to