exception fixes
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Fri, 17 Sep 2010 14:12:28 +0000 (18:12 +0400)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Mon, 20 Sep 2010 15:17:38 +0000 (19:17 +0400)
platform/platform-impl/src/com/intellij/execution/process/RunnerMediator.java
xml/impl/src/com/intellij/xml/actions/xmlbeans/GenerateInstanceDocumentFromSchemaDialog.java

index d88e4f1d27ead28d5b0c0bf0e42692177028ba1f..cd695c1f9a80bc97e9bca0fb1b4b00b5f4098898 100644 (file)
@@ -185,7 +185,7 @@ public class RunnerMediator {
       }
     }
     catch (Exception e) {
-      //TODO: make proper exception handling
+      C_LIB = null;
     }
   }
 
@@ -207,14 +207,28 @@ public class RunnerMediator {
 
     @Override
     protected void destroyProcessImpl() {
-      if (isWindows()) {
-        sendCtrlBreakThroughStream();
+      if (!doCustomDestroy()) {
+        super.destroyProcessImpl();
       }
-      else if (canSendSignals()) {
-        sendSigInt(myProcessUid);
+
+    }
+
+    private boolean doCustomDestroy() {
+      try {
+        if (isWindows()) {
+          sendCtrlBreakThroughStream();
+          return true;
+        }
+        else if (canSendSignals()) {
+          sendSigInt(myProcessUid);
+          return true;
+        }
+        else {
+          return false;
+        }
       }
-      else {
-        super.destroyProcessImpl();
+      catch (Exception e) {
+        return false;
       }
     }
 
index 44ee2ec0485c5384774e66412793441fdeadf556..7998fb960ac195d9da96de0a97181534c68a63f9 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.openapi.vfs.VfsUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiFile;
 import com.intellij.psi.PsiManager;
+import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider;
 import com.intellij.psi.xml.XmlFile;
 import com.intellij.psi.xml.XmlTag;
 import com.intellij.util.ArrayUtil;
@@ -65,7 +66,8 @@ public class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
     super(project, true);
     myProject = project;
 
-    UIUtils.configureBrowseButton(project, generateFromUrl, new String[] {"xsd"}, XmlBundle.message("select.xsd.schema.dialog.title"), false);
+    UIUtils
+      .configureBrowseButton(project, generateFromUrl, new String[]{"xsd"}, XmlBundle.message("select.xsd.schema.dialog.title"), false);
 
     doInitFor(rootElementChooserText, rootElementChooser);
     doInitFor(generateFromUrlText, generateFromUrl.getTextField());
@@ -77,7 +79,7 @@ public class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
 
     init();
 
-    outputFileName.setText(file.getName()+ ".xml");
+    outputFileName.setText(file.getName() + ".xml");
   }
 
   public void doInitFor(JLabel textComponent, JComponent component) {
@@ -97,8 +99,9 @@ public class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
           validateData();
         }
       });
-    } else if (component instanceof JComboBox) {
-      JComboBox jComboBox = ((JComboBox) component);
+    }
+    else if (component instanceof JComboBox) {
+      JComboBox jComboBox = ((JComboBox)component);
 
       jComboBox.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -140,7 +143,7 @@ public class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
     status.setForeground(Color.RED);
   }
 
-  public void configureComboBox(JComboBox combo, List<String> lastValues) {  // without -editor.selectAll- no focus
+  public static void configureComboBox(JComboBox combo, List<String> lastValues) {  // without -editor.selectAll- no focus
     combo.setModel(new DefaultComboBoxModel(ArrayUtil.toStringArray(lastValues)));
   }
 
@@ -171,19 +174,39 @@ public class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
 
     if (hasPrevious) {
       rootElementChooser.setSelectedItem(selectedItem);
-    } else {
-      rootElementChooser.setSelectedIndex(myRootValues.size() > 0 ? 0:-1);
+    }
+    else {
+      rootElementChooser.setSelectedIndex(myRootValues.size() > 0 ? 0 : -1);
     }
     previousUri = uri;
   }
 
-  private XmlTag getRootTag(PsiFile psifile) {
-    return ((XmlFile) psifile).getDocument().getRootTag();
+  @Nullable
+  private static XmlTag getRootTag(PsiFile psifile) {
+    XmlFile xmlFile = null;
+    if (psifile instanceof XmlFile) {
+      xmlFile = (XmlFile)psifile;
+    }
+    else if (psifile.getViewProvider() instanceof TemplateLanguageFileViewProvider) {
+      TemplateLanguageFileViewProvider viewProvider = (TemplateLanguageFileViewProvider)psifile.getViewProvider();
+      if (viewProvider.getPsi(viewProvider.getTemplateDataLanguage()) instanceof XmlFile) {
+        xmlFile = (XmlFile)viewProvider.getPsi(viewProvider.getTemplateDataLanguage());
+      }
+    }
+
+    if (xmlFile != null) {
+      return xmlFile.getDocument().getRootTag();
+    }
+    else {
+      return null;
+    }
   }
 
+  @Nullable
   private PsiFile findFile(String uri) {
-    final VirtualFile file = uri != null ? VfsUtil.findRelativeFile(ExternalResourceManager.getInstance().getResourceLocation(uri), null):null;
-    return file != null ? PsiManager.getInstance(myProject).findFile(file):null;
+    final VirtualFile file =
+      uri != null ? VfsUtil.findRelativeFile(ExternalResourceManager.getInstance().getResourceLocation(uri), null) : null;
+    return file != null ? PsiManager.getInstance(myProject).findFile(file) : null;
   }
 
   public String getOutputFileName() {
@@ -222,7 +245,7 @@ public class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
 
   }
 
-  protected boolean isAcceptableFile(VirtualFile virtualFile) {
+  protected static boolean isAcceptableFile(VirtualFile virtualFile) {
     return GenerateInstanceDocumentFromSchemaAction.isAcceptableFileForGenerateSchemaFromInstanceDocument(virtualFile);
   }