// Path: web-io/src/main/java/org/jbehave/web/io/ResourceFinder.java
// public class ResourceFinder {
// 
//     public static final String DEFAULT_ROOT_DIRECTORY = "";
//     public static final String DEFAULT_CLASSPATH_PREFIX = "classpath:";
// 	private final ClassLoader classLoader;
// 	private final String classpathPrefix;
// 	private String rootDirectory;
// 
//     public ResourceFinder() {
//         this(DEFAULT_ROOT_DIRECTORY);
//     }
// 
//     public ResourceFinder(String rootDirectory) {
// 		this(Thread.currentThread().getContextClassLoader(), rootDirectory,
// 				DEFAULT_CLASSPATH_PREFIX);
// 	}
// 
// 	public ResourceFinder(ClassLoader classLoader, String rootDirectory) {
// 		this(classLoader, rootDirectory, DEFAULT_CLASSPATH_PREFIX);
// 	}
// 
// 	public ResourceFinder(ClassLoader classLoader, String rootDirectory,
// 			String classpathPrefix) {
// 		this.classLoader = classLoader;
// 		this.classpathPrefix = classpathPrefix;
// 		this.rootDirectory = rootDirectory;
// 	}
// 
// 	public String resourceAsString(String relativePath) {
// 		String resourcePath = resolvePath(relativePath);
// 		try {
// 			try {
// 				return classpathResource(resourcePath);
// 			} catch (ResourceNotFoundException e) {
// 				return filesystemResource(resourcePath);
// 			}
// 		} catch (IOException e) {
// 			throw new ResourceRetrievalFailedException(resourcePath);
// 		}
// 
// 	}
// 
// 	public void useRootDirectory(String rootDirectory) {
// 		this.rootDirectory = rootDirectory;
// 	}
// 
// 	private String classpathResource(String resourcePath) throws IOException {
// 		InputStream inputStream = classLoader.getResourceAsStream(resourcePath);
// 		if (inputStream != null) {
// 			return IOUtils.toString(inputStream, Charset.defaultCharset());
// 		}
// 		throw new ResourceNotFoundException(resourcePath, classLoader);
// 	}
// 
// 	private String filesystemResource(String resourcePath) throws IOException {
// 		File file = new File(resourcePath);
// 		if (file.exists()) {
// 			return FileUtils.readFileToString(file, Charset.defaultCharset());
// 		}
// 		throw new ResourceNotFoundException(resourcePath);
// 	}
// 
// 	private String resolvePath(String relativePath) {
// 		String resourcePath;
// 		if (rootDirectory.startsWith(classpathPrefix)) {
// 			resourcePath = resourcePath(stripPrefix(rootDirectory,
// 					classpathPrefix), relativePath);
// 		} else {
// 			resourcePath = resourcePath(rootDirectory, relativePath);
// 
// 		}
// 		return resourcePath;
// 	}
// 
// 	private String resourcePath(String rootDirectory, String relativePath) {
// 		if ( StringUtils.isBlank(rootDirectory) ){
// 			return relativePath;
// 		}
// 		return rootDirectory + "/" + relativePath;
// 	}
// 
// 	private String stripPrefix(String path, String prefix) {
// 		return path.substring(prefix.length());
// 	}
// 
// 	@SuppressWarnings("serial")
// 	public static class ResourceNotFoundException extends RuntimeException {
// 
// 		public ResourceNotFoundException(String resourcePath) {
// 			super("Resource " + resourcePath + " not found");
// 		}
// 
// 		public ResourceNotFoundException(String resourcePath,
// 				ClassLoader classLoader) {
// 			super("Resource " + resourcePath + " not found in classLoader "
// 					+ classLoader);
// 		}
// 
// 	}
// 
// 	@SuppressWarnings("serial")
// 	public static class ResourceRetrievalFailedException extends
// 			RuntimeException {
// 
// 		public ResourceRetrievalFailedException(String resourcePath) {
// 			super("Failed to retrieve resource " + resourcePath);
// 		}
// 
// 	}
// }


import java.io.File;
import org.apache.commons.lang3.StringUtils;
import org.jbehave.web.io.ResourceFinder;

package org.jbehave.web.runner.wicket.pages;



@SuppressWarnings("serial")
public class FileContent extends Template {

	public FileContent(File file) {
		String path = file.getPath();		
		String type = typeOf(path);

// Path: web-io/src/main/java/org/jbehave/web/io/ResourceFinder.java
// public class ResourceFinder {
// 
//     public static final String DEFAULT_ROOT_DIRECTORY = "";
//     public static final String DEFAULT_CLASSPATH_PREFIX = "classpath:";
// 	private final ClassLoader classLoader;
// 	private final String classpathPrefix;
// 	private String rootDirectory;
// 
//     public ResourceFinder() {
//         this(DEFAULT_ROOT_DIRECTORY);
//     }
// 
//     public ResourceFinder(String rootDirectory) {
// 		this(Thread.currentThread().getContextClassLoader(), rootDirectory,
// 				DEFAULT_CLASSPATH_PREFIX);
// 	}
// 
// 	public ResourceFinder(ClassLoader classLoader, String rootDirectory) {
// 		this(classLoader, rootDirectory, DEFAULT_CLASSPATH_PREFIX);
// 	}
// 
// 	public ResourceFinder(ClassLoader classLoader, String rootDirectory,
// 			String classpathPrefix) {
// 		this.classLoader = classLoader;
// 		this.classpathPrefix = classpathPrefix;
// 		this.rootDirectory = rootDirectory;
// 	}
// 
// 	public String resourceAsString(String relativePath) {
// 		String resourcePath = resolvePath(relativePath);
// 		try {
// 			try {
// 				return classpathResource(resourcePath);
// 			} catch (ResourceNotFoundException e) {
// 				return filesystemResource(resourcePath);
// 			}
// 		} catch (IOException e) {
// 			throw new ResourceRetrievalFailedException(resourcePath);
// 		}
// 
// 	}
// 
// 	public void useRootDirectory(String rootDirectory) {
// 		this.rootDirectory = rootDirectory;
// 	}
// 
// 	private String classpathResource(String resourcePath) throws IOException {
// 		InputStream inputStream = classLoader.getResourceAsStream(resourcePath);
// 		if (inputStream != null) {
// 			return IOUtils.toString(inputStream, Charset.defaultCharset());
// 		}
// 		throw new ResourceNotFoundException(resourcePath, classLoader);
// 	}
// 
// 	private String filesystemResource(String resourcePath) throws IOException {
// 		File file = new File(resourcePath);
// 		if (file.exists()) {
// 			return FileUtils.readFileToString(file, Charset.defaultCharset());
// 		}
// 		throw new ResourceNotFoundException(resourcePath);
// 	}
// 
// 	private String resolvePath(String relativePath) {
// 		String resourcePath;
// 		if (rootDirectory.startsWith(classpathPrefix)) {
// 			resourcePath = resourcePath(stripPrefix(rootDirectory,
// 					classpathPrefix), relativePath);
// 		} else {
// 			resourcePath = resourcePath(rootDirectory, relativePath);
// 
// 		}
// 		return resourcePath;
// 	}
// 
// 	private String resourcePath(String rootDirectory, String relativePath) {
// 		if ( StringUtils.isBlank(rootDirectory) ){
// 			return relativePath;
// 		}
// 		return rootDirectory + "/" + relativePath;
// 	}
// 
// 	private String stripPrefix(String path, String prefix) {
// 		return path.substring(prefix.length());
// 	}
// 
// 	@SuppressWarnings("serial")
// 	public static class ResourceNotFoundException extends RuntimeException {
// 
// 		public ResourceNotFoundException(String resourcePath) {
// 			super("Resource " + resourcePath + " not found");
// 		}
// 
// 		public ResourceNotFoundException(String resourcePath,
// 				ClassLoader classLoader) {
// 			super("Resource " + resourcePath + " not found in classLoader "
// 					+ classLoader);
// 		}
// 
// 	}
// 
// 	@SuppressWarnings("serial")
// 	public static class ResourceRetrievalFailedException extends
// 			RuntimeException {
// 
// 		public ResourceRetrievalFailedException(String resourcePath) {
// 			super("Failed to retrieve resource " + resourcePath);
// 		}
// 
// 	}
// }


// Path: web-runner/src/main/java/org/jbehave/web/runner/wicket/pages/FileContent.java
import java.io.File;
import org.apache.commons.lang3.StringUtils;
import org.jbehave.web.io.ResourceFinder;

package org.jbehave.web.runner.wicket.pages;



@SuppressWarnings("serial")
public class FileContent extends Template {

	public FileContent(File file) {
		String path = file.getPath();		
		String type = typeOf(path);

        add(new NoMarkupMultiLineLabel("fileContent", new ResourceFinder().resourceAsString(path), "brush: "+type));
