OSDN Git Service

counter-plan for OutOfMemoryError, expand max heap size and show error message when...
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Tue, 11 Sep 2007 01:33:56 +0000 (01:33 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Tue, 11 Sep 2007 01:33:56 +0000 (01:33 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@193 acee48c3-7b26-0410-bdac-b3d0e5314bbc

src/bin/stigmata.nsi
src/main/java/jp/naist/se/stigmata/ui/swing/ControlPane.java
src/main/java/jp/naist/se/stigmata/ui/swing/StigmataFrame.java
src/main/resources/resources/messages.properties
src/main/resources/resources/messages_ja.source

index 864940a..4487032 100755 (executable)
@@ -69,7 +69,7 @@ Section "running-stigmata"
   File "..\..\target\xmlcli-1.2.1.jar"\r
   File "..\..\target\asm-all-2.2.3.jar"\r
   File "..\..\target\commons-logging-1.0.3.jar"\r
-  StrCpy $R0 '$R0 -Dexecution.directory="$EXEDIR" -jar "${JARFILE}" $R1'\r
+  StrCpy $R0 '$R0 -Xmx256M -Dexecution.directory="$EXEDIR" -jar "${JARFILE}" $R1'\r
 \r
   !ifdef SPLASH_IMAGE\r
     SetOutPath $TEMP\r
index 2a8ed55..ad8a405 100644 (file)
@@ -276,8 +276,9 @@ public class ControlPane extends JPanel{
         BirthmarkEnvironment environment = generateEnvironment();\r
         String[] fileX = targetX.getValues();\r
         String[] fileY = targetY.getValues();\r
-        stigmata.compareSpecifiedPair(birthmarks.getSelectedServiceTypes(), fileX,\r
-                fileY, environment);\r
+        stigmata.compareSpecifiedPair(\r
+            birthmarks.getSelectedServiceTypes(), fileX, fileY, environment\r
+        );\r
     }\r
 \r
     private void compareGuessedPair(){\r
@@ -285,8 +286,9 @@ public class ControlPane extends JPanel{
         String[] fileX = targetX.getValues();\r
         String[] fileY = targetY.getValues();\r
 \r
-        stigmata.compareGuessedPair(birthmarks.getSelectedServiceTypes(), fileX,\r
-                fileY, environment);\r
+        stigmata.compareGuessedPair(\r
+            birthmarks.getSelectedServiceTypes(), fileX, fileY, environment\r
+        );\r
     }\r
 \r
     private BirthmarkEnvironment generateEnvironment(){\r
index 37675b0..e53d636 100644 (file)
@@ -191,7 +191,7 @@ public class StigmataFrame extends JFrame{
                 }\r
             );\r
             tabPane.setSelectedIndex(tabPane.getTabCount() - 1);\r
-        } catch(Exception e){\r
+        } catch(Throwable e){\r
             showExceptionMessage(e);\r
         }\r
     }\r
@@ -216,7 +216,7 @@ public class StigmataFrame extends JFrame{
                 }\r
             );\r
             tabPane.setSelectedIndex(tabPane.getTabCount() - 1);\r
-        } catch(Exception e){\r
+        } catch(Throwable e){\r
             showExceptionMessage(e);\r
         }\r
     }\r
@@ -239,7 +239,7 @@ public class StigmataFrame extends JFrame{
                 }\r
             );\r
             tabPane.setSelectedIndex(tabPane.getTabCount() - 1);\r
-        }catch(Exception e){\r
+        }catch(Throwable e){\r
             showExceptionMessage(e);\r
         }\r
     }\r
@@ -320,7 +320,7 @@ public class StigmataFrame extends JFrame{
         try{\r
             BirthmarkSet[] holders = stigmata.extract(birthmarks, targets, environment);\r
             showExtractionResult(holders, environment);\r
-        }catch(Exception e){\r
+        }catch(Throwable e){\r
             showExceptionMessage(e);\r
         }\r
     }\r
@@ -519,29 +519,44 @@ public class StigmataFrame extends JFrame{
         control.setExpertMode(status);\r
     }\r
 \r
-    private void showExceptionMessage(Exception e){\r
+    private void showExceptionMessage(Throwable e){\r
         if(e instanceof BirthmarkElementClassNotFoundException){\r
             showClassNotFoundMessage((BirthmarkElementClassNotFoundException)e);\r
-            return;\r
         }\r
-        JTextArea area = new JTextArea(20, 60);\r
-        StringWriter writer = new StringWriter();\r
-        PrintWriter out = new PrintWriter(writer);\r
-        e.printStackTrace(out);\r
-        if(e instanceof BirthmarkExtractionFailedException){\r
-            out.println("Causes:");\r
-            for(Throwable t: ((BirthmarkExtractionFailedException)e).getCauses()){\r
-                t.printStackTrace(out);\r
+        else if(e instanceof OutOfMemoryError){\r
+            showOutOfMemoryError();\r
+        }\r
+        else{\r
+            JTextArea area = new JTextArea(20, 60);\r
+            StringWriter writer = new StringWriter();\r
+            PrintWriter out = new PrintWriter(writer);\r
+            e.printStackTrace(out);\r
+            if(e instanceof BirthmarkExtractionFailedException){\r
+                out.println("Causes:");\r
+                for(Throwable t: ((BirthmarkExtractionFailedException)e).getCauses()){\r
+                    t.printStackTrace(out);\r
+                }\r
             }\r
+            out.close();\r
+            area.setText(writer.toString());\r
+            JPanel panel = new JPanel(new BorderLayout());\r
+            panel.add(new JLabel("<html><body><p>" + Messages.getString("error.message.contactus") + "</p></body></html>"), BorderLayout.NORTH);\r
+            panel.add(new JScrollPane(area), BorderLayout.CENTER);\r
+\r
+            JOptionPane.showMessageDialog(\r
+                this, panel, Messages.getString("error.dialog.title"),\r
+                JOptionPane.WARNING_MESSAGE\r
+            );\r
         }\r
-        out.close();\r
-        area.setText(writer.toString());\r
-        JPanel panel = new JPanel(new BorderLayout());\r
-        panel.add(new JLabel("<html><body><p>" + Messages.getString("error.message.contactus") + "</p></body></html>"), BorderLayout.NORTH);\r
-        panel.add(new JScrollPane(area), BorderLayout.CENTER);\r
+    }\r
 \r
+    private void showOutOfMemoryError(){\r
+        StringBuffer sb = new StringBuffer();\r
+        sb.append("<html><body><p>");\r
+        sb.append(Messages.getString("error.message.outofmemory"));\r
+        sb.append("</p></body></html>");\r
         JOptionPane.showMessageDialog(\r
-            this, panel, Messages.getString("error.dialog.title"),\r
+            this, new String(sb), Messages.getString("error.dialog.title"),\r
             JOptionPane.WARNING_MESSAGE\r
         );\r
     }\r
index 06c59a2..e382cb9 100755 (executable)
@@ -485,6 +485,7 @@ target.ONE_OF_TARGET=target 1 or target 2
 \r
 warning.dialog.title=Warnings\r
 error.dialog.title=Error\r
+error.message.outofmemory=Out of memory.  Java heap size is too few to extract/compare birthmarks.  You can specifiy ``-Xmx'' option in java command for expand Java heap size or please decrease your target files.\r
 error.message.classpath=Failed proccessed operation because following classes did not found.<br>Please examine your classpath settings at ``Classpath'' tab in ``Control'' tab.\r
 error.message.contactus=Failed proccessed operation because following exception.<br>Please report to developer with following error messages.\r
 error.empty.threshold=Threshold is empty\r
index bc7ae6b..569a798 100755 (executable)
@@ -376,6 +376,7 @@ target.BOTH_TARGET=
 target.ONE_OF_TARGET=\82Ç\82¿\82ç\82©\r
 \r
 error.dialog.title=\83G\83\89\81[\r
+error.message.outofmemory=\83\81\83\82\83\8a\95s\91«\82Å\82·\81D\83o\81[\83X\83}\81[\83N\82Ì\92\8a\8fo\81E\94ä\8ar\82É\8f\\95ª\82ÈJava\83q\81[\83v\83T\83C\83Y\82ª\82 \82è\82Ü\82¹\82ñ\81D\88È\89º\82Ì\91Î\89\9e\82ð\91I\91ð\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81D<ul><li>Java\83R\83}\83\93\83h\82É -Xmx \83I\83v\83V\83\87\83\93\82ð\8ew\92è\82µ\81C\8dÅ\91å\83q\81[\83v\83T\83C\83Y\82ð\91\9d\82â\82·</li><li>\91I\91ð\82µ\82½\94ä\8ar\81E\92\8a\8fo\91Î\8fÛ\82Ì\83t\83@\83C\83\8b\82ð\8c¸\82ç\82·</li></ul>\r
 error.message.classpath=\88È\89º\82Ì\83N\83\89\83X\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\82½\82ß\81C\8ew\92è\82³\82ê\82½\8f\88\97\9d\82ð\8a®\97¹\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81D<br>\81u\83R\83\93\83g\83\8d\81[\83\8b\81v\83^\83u\82Ì\83N\83\89\83X\83p\83X\90Ý\92è\82ð\8c©\92¼\82µ\82Ä\8dÄ\8eÀ\8ds\82µ\82Ä\82­\82¾\82³\82¢\81D\r
 error.message.contactus=\88È\89º\82Ì\97á\8aO\82ª\94­\90\82µ\82½\82½\82ß\81C\8ew\92è\82³\82ê\82½\8f\88\97\9d\82ð\8a®\97¹\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81D<br>\83G\83\89\81[\83\81\83b\83Z\81[\83W\82ð\93Y\95t\82µ\82Ä\8aJ\94­\8eÒ\82Ü\82Å\83\8c\83|\81[\83g\82ð\82¨\8aè\82¢\82µ\82Ü\82·\81D\r
 error.empty.threshold=è\87\92l\82ª\93ü\97Í\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81D\r