svnno****@sourc*****
svnno****@sourc*****
2008年 11月 9日 (日) 09:17:55 JST
Revision: 2114 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=jiemamy&view=rev&rev=2114 Author: shin1 Date: 2008-11-09 09:17:55 +0900 (Sun, 09 Nov 2008) Log Message: ----------- コミット漏れ Modified Paths: -------------- artemis/trunk/org.jiemamy.event/src/test/java/org/jiemamy/core/model/RootModelTest.java -------------- next part -------------- Modified: artemis/trunk/org.jiemamy.event/src/test/java/org/jiemamy/core/model/RootModelTest.java =================================================================== --- artemis/trunk/org.jiemamy.event/src/test/java/org/jiemamy/core/model/RootModelTest.java 2008-11-09 00:17:13 UTC (rev 2113) +++ artemis/trunk/org.jiemamy.event/src/test/java/org/jiemamy/core/model/RootModelTest.java 2008-11-09 00:17:55 UTC (rev 2114) @@ -31,6 +31,7 @@ import org.jiemamy.core.S2FactoryStrategy; import org.jiemamy.creator.JiemamyModelFactory; import org.jiemamy.event.model.RootModelChangeSupportImpl; +import org.jiemamy.event.model.node.TableModelChangeSupportImpl; import org.jiemamy.spec.event.ModelChangeEvent; import org.jiemamy.spec.event.ModelChangeListener; import org.jiemamy.spec.exception.TooManyElementsException; @@ -89,24 +90,35 @@ // rootModelの監視を開始する。 rootModel.getAdapter(RootModelChangeSupportImpl.class).addModelChangeListener(listener); + // tableModelの監視を開始する。 + TableModelChangeListenerImpl tableModelChangeListener = new TableModelChangeListenerImpl(); + tableModel.getAdapter(TableModelChangeSupportImpl.class).addModelChangeListener(tableModelChangeListener); // 通常のRootModelが直接保持するCollection<TableModel>が保持する要素のひとつの属性を操作する。 System.out.println("-------"); + tableModelChangeListener.events.clear(); listener.events.clear(); tableModel.setName("T_USER01a"); - assertEquals(1, listener.events.size()); + assertEquals(1, listener.events.size()); // RootModelのListener + assertEquals(1, tableModelChangeListener.events.size()); // TableModelのListener // RootModelが保持するCollection<TableModel>が保持する要素の一つが保持する // Collection<ColumnModel>を操作する。 System.out.println("-------tableModel#columnsにcolumnをひとつ追加"); + tableModelChangeListener.events.clear(); listener.events.clear(); tableModel.getColumns().add(columnModel); + // TableModelのListenerにもCHANGEDしか来ない。 + // 以前の仕組みではBefore/Afterが飛んできていたが今はBeforeは殺している。 + assertEquals(1, tableModelChangeListener.events.size()); assertEquals("tableModel#columnsにcolumnをひとつ追加", 1, listener.events.size()); // バブリングの確認 // RootModelが保持するCollection<TableModel>が保持する要素の一つが保持する // Collection<ColumnModel>が保持する要素の属性を操作する。 + tableModelChangeListener.events.clear(); listener.events.clear(); columnModel.setFreeString("freeString"); + assertEquals(1, tableModelChangeListener.events.size()); // TableModelのListenerにはColumnに対するCHANGED assertEquals(1, listener.events.size()); // バブリングの確認 } @@ -154,4 +166,26 @@ System.out.print("RootModelChangeListenerImpl:" + e.toString()); } } + + private class TableModelChangeListenerImpl implements ModelChangeListener { + + /** Eventの履歴 */ + public List<ModelChangeEvent> events = new ArrayList<ModelChangeEvent>(); + + + /** + * Eventの履歴を空にする。 + */ + public void clear() { + events.clear(); + } + + /** + * {@inheritDoc} + */ + public void modelChanged(ModelChangeEvent e) { + events.add(e); + System.out.print("RootModelChangeListenerImpl:" + e.toString()); + } + } }