// Path: config-toolkit/src/main/java/com/dangdang/config/service/exception/InvalidPathException.java
// public class InvalidPathException extends ConfigToolkitException {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	public InvalidPathException() {
// 		super();
// 	}
// 
// 	public InvalidPathException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	public InvalidPathException(String message) {
// 		super(message);
// 	}
// 
// 	public InvalidPathException(Throwable cause) {
// 		super(cause);
// 	}
// 
// }
// 
// Path: config-toolkit/src/main/java/com/dangdang/config/service/file/FileLocation.java
// public class FileLocation {
// 
// 	private String file;
// 
// 	private String protocol;
// 
// 	public FileLocation(String file, String protocol) {
// 		super();
// 		this.file = file;
// 		this.protocol = protocol;
// 	}
// 
// 	private static final String COLON = ":";
// 
// 	public static FileLocation fromLocation(String location) {
// 		// default as file
// 		if (!location.contains(COLON)) {
// 			return new FileLocation(location, ProtocolNames.FILE);
// 		}
// 
// 		final int i = location.indexOf(COLON);
// 		final String protocol = location.substring(0, i);
// 		final String file = location.substring(i + 1);
// 
// 		return new FileLocation(file, protocol.toLowerCase());
// 	}
// 
// 	public String getFile() {
// 		return file;
// 	}
// 
// 	public String getProtocol() {
// 		return protocol;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "FileLocation [file=" + file + ", protocol=" + protocol + "]";
// 	}
// 
// }


import com.dangdang.config.service.exception.InvalidPathException;
import com.dangdang.config.service.file.FileLocation;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
package com.dangdang.config.service.file.protocol;



/**
 * @author <a href="mailto:wangyuxuan@dangdang.com">Yuxuan Wang</a>
 *
 */
public class ClasspathProtocol extends LocalFileProtocol {

	private static Map<String, FileSystem> fsMap;

	static {
		fsMap = new HashMap<>();
	}

	@Override
// Path: config-toolkit/src/main/java/com/dangdang/config/service/exception/InvalidPathException.java
// public class InvalidPathException extends ConfigToolkitException {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	public InvalidPathException() {
// 		super();
// 	}
// 
// 	public InvalidPathException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	public InvalidPathException(String message) {
// 		super(message);
// 	}
// 
// 	public InvalidPathException(Throwable cause) {
// 		super(cause);
// 	}
// 
// }
// 
// Path: config-toolkit/src/main/java/com/dangdang/config/service/file/FileLocation.java
// public class FileLocation {
// 
// 	private String file;
// 
// 	private String protocol;
// 
// 	public FileLocation(String file, String protocol) {
// 		super();
// 		this.file = file;
// 		this.protocol = protocol;
// 	}
// 
// 	private static final String COLON = ":";
// 
// 	public static FileLocation fromLocation(String location) {
// 		// default as file
// 		if (!location.contains(COLON)) {
// 			return new FileLocation(location, ProtocolNames.FILE);
// 		}
// 
// 		final int i = location.indexOf(COLON);
// 		final String protocol = location.substring(0, i);
// 		final String file = location.substring(i + 1);
// 
// 		return new FileLocation(file, protocol.toLowerCase());
// 	}
// 
// 	public String getFile() {
// 		return file;
// 	}
// 
// 	public String getProtocol() {
// 		return protocol;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "FileLocation [file=" + file + ", protocol=" + protocol + "]";
// 	}
// 
// }


// Path: config-toolkit/src/main/java/com/dangdang/config/service/file/protocol/ClasspathProtocol.java
import com.dangdang.config.service.exception.InvalidPathException;
import com.dangdang.config.service.file.FileLocation;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

package com.dangdang.config.service.file.protocol;



/**
 * @author <a href="mailto:wangyuxuan@dangdang.com">Yuxuan Wang</a>
 *
 */
public class ClasspathProtocol extends LocalFileProtocol {

	private static Map<String, FileSystem> fsMap;

	static {
		fsMap = new HashMap<>();
	}

	@Override
	protected Path getPath(FileLocation location) throws InvalidPathException {