/** * Copyright (C) 2010-2017 Gordon Fraser, Andrea Arcuri and EvoSuite * contributors * * This file is part of EvoSuite. * * EvoSuite is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3.0 of the License, or * (at your option) any later version. * * EvoSuite 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 * Lesser Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with EvoSuite. If not, see <http://www.gnu.org/licenses/>. */ package com.examples.with.different.packagename.concolic; import java.net.URI; import java.net.URISyntaxException; public class URIClassifier { public URIClassifier() { } /* * public static String findShortestRelativeURI(String makeSmaller, String * fromBase) { boolean foundSmaller=false; int * spos=makeSmaller.indexOf('/'); int bpos=fromBase.indexOf('/'); String * sstr=makeSmaller; String bstr=fromBase; * * while ( spos==bpos && spos!=-1 && * sstr.substring(0,spos).equals(bstr.substring(0,bpos)) ) { * foundSmaller=true; sstr=sstr.substring(spos+1); * bstr=bstr.substring(bpos+1); spos=sstr.indexOf('/'); * bpos=bstr.indexOf('/'); } if (foundSmaller) { if * ((bpos=bstr.indexOf('/'))==-1) return sstr; else { * bstr=bstr.substring(bpos+1); if ((bpos=bstr.indexOf('/'))==-1) return * "../"+sstr; else { bstr=bstr.substring(bpos+1); if * ((bpos=bstr.indexOf('/'))==-1) return "../../"+sstr; } } } return * makeSmaller; } */ /** * @param nuri * @deprecated Use java.net.URI instead. * @return URI */ public static URI parseValidURI(String nuri) { return parseValidURI(nuri, null); } /** * @param nuri * @param baseuri * @return URI */ public static URI parseValidURI(String nuri, String baseuri) { try { if (baseuri != null) return URIClassifier.parseURI(nuri, URIClassifier.parseURI(baseuri, null)); else return URIClassifier.parseURI(nuri, null); } catch (URISyntaxException e) { Tracer.bug("Malformed URI '" + e + "': \n" + e.getMessage()); return null; // Never reached } } /** * @param nuri * @return URI * @throws URISyntaxException * @deprecated Use java.net.URI instead. */ public static URI parseURI(String nuri) throws URISyntaxException { return parseURI(nuri, null); } /** * Constructs an URI from a String * * @param nuri * the URI * @deprecated Use java.net.URI instead. */ public static URI parseURI(String nuri, URI baseuri) throws URISyntaxException { /* baseuri is not used in this method */ int colonLocation = nuri.indexOf(':'); int fragmentLocation = getFragmentLocation(nuri); if (colonLocation == -1 || colonLocation > fragmentLocation) { if (baseuri == null) throw new URISyntaxException("No ':' in \"" + nuri + "\" and no base URI given," + " so no relative URIs allowed", nuri); } String protocol = nuri.substring(0, colonLocation); if (protocol.equals("urn")) { return parseURN(nuri, colonLocation, fragmentLocation); } else if (protocol.equals("http")) { // Replaces all whitespaces with %20 since Javas URL class doesn't // do it. // StringBuffer buf = new StringBuffer(nuri); // int pos = buf.toString().indexOf(' '); // while (pos != -1) { // buf.replace(pos, pos + 1, "%20"); // pos = buf.toString().indexOf(' '); // } // int pathLocation = buf.toString().indexOf('/', 8); // // if (pathLocation == -1) { // return new URI(buf.toString() + "/"); // } else { // return new URI(buf.toString()); // } return new URI(nuri); } else if (protocol.equals("file")) { return new URI(nuri); } else if (protocol.equals("res")) { return new URI(nuri); } else { return parseGeneralURI(nuri, colonLocation, fragmentLocation); } } protected static URI parseURN(String nuri, int colonLocation, int fragmentLocation) throws URISyntaxException { int secondColonLocation = nuri.indexOf(':', colonLocation + 1); if (secondColonLocation == -1 || secondColonLocation > fragmentLocation || secondColonLocation == colonLocation + 1) throw new URISyntaxException("No protocol part in URN \"" + nuri + "\".", nuri); String urnprotocol = nuri.substring(colonLocation + 1, secondColonLocation); if (urnprotocol.equals("path")) return new URI(nuri); else return parseGeneralURN(nuri, colonLocation, secondColonLocation, fragmentLocation); } protected static URI parseGeneralURN(String nuri, int colonLocation, int secondColonLocation, int fragmentLocation) throws URISyntaxException { return parseGeneralURI(nuri, colonLocation, fragmentLocation); } protected static URI parseGeneralURI(String nuri, int colonLocation, int fragmentLocation) throws URISyntaxException { return new URI(nuri); } protected static int getFragmentLocation(String s) { int fragmentLocation = s.indexOf('#'); if (fragmentLocation == -1) return s.length(); return fragmentLocation; } }