1 /* 2 * Copyright (c) 2001, 2015, 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 import java.awt.datatransfer.DataFlavor; 27 import java.awt.datatransfer.SystemFlavorMap; 28 import java.util.Arrays; 29 import java.util.Hashtable; 30 import java.util.Vector; 31 32 /* 33 * @test 34 * @summary To test SystemFlavorMap method 35 * getFlavorsForNative(String nat) 36 * with unknown String natives. Specifically test for 37 * unknown Unencoded String native in which an empty list is 38 * returned, and with unknown Encoded String native where 39 * two-way mapping should be established. 40 * @author Rick Reynaga (rick.reynaga@eng.sun.com) area=Clipboard 41 * @modules java.datatransfer 42 * @run main GetFlavorsForNewNativeTest 43 */ 44 45 public class GetFlavorsForNewNativeTest { 46 47 SystemFlavorMap flavorMap; 48 Vector comp1, comp2, comp3, comp4; 49 Hashtable hash; 50 int hashSize; 51 52 String test_native1, test_encoded; 53 DataFlavor test_flavor1, test_flavor2; 54 String[] test_natives_set; 55 DataFlavor[] test_flavors_set; 56 57 public static void main (String[] args) throws Exception { 58 new GetFlavorsForNewNativeTest().doTest(); 59 } 60 61 public void doTest() throws Exception { 62 // Initialize DataFlavors and arrays used for test data 63 initMappings(); 64 65 flavorMap = (SystemFlavorMap) SystemFlavorMap.getDefaultFlavorMap(); 66 67 // Get all the native strings and preferred DataFlavor mappings 68 hash = new Hashtable(flavorMap.getFlavorsForNatives(null)); 69 hashSize = hash.size(); 70 71 // GetFlavorsForNative using Unencoded Native 72 // 73 // If a new Unencoded native is specified as a parameter, the String 74 // native should be ignored and no mapping established. 75 System.out.println("GetFlavorsForNative using Unencoded Native Test"); 76 77 comp1 = new Vector(flavorMap.getFlavorsForNative(test_native1)); 78 79 if (comp1.size() != 0) { 80 throw new RuntimeException("\n*** After passing a new Unencoded native" + 81 "\nwith getFlavorsForNative(String nat)" + 82 "\nthe String native should be ignored and no mapping established."); 83 } else 84 System.out.println("GetFlavorsForNative using Unencoded Native Test: Test Passes"); 85 86 87 // GetFlavorsForNative using Encoded Native (verify 2-way mapping) 88 // 89 // If a new Encoded native is specified, the method should establish a mapping 90 // in both directions between specified native and DataFlavor whose MIME type 91 // is a decoded version of the native. 92 System.out.println("GetFlavorsForNative using Encoded Native Test"); 93 94 comp1 = new Vector(Arrays.asList(test_flavors_set)); 95 comp2 = new Vector(flavorMap.getFlavorsForNative(test_encoded)); 96 97 comp3 = new Vector(Arrays.asList(test_natives_set)); 98 comp4 = new Vector(flavorMap.getNativesForFlavor(test_flavor2)); 99 100 if (!comp1.equals(comp2) || !comp3.equals(comp4)) { 101 throw new RuntimeException("\n*** After passing a new Encoded native" + 102 "\nwith getFlavorsForNative(String nat)" + 103 "\nthe mapping in both directions was not established."); 104 } else 105 System.out.println("GetFlavorsForNative using Encoded Native: Test Passes"); 106 } 107 108 public void initMappings() throws Exception { 109 //initialize mapping variables used in this test 110 //create an Unencoded String native 111 test_native1 = "TEST1"; 112 113 //create a DataFlavor from Button class 114 test_flavor1 = new DataFlavor(Class.forName("java.awt.Button"), "Button"); 115 116 //create an Encoded String native using Button class MIME Type 117 String buttonMIME = test_flavor1.getMimeType(); 118 test_encoded = SystemFlavorMap.encodeJavaMIMEType(buttonMIME); 119 120 //create a DataFlavor from the Encoded String native 121 test_flavor2 = SystemFlavorMap.decodeDataFlavor(test_encoded); 122 123 //create and initialize DataFlavor arrays 124 test_flavors_set = new DataFlavor[] {test_flavor2}; 125 126 //create and initialize String native arrays 127 test_natives_set = new String[] {test_encoded}; 128 } 129 130 } 131