1/* 2 * Copyright (c) 2004, 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 4985339 27 * @summary javax.naming.ldap.LdapName(String) doesn't parse 28 * some strings well 29 */ 30 31import javax.naming.ldap.*; 32import javax.naming.*; 33 34public class TrailingSpaceTest { 35 36 public static void main(String[] args) throws Exception { 37 String[] input = {"cn=Tyler\\ ", 38 "cn=Ty ler", 39 "cn=Tyler\\\\ ", 40 "cn=Tyler\\\\\\ ", 41 "cn= Tyler ", 42 "cn=Tyler\\\\ \\ ", 43 "cn= ", 44 "cn= \\ " 45 }; 46 47 String[] expected = { "Tyler ", 48 "Ty ler", 49 "Tyler\\", 50 "Tyler\\ ", 51 "Tyler", 52 "Tyler\\ ", 53 "", 54 " " 55 }; 56 57 try { 58 System.out.println("*************************"); 59 System.out.println(); 60 61 for (int i = 0; i < input.length; i++) { 62 63 Rdn rdn = new Rdn(input[i]); 64 65 System.out.println((i + 1) + ") RDN string: [" + 66 input[i] + "]"); 67 Object value = rdn.getValue(); 68 69 // escape the value 70 String escaped = Rdn.escapeValue(value); 71 System.out.println("escaped: [" + escaped + "]"); 72 73 // unescape the value 74 String unescaped = (String) Rdn.unescapeValue(escaped); 75 System.out.println("unescaped: [" + unescaped + "]"); 76 77 System.out.println(); 78 System.out.println("*************************"); 79 System.out.println(); 80 81 if (!unescaped.equals(expected[i])) { 82 throw new Exception("Invalid unescaping for: " + 83 " input #" + (i + 1)); 84 } 85 } 86 } catch (InvalidNameException e) { 87 e.printStackTrace(); 88 } 89 } 90} 91