/* * @(#)$Id: Util.java,v 1.4 2002/04/28 22:58:45 kk122374 Exp $ * * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package com.sun.msv.util; import org.xml.sax.InputSource; import java.io.File; import java.net.URL; import java.net.MalformedURLException; /** * Collection of utility methods. * * @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a> */ public class Util { /** * Gets an InputSource from a string, which contains either * a file name or an URL. */ public static InputSource getInputSource( String fileOrURL ) { try { // try it as an URL new URL(fileOrURL); return new InputSource(fileOrURL); } catch( MalformedURLException e ) { // try it as a file String path = new File(fileOrURL).getAbsolutePath(); if (File.separatorChar != '/') path = path.replace(File.separatorChar, '/'); if (!path.startsWith("/")) path = "/" + path; // if (!path.endsWith("/") && isDirectory()) // path = path + "/"; return new InputSource("file://"+path); } } /** * Checks if a given string is an absolute URI if it is an URI. * * <p> * This method does not check whether it is an URI. * * <p> * This implementation is based on * <a href="http://lists.oasis-open.org/archives/relax-ng/200107/msg00211.html"> * this post.</a> */ public static boolean isAbsoluteURI( String uri ) { int len = uri.length(); if(len==0) return true; // an empty string is OK. if(len<2) return false; char ch = uri.charAt(0); if(('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z')) { for( int i=1; i<len; i++ ) { ch = uri.charAt(i); if(ch==':') return true; if(('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z')) continue; if(ch=='-' || ch=='+' || ch=='.') continue; return false; // invalid character } } return false; } }