1 /* 2 * Copyright (c) 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 package javax.xml.catalog; 26 27 import jdk.xml.internal.SecuritySupport; 28 29 /** 30 * 31 * @since 9 32 */ 33 class Util { 34 /** 35 * Find catalog file paths by reading the system property, and then 36 * jaxp.properties if the system property is not specified. 37 * 38 * @param sysPropertyName the name of system property 39 * @return the catalog file paths, or null if not found. 40 */ 41 static public String[] getCatalogFiles(String sysPropertyName) { 42 String value = SecuritySupport.getJAXPSystemProperty(sysPropertyName); 43 if (value != null && !value.equals("")) { 44 return value.split(";"); 45 } 46 return null; 47 } 48 } | 1 /* 2 * Copyright (c) 2015, 2016, 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 package javax.xml.catalog; 26 27 import java.io.File; 28 import java.net.MalformedURLException; 29 import java.net.URI; 30 import java.net.URISyntaxException; 31 import java.net.URL; 32 import java.nio.file.Path; 33 import java.nio.file.Paths; 34 import jdk.xml.internal.SecuritySupport; 35 36 /** 37 * 38 * @since 9 39 */ 40 class Util { 41 42 /** 43 * Resolves the specified file path to an absolute systemId. If it is 44 * relative, it shall be resolved using the base or user.dir property if 45 * base is not specified. 46 * 47 * @param file The specified file path 48 * @param baseURI the base URI 49 * @return The URI 50 * @throws CatalogException if the specified file path can not be converted 51 * to a system id 52 */ 53 static URI verifyAndGetURI(String file, URL baseURI) 54 throws MalformedURLException, URISyntaxException, IllegalArgumentException { 55 URL filepath; 56 URI temp; 57 if (file != null && file.length() > 0) { 58 File f = new File(file); 59 60 if (baseURI != null && !f.isAbsolute()) { 61 filepath = new URL(baseURI, fixSlashes(file)); 62 temp = filepath.toURI(); 63 } else { 64 temp = resolveURI(file); 65 } 66 //Paths.get may throw IllegalArgumentException 67 Path path = Paths.get(temp); 68 if (path.toFile().isFile()) { 69 return temp; 70 } 71 } 72 return null; 73 } 74 75 /** 76 * Resolves the specified uri. If the uri is relative, makes it absolute by 77 * the user.dir directory. 78 * 79 * @param uri The specified URI. 80 * @return The resolved URI 81 */ 82 static URI resolveURI(String uri) throws MalformedURLException { 83 if (uri == null) { 84 uri = ""; 85 } 86 87 URI temp = null; 88 try { 89 URL url = new URL(uri); 90 temp = url.toURI(); 91 } catch (MalformedURLException | URISyntaxException mue) { 92 File file = new File(uri); 93 temp = file.toURI(); 94 } 95 96 return temp; 97 } 98 99 /** 100 * Replace backslashes with forward slashes. (URLs always use forward 101 * slashes.) 102 * 103 * @param sysid The input system identifier. 104 * @return The same system identifier with backslashes turned into forward 105 * slashes. 106 */ 107 static String fixSlashes(String sysid) { 108 return sysid.replace('\\', '/'); 109 } 110 111 /** 112 * Find catalog file paths by reading the system property, and then 113 * jaxp.properties if the system property is not specified. 114 * 115 * @param sysPropertyName the name of system property 116 * @return the catalog file paths, or null if not found. 117 */ 118 static String[] getCatalogFiles(String sysPropertyName) { 119 String value = SecuritySupport.getJAXPSystemProperty(sysPropertyName); 120 if (value != null && !value.equals("")) { 121 return value.split(";"); 122 } 123 return null; 124 } 125 } |