r243 - in trunk: msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2 msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2 msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer msm
Author: dlanglais Date: 2010-03-15 03:37:16 +0100 (Mon, 15 Mar 2010) New Revision: 243 Log: Test des fonctions de chargement / d?\195?\169chargement des plugins. -> V?\195?\169rifie que les MenuItem sont correctement ajout?\195?\169s au menu... -> mise ?\195?\160 null des MenuItem lors du d?\195?\169chargement des plugins. Added: trunk/msm-pluginmanager/src/test/java/ trunk/msm-pluginmanager/src/test/java/org/ trunk/msm-pluginmanager/src/test/java/org/nuiton/ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java Removed: trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/fromto/ trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/tofrom/ trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/fromto/ trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/tofrom/ Modified: trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx Modified: trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java =================================================================== --- trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-bighashmap/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMap.java 2010-03-15 02:37:16 UTC (rev 243) @@ -225,6 +225,7 @@ JMenu menuConnect = MainUI.getInstance().getMenuConnect(); if(menuItemConnect != null) { menuConnect.remove(menuItemConnect); + menuItemConnect = null; } if (menuConnect.getComponentCount() == 0) { menuConnect.setEnabled(false); Modified: trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java =================================================================== --- trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-bighashmap/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmap/BigHashMapTest.java 2010-03-15 02:37:16 UTC (rev 243) @@ -5,13 +5,17 @@ package org.nuiton.mapstoragemanager.plugins.bighashmap; +import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.mapstoragemanager.plugins.BigTable; import org.nuiton.mapstoragemanager.plugins.Plugin; +import org.nuiton.mapstoragemanager.ui.MainUI; /** * @@ -195,4 +199,89 @@ bigHashMapV2.put(tableName1, columnName1, key3, string3); assertEquals(keys, bigHashMapV2.getKeys(tableName1)); } + + /** + * Test load and unload plugin. + */ + public void testLoadUnload() { + Plugin bigHashMap = new BigHashMap(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuConnect = mainUI.getMenuConnect(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemConnect"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuConnect.getItemCount(); + assertNull(menuItemPlugin); + + bigHashMap.load(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemConnect"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuConnect.getItemCount(); + JMenuItem lastMenuItem = menuConnect.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + bigHashMap.unload(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemConnect"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuConnect.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } } Modified: trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java =================================================================== --- trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-bighashmapV2/src/main/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2.java 2010-03-15 02:37:16 UTC (rev 243) @@ -228,6 +228,7 @@ JMenu menuConnect = MainUI.getInstance().getMenuConnect(); if(menuItemConnect != null) { menuConnect.remove(menuItemConnect); + menuItemConnect = null; } if (menuConnect.getComponentCount() == 0) { menuConnect.setEnabled(false); Modified: trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java =================================================================== --- trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-bighashmapV2/src/test/java/org/nuiton/mapstoragemanager/plugins/bighashmapv2/BigHashMapV2Test.java 2010-03-15 02:37:16 UTC (rev 243) @@ -5,13 +5,17 @@ package org.nuiton.mapstoragemanager.plugins.bighashmapv2; +import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.mapstoragemanager.plugins.BigTable; import org.nuiton.mapstoragemanager.plugins.Plugin; +import org.nuiton.mapstoragemanager.ui.MainUI; /** * @@ -195,4 +199,89 @@ bigHashMapV2.put(tableName1, columnName1, key3, string3); assertEquals(keys, bigHashMapV2.getKeys(tableName1)); } + + /** + * Test load and unload plugin. + */ + public void testLoadUnload() { + Plugin bigHashMap = new BigHashMapV2(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuConnect = mainUI.getMenuConnect(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemConnect"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuConnect.getItemCount(); + assertNull(menuItemPlugin); + + bigHashMap.load(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemConnect"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuConnect.getItemCount(); + JMenuItem lastMenuItem = menuConnect.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + bigHashMap.unload(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemConnect"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuConnect.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } } Modified: trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java =================================================================== --- trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXML.java 2010-03-15 02:37:16 UTC (rev 243) @@ -263,6 +263,7 @@ JMenu menuExport = MainUI.getInstance().getMenuExport(); if(menuItemExport != null) { menuExport.remove(menuItemExport); + menuItemExport = null; } if (menuExport.getComponentCount() == 0) { menuExport.setEnabled(false); Modified: trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java =================================================================== --- trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXML/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXML.java 2010-03-15 02:37:16 UTC (rev 243) @@ -235,6 +235,7 @@ JMenu menuImport = MainUI.getInstance().getMenuImport(); if(menuItemImport != null) { menuImport.remove(menuItemImport); + menuItemImport = null; } if (menuImport.getComponentCount() == 0) { menuImport.setEnabled(false); Modified: trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java =================================================================== --- trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLTest.java 2010-03-15 02:37:16 UTC (rev 243) @@ -9,6 +9,8 @@ import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.filechooser.FileNameExtensionFilter; import junit.framework.TestCase; import org.apache.commons.logging.Log; @@ -22,6 +24,7 @@ import org.nuiton.mapstoragemanager.plugins.Plugin; import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2; import org.nuiton.mapstoragemanager.plugins.getFile; +import org.nuiton.mapstoragemanager.ui.MainUI; /** * @@ -304,4 +307,89 @@ } assertEquals(acceptedExtensionExpected, acceptedExtensionActual); } + + /** + * Test load and unload plugin. + */ + public void testLoadUnload() { + Plugin bigHashMap = new ToXML(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuExport = mainUI.getMenuExport(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemExport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuExport.getItemCount(); + assertNull(menuItemPlugin); + + bigHashMap.load(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemExport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuExport.getItemCount(); + JMenuItem lastMenuItem = menuExport.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + bigHashMap.unload(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemExport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuExport.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } } Modified: trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java =================================================================== --- trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXML/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLTest.java 2010-03-15 02:37:16 UTC (rev 243) @@ -5,11 +5,14 @@ package org.nuiton.mapstoragemanager.plugins.importer; import java.io.File; +import java.lang.reflect.Field; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.filechooser.FileNameExtensionFilter; import junit.framework.Assert; import junit.framework.TestCase; @@ -20,6 +23,7 @@ import org.nuiton.mapstoragemanager.plugins.Plugin; import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2; import org.nuiton.mapstoragemanager.plugins.getFile; +import org.nuiton.mapstoragemanager.ui.MainUI; /** * @@ -307,50 +311,87 @@ } /** - * test Load/UnLoad + * Test load and unload plugin. */ -// public void testLoadUnLoad() { -// JMenu menuImport; -// Set<Component> components; -// JMenuItem menuItem = null; -// -// Importer fromXML = new FromXML(); -// try { -// Field fMenuItem -// = fromXML.getClass().getDeclaredField("menuItemImport"); -// fMenuItem.setAccessible(true); -// menuItem = (JMenuItem) fMenuItem.get(fromXML); -// } catch (IllegalArgumentException ex) { -// LOG.error(ex, ex); -// } catch (IllegalAccessException ex) { -// LOG.error(ex, ex); -// } catch (NoSuchFieldException ex) { -// LOG.error(ex, ex); -// } catch (SecurityException ex) { -// LOG.error(ex, ex); -// } -// -// fromXML.load(); -// -// menuImport = MainUI.getInstance().getMenuImportBis(); -// System.out.println(menuImport.e); -// components = new HashSet<Component>(); -// for (int i = 0 ; i < menuImport.getItemCount() ; i++) { -// System.out.println(menuImport.getItem(i)); -// components.add(menuImport.getItem(i)); -// } -// -// assertEquals(true, components.contains(menuItem)); -// -// fromXML.unload(); -// -// menuImport = MainUI.getInstance().getMenuImportBis(); -// components = new HashSet<Component>(); -// for (int i = 0 ; i < menuImport.getItemCount() ; i++) { -// components.add(menuImport.getItem(i)); -// } -// -// assertEquals(false, components.contains(menuItem)); -// -// } + public void testLoadUnload() { + Plugin bigHashMap = new FromXML(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuImport = mainUI.getMenuImport(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemImport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuImport.getItemCount(); + assertNull(menuItemPlugin); + + bigHashMap.load(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemImport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuImport.getItemCount(); + JMenuItem lastMenuItem = menuImport.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + bigHashMap.unload(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemImport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuImport.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } } Modified: trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java =================================================================== --- trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3.java 2010-03-15 02:37:16 UTC (rev 243) @@ -233,6 +233,7 @@ JMenu menuExport = MainUI.getInstance().getMenuExport(); if(menuItemExport != null) { menuExport.remove(menuItemExport); + menuItemExport = null; } if (menuExport.getComponentCount() == 0) { menuExport.setEnabled(false); Modified: trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java =================================================================== --- trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXPP3/src/main/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3.java 2010-03-15 02:37:16 UTC (rev 243) @@ -295,6 +295,7 @@ JMenu menuImport = MainUI.getInstance().getMenuImport(); if(menuItemImport != null) { menuImport.remove(menuItemImport); + menuItemImport = null; } if (menuImport.getComponentCount() == 0) { menuImport.setEnabled(false); Modified: trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java =================================================================== --- trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/exporter/ToXMLXPP3Test.java 2010-03-15 02:37:16 UTC (rev 243) @@ -6,8 +6,11 @@ package org.nuiton.mapstoragemanager.plugins.exporter; import java.io.File; +import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.filechooser.FileNameExtensionFilter; import junit.framework.TestCase; import org.apache.commons.logging.Log; @@ -19,6 +22,7 @@ import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2; import org.nuiton.mapstoragemanager.plugins.getFile; import org.nuiton.mapstoragemanager.plugins.importer.FromXMLXPP3; +import org.nuiton.mapstoragemanager.ui.MainUI; /** * @@ -272,4 +276,89 @@ exporter.exportTo(bigTable,exportTest); exportTest.delete(); } + + /** + * Test load and unload plugin. + */ + public void testLoadUnload() { + Plugin bigHashMap = new ToXMLXPP3(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuExport = mainUI.getMenuExport(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemExport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuExport.getItemCount(); + assertNull(menuItemPlugin); + + bigHashMap.load(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemExport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuExport.getItemCount(); + JMenuItem lastMenuItem = menuExport.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + bigHashMap.unload(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemExport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuExport.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } } Modified: trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java =================================================================== --- trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-fromtoXPP3/src/test/java/org/nuiton/mapstoragemanager/plugins/importer/FromXMLXPP3Test.java 2010-03-15 02:37:16 UTC (rev 243) @@ -5,11 +5,14 @@ package org.nuiton.mapstoragemanager.plugins.importer; import java.io.File; +import java.lang.reflect.Field; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.filechooser.FileNameExtensionFilter; import junit.framework.Assert; import junit.framework.TestCase; @@ -20,6 +23,7 @@ import org.nuiton.mapstoragemanager.plugins.Plugin; import org.nuiton.mapstoragemanager.plugins.bighashmapv2.BigHashMapV2; import org.nuiton.mapstoragemanager.plugins.getFile; +import org.nuiton.mapstoragemanager.ui.MainUI; /** * @@ -305,4 +309,89 @@ } assertEquals(acceptedExtensionExpected, acceptedExtensionActual); } + + /** + * Test load and unload plugin. + */ + public void testLoadUnload() { + Plugin bigHashMap = new FromXMLXPP3(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuImport = mainUI.getMenuImport(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemImport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuImport.getItemCount(); + assertNull(menuItemPlugin); + + bigHashMap.load(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemImport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuImport.getItemCount(); + JMenuItem lastMenuItem = menuImport.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + bigHashMap.unload(); + + try { + fMenuItemPlugin = + bigHashMap.getClass().getDeclaredField("menuItemImport"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(bigHashMap); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuImport.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } } Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx =================================================================== --- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-14 21:06:55 UTC (rev 242) +++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-15 02:37:16 UTC (rev 243) @@ -181,6 +181,7 @@ JMenu menuPluginMSM = MainUI.getInstance().getMenuPlugin(); if(menuItemPlugin != null) { menuPluginMSM.remove(menuItemPlugin); + menuItemPlugin = null; } if (menuPluginMSM.getComponentCount() == 0) { menuPluginMSM.setEnabled(false); Added: trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java =================================================================== --- trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java (rev 0) +++ trunk/msm-pluginmanager/src/test/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManagerTest.java 2010-03-15 02:37:16 UTC (rev 243) @@ -0,0 +1,121 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.mapstoragemanager.plugins.pluginmanager; + +import java.lang.reflect.Field; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import junit.framework.TestCase; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.mapstoragemanager.plugins.Plugin; +import org.nuiton.mapstoragemanager.ui.MainUI; + +/** + * + * @author Dorian Langlais + */ +public class PluginManagerTest extends TestCase { + + /** + * Logger. + */ + private static final Log LOG = LogFactory.getLog(PluginManagerTest.class); + + public void testGetPluginName() { + Plugin pluginManager = new PluginManager(); + String expectedPluginName = pluginManager.getClass().getSimpleName(); + String actualPluginName = pluginManager.getPluginName(); + LOG.info("pluginName : {expected,'" + expectedPluginName + + "'} - {actual,'" + actualPluginName + "'}"); + assertEquals(expectedPluginName, actualPluginName); + } + + /** + * Test load and unload plugin. + */ + public void testLoadUnload() { + Plugin pluginManager = new PluginManager(); + MainUI mainUI = MainUI.getInstance(); + JMenu menuPlugin = mainUI.getMenuPlugin(); + + Field fMenuItemPlugin = null; + JMenuItem menuItemPlugin = null; + try { + fMenuItemPlugin = + pluginManager.getClass().getDeclaredField("menuItemPlugin"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(pluginManager); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + + /** + * Before load plugin we get the number of MenuItem of the PluginMenu, + * We control that menuItemPlugin is null. + */ + int nbMenuItemBeforeLoad = menuPlugin.getItemCount(); + assertNull(menuItemPlugin); + + pluginManager.load(); + + try { + fMenuItemPlugin = + pluginManager.getClass().getDeclaredField("menuItemPlugin"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(pluginManager); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After load the plugin, we verify that a new MenuItem is added in the + * Plugin Menu, and that it is the MenuItem of the PluginManager. + */ + int nbMenuItemAfterLoad = menuPlugin.getItemCount(); + JMenuItem lastMenuItem = menuPlugin.getItem(nbMenuItemAfterLoad - 1); + + assertNotNull(menuItemPlugin); + assertEquals(nbMenuItemBeforeLoad + 1, nbMenuItemAfterLoad); + assertEquals(menuItemPlugin, lastMenuItem); + + pluginManager.unload(); + + try { + fMenuItemPlugin = + pluginManager.getClass().getDeclaredField("menuItemPlugin"); + fMenuItemPlugin.setAccessible(true); + menuItemPlugin = (JMenuItem) fMenuItemPlugin.get(pluginManager); + } catch (IllegalArgumentException ex) { + LOG.error(ex, ex); + } catch (IllegalAccessException ex) { + LOG.error(ex, ex); + } catch (NoSuchFieldException ex) { + LOG.error(ex, ex); + } catch (SecurityException ex) { + LOG.error(ex, ex); + } + /** + * After unload the plugin, we verify that his MenuItem is deleted in + * the Plugin Menu. + */ + int nbMenuItemAfterUnload = menuPlugin.getItemCount(); + + assertNull(menuItemPlugin); + assertEquals(nbMenuItemAfterLoad - 1, nbMenuItemAfterUnload); + } +}
participants (1)
-
dlanglais@users.nuiton.org