1 /* 2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @bug 4631471 6972468 27 * @summary Tests DefaultTreeModel encoding 28 * @run main/othervm -Djava.security.manager=allow Test4631471 29 * @author Sergey Malenkov, Mark Davidson 30 */ 31 32 import javax.swing.JTree; 33 import javax.swing.tree.DefaultMutableTreeNode; 34 import javax.swing.tree.DefaultTreeModel; 35 import javax.swing.tree.TreeModel; 36 import javax.swing.tree.TreeNode; 37 38 public abstract class Test4631471 extends AbstractTest { main(String[] args)39 public static void main(String[] args) throws Exception { 40 main(); 41 System.setSecurityManager(new SecurityManager()); 42 main(); 43 } 44 main()45 private static void main() throws Exception { 46 // the DefaultMutableTreeNode will archive correctly 47 new Test4631471() { 48 protected Object getObject() { 49 return getRoot(); 50 } 51 }.test(false); 52 53 // the DefaultTreeModel will also archive correctly 54 new Test4631471() { 55 protected Object getObject() { 56 return getModel(); 57 } 58 }.test(false); 59 60 // create a new model from the root node 61 // this simulates the the MetaData ctor: 62 // registerConstructor("javax.swing.tree.DefaultTreeModel", new String[]{"root"}); 63 new Test4631471() { 64 protected Object getObject() { 65 return new DefaultTreeModel((TreeNode) getModel().getRoot()); 66 } 67 }.test(false); 68 69 // the JTree will archive correctly too 70 new Test4631471() { 71 protected Object getObject() { 72 return getTree(); 73 } 74 }.test(false); 75 } 76 validate(Object before, Object after)77 protected final void validate(Object before, Object after) { 78 // do not any validation 79 } 80 getRoot()81 public static TreeNode getRoot() { 82 DefaultMutableTreeNode node = new DefaultMutableTreeNode("root"); 83 DefaultMutableTreeNode first = new DefaultMutableTreeNode("first"); 84 DefaultMutableTreeNode second = new DefaultMutableTreeNode("second"); 85 DefaultMutableTreeNode third = new DefaultMutableTreeNode("third"); 86 87 first.add(new DefaultMutableTreeNode("1.1")); 88 first.add(new DefaultMutableTreeNode("1.2")); 89 first.add(new DefaultMutableTreeNode("1.3")); 90 91 second.add(new DefaultMutableTreeNode("2.1")); 92 second.add(new DefaultMutableTreeNode("2.2")); 93 second.add(new DefaultMutableTreeNode("2.3")); 94 95 third.add(new DefaultMutableTreeNode("3.1")); 96 third.add(new DefaultMutableTreeNode("3.2")); 97 third.add(new DefaultMutableTreeNode("3.3")); 98 99 node.add(first); 100 node.add(second); 101 node.add(third); 102 103 return node; 104 } 105 getTree()106 public static JTree getTree() { 107 return new JTree(getRoot()); 108 } 109 getModel()110 public static TreeModel getModel() { 111 return getTree().getModel(); 112 } 113 } 114