/*
 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package com.sun.xml.internal.ws.util;

import java.util.UUID;
import java.util.regex.Pattern;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.io.File;
import java.io.IOException;

import javax.xml.namespace.QName;

Author:Vivek Pandey Wrapper utility class to be used from the generated code or run time.
/** * @author Vivek Pandey * * Wrapper utility class to be used from the generated code or run time. */
public final class JAXWSUtils { public static String getUUID(){ return UUID.randomUUID().toString(); } public static String getFileOrURLName(String fileOrURL) { try{ try { return escapeSpace(new URL(fileOrURL).toExternalForm()); } catch (MalformedURLException e) { return new File(fileOrURL).getCanonicalFile().toURL().toExternalForm(); } } catch (Exception e) { // try it as an URL return fileOrURL; } } public static URL getFileOrURL(String fileOrURL) throws IOException { try { URL url = new URL(fileOrURL); String scheme = String.valueOf(url.getProtocol()).toLowerCase(); if (scheme.equals("http") || scheme.equals("https")) return new URL(url.toURI().toASCIIString()); return url; } catch (URISyntaxException e) { return new File(fileOrURL).toURL(); } catch (MalformedURLException e) { return new File(fileOrURL).toURL(); } } public static URL getEncodedURL(String urlStr) throws MalformedURLException { URL url = new URL(urlStr); String scheme = String.valueOf(url.getProtocol()).toLowerCase(); if (scheme.equals("http") || scheme.equals("https")) { try { return new URL(url.toURI().toASCIIString()); } catch (URISyntaxException e) { MalformedURLException malformedURLException = new MalformedURLException(e.getMessage()); malformedURLException.initCause(e); throw malformedURLException; } } return url; } private static String escapeSpace( String url ) { // URLEncoder didn't work. StringBuilder buf = new StringBuilder(); for (int i = 0; i < url.length(); i++) { // TODO: not sure if this is the only character that needs to be escaped. if (url.charAt(i) == ' ') buf.append("%20"); else buf.append(url.charAt(i)); } return buf.toString(); } public static String absolutize(String name) { // absolutize all the system IDs in the input, // so that we can map system IDs to DOM trees. try { URL baseURL = new File(".").getCanonicalFile().toURL(); return new URL(baseURL, name).toExternalForm(); } catch( IOException e) { //ignore } return name; }
Checks if the system ID is absolute.
/** * Checks if the system ID is absolute. */
@SuppressWarnings("ResultOfObjectAllocationIgnored") public static void checkAbsoluteness(String systemId) { // we need to be able to handle system IDs like "urn:foo", which java.net.URL can't process, // but OTOH we also need to be able to process system IDs like "file://a b c/def.xsd", // which java.net.URI can't process. So for now, let's fail only if both of them fail. // eventually we need a proper URI class that works for us. try { new URL(systemId); } catch( MalformedURLException mue) { try { new URI(systemId); } catch (URISyntaxException e) { throw new IllegalArgumentException("system ID '"+systemId+"' isn't absolute",e); } } } /* * To match, both QNames must have the same namespace and the local * part of the target must match the local part of the 'pattern' * QName, which may contain wildcard characters. */ public static boolean matchQNames(QName target, QName pattern) { if ((target == null) || (pattern == null)) { // if no service or port is in descriptor return false; } if (pattern.getNamespaceURI().equals(target.getNamespaceURI())) { String regex = pattern.getLocalPart().replaceAll("\\*", ".*"); return Pattern.matches(regex, target.getLocalPart()); } return false; } }