Hi,

I can't figure out how to properly set up rules so that this test does not fail:

   public void testTitle() throws IOException, SAXException {
       String xml = "<menu>\n" +
               "   <item title=\"Copy\">\n" +
               "      <action
class=\"javax.swing.text.DefaultEditorKit$CopyAction\"/>\n" +
               "   </item>\n" +
               "</menu>";

       Digester digester = new Digester();
       digester.addObjectCreate("*/menu", "javax.swing.JMenu", "class");
       digester.addObjectCreate("*/menu/item",
"javax.swing.JMenuItem", "class");
       digester.addObjectCreate("*/menu/item/action", null, "class");
       digester.addSetNext("*/menu/item/action", "setAction");
       digester.addSetProperties("*/menu/item", "title", "text");
       digester.addSetNext("*/menu/item", "add");

       JMenu menu = (JMenu) digester.parse(new StringReader(xml));

       assertEquals("Copy", ((JMenuItem)menu.getMenuComponent(0)).getText());
   }

Result:
  junit.framework.ComparisonFailure:
  Expected :Copy
  Actual  :copy-to-clipboard

The problem is that the rules above result in roughly the following
sequence of calls:

  JMenu menu = new JMenu()
  JMenuItem item = new JMenuItem();
  item.setTitle("Copy");
  Action action = new DefaultEditorKit.CopyAction();
  item.setAction(action);

and setting action on a menu item will override previously set text.
What I need to do is to set the item's text AFTER setting the action:

  JMenu menu = new JMenu()
  JMenuItem item = new JMenuItem();
  Action action = new DefaultEditorKit.CopyAction();
  item.setAction(action);
  item.setTitle("Copy");

any recommendations on how to change digester rules to accomplish that?


Thanks
Dmitry

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to