// Path: src/main/java/com/github/eostermueller/heapspank/leakyspank/console/CommandLineParameterException.java
// public class CommandLineParameterException extends Exception {
// 
// 	private String proposedConfigClassName = null;
// 	public CommandLineParameterException(String string) {
// 		super(string);
// 	}
// 	public CommandLineParameterException(String string, Throwable t) {
// 		super(string, t);
// 	}
// 	public String getProposedConfigClassName() {
// 		return this.proposedConfigClassName;
// 	}
// 	public void setProposedConfigClassName(String val) {
// 		this.proposedConfigClassName = val;
// 	}
// 
// }
// 
// Path: src/main/java/com/github/eostermueller/heapspank/leakyspank/console/Config.java
// public interface Config {
// 	public static final String DEFAULT_FILE_NAME = "heapSpank.properties";
// 
// 	public abstract int getScreenRefreshIntervalSeconds();
// 
// 	public abstract void setScreenRefreshIntervalSeconds(
// 			int screenRefreshIntervalSeconds);
// 
// 	int getjMapHistoIntervalSeconds();
// 
// 	void setjMapHistoIntervalSeconds(int jMapHistoIntervalSeconds);
// 
// 	void setjMapCountPerWindow(int jMapCountPerWindow);
// 
// 	int getjMapCountPerWindow();
// 
// 	void setSuspectCountPerWindow(int suspectCountPerWindow);
// 
// 	int getSuspectCountPerWindow();
// 
// 	public abstract long getPid();
// 
// 	void setViewClass(String viewClass);
// 
// 	String getViewClass();
// 
// 	public abstract int getMaxIterations();
// 
// 	void setArgs(String[] args) throws CommandLineParameterException;
// 
// 	void setRunSelfTestAndExit(boolean runSelfTestOnly);
// 
// 	boolean runSelfTestAndExit();
// 
// 	public void setRegExExclusionFilter(String string);
// 
// 	public String getRegExExclusionFilter();
// 
// 	ClassNameFilter getClassNameExclusionFilter();
// 	
// 	public int getDisplayRowCount();
// 	public void setDisplayRowCount(int rows);
// 	public boolean getJMapHistoLive();
// 	public void setJMapHistoLive(boolean b);
// }
// 
// Path: src/main/java/com/github/eostermueller/heapspank/leakyspank/console/ConfigFactory.java
// public class ConfigFactory {
// 	private static final String DEFAULT_CONFIG_IMPL = "com.github.eostermueller.heapspank.leakyspank.console.DefaultConfig";
// 	public static final String APACHE_CONFIG_IMPL = "com.github.eostermueller.heapspank.leakyspank.console.ApacheCommonsConfigFile";
// 	
// 	private String defaultConfigClass = DEFAULT_CONFIG_IMPL;
// 	/**
// 	 * Create a new instance of com.github.eostermueller.heapspank.leakyspank.console.Config 
// 	 * @param args
// 	 * @return
// 	 * @throws CommandLineParameterException
// 	 */
// 	public Config createNew(String[] args) throws CommandLineParameterException {
// 		Config rc = null;
// 		String proposedNameOfConfigClass = null;
// 		proposedNameOfConfigClass = getConfigClassName(args);
// 		Object configInstance = null;
// 		
// 		debug("Attempting to load config class [" + proposedNameOfConfigClass + "]");
// 		try {
// 			Class c = Class.forName(proposedNameOfConfigClass);
// 			configInstance = c.newInstance();
// 		} catch (Exception e) {
// 			CommandLineParameterException x = new CommandLineParameterException("Unable to create [" + proposedNameOfConfigClass + "].  Not in the classpath?", e);
// 			x.setProposedConfigClassName(proposedNameOfConfigClass);
// 			throw x;
// 		}
// 		
// 		if (Config.class.isInstance(configInstance)) {
// 			rc = (Config) configInstance;
// 			rc.setArgs(args);
// 		} else {
// 			CommandLineParameterException x = new CommandLineParameterException("The -config class [" + proposedNameOfConfigClass + "] must implement com.github.eostermueller.heapspank.leakyspank.console.Config");
// 			x.setProposedConfigClassName(proposedNameOfConfigClass);
// 			throw x;
// 		}
// 		
// 		debug("loaded config [" + rc.toString() + "]");
// 		return rc;
// 	}
// 	private void debug(String string) {
// 		System.out.println("heapSpank: " + string);
// 		
// 	}
// 	private String getConfigClassName(String[] args) throws CommandLineParameterException {
// 		String rc = null;
// 		for(int i = 0; i < args.length; i++) {
// 			if (args[i].equals("-config")) {
// 				if ( i+1 < args.length)
// 					rc = args[i+1];
// 				else {
// 					CommandLineParameterException x = new CommandLineParameterException("parameter after -config must be name of a class that implements com.github.eostermueller.heapspank.leakyspank.console.Config");
// 					x.setProposedConfigClassName(null);
// 					throw x;
// 				}
// 			}
// 		}
// 		if (rc==null)
// 			rc = this.defaultConfigClass;
// 		return rc;
// 	}
// 	public String getDefaultConfigClass() {
// 		return defaultConfigClass;
// 	}
// 	public void setDefaultConfigClass(String defaultConfigClass) {
// 		this.defaultConfigClass = defaultConfigClass;
// 	}
// 
// }


import static org.junit.Assert.*;
import org.junit.Test;
import com.github.eostermueller.heapspank.leakyspank.console.CommandLineParameterException;
import com.github.eostermueller.heapspank.leakyspank.console.Config;
import com.github.eostermueller.heapspank.leakyspank.console.ConfigFactory;
package com.github.eostermueller.heapspank.leakyspank;




public class TestCustomConfigClass {

	@Test
// Path: src/main/java/com/github/eostermueller/heapspank/leakyspank/console/CommandLineParameterException.java
// public class CommandLineParameterException extends Exception {
// 
// 	private String proposedConfigClassName = null;
// 	public CommandLineParameterException(String string) {
// 		super(string);
// 	}
// 	public CommandLineParameterException(String string, Throwable t) {
// 		super(string, t);
// 	}
// 	public String getProposedConfigClassName() {
// 		return this.proposedConfigClassName;
// 	}
// 	public void setProposedConfigClassName(String val) {
// 		this.proposedConfigClassName = val;
// 	}
// 
// }
// 
// Path: src/main/java/com/github/eostermueller/heapspank/leakyspank/console/Config.java
// public interface Config {
// 	public static final String DEFAULT_FILE_NAME = "heapSpank.properties";
// 
// 	public abstract int getScreenRefreshIntervalSeconds();
// 
// 	public abstract void setScreenRefreshIntervalSeconds(
// 			int screenRefreshIntervalSeconds);
// 
// 	int getjMapHistoIntervalSeconds();
// 
// 	void setjMapHistoIntervalSeconds(int jMapHistoIntervalSeconds);
// 
// 	void setjMapCountPerWindow(int jMapCountPerWindow);
// 
// 	int getjMapCountPerWindow();
// 
// 	void setSuspectCountPerWindow(int suspectCountPerWindow);
// 
// 	int getSuspectCountPerWindow();
// 
// 	public abstract long getPid();
// 
// 	void setViewClass(String viewClass);
// 
// 	String getViewClass();
// 
// 	public abstract int getMaxIterations();
// 
// 	void setArgs(String[] args) throws CommandLineParameterException;
// 
// 	void setRunSelfTestAndExit(boolean runSelfTestOnly);
// 
// 	boolean runSelfTestAndExit();
// 
// 	public void setRegExExclusionFilter(String string);
// 
// 	public String getRegExExclusionFilter();
// 
// 	ClassNameFilter getClassNameExclusionFilter();
// 	
// 	public int getDisplayRowCount();
// 	public void setDisplayRowCount(int rows);
// 	public boolean getJMapHistoLive();
// 	public void setJMapHistoLive(boolean b);
// }
// 
// Path: src/main/java/com/github/eostermueller/heapspank/leakyspank/console/ConfigFactory.java
// public class ConfigFactory {
// 	private static final String DEFAULT_CONFIG_IMPL = "com.github.eostermueller.heapspank.leakyspank.console.DefaultConfig";
// 	public static final String APACHE_CONFIG_IMPL = "com.github.eostermueller.heapspank.leakyspank.console.ApacheCommonsConfigFile";
// 	
// 	private String defaultConfigClass = DEFAULT_CONFIG_IMPL;
// 	/**
// 	 * Create a new instance of com.github.eostermueller.heapspank.leakyspank.console.Config 
// 	 * @param args
// 	 * @return
// 	 * @throws CommandLineParameterException
// 	 */
// 	public Config createNew(String[] args) throws CommandLineParameterException {
// 		Config rc = null;
// 		String proposedNameOfConfigClass = null;
// 		proposedNameOfConfigClass = getConfigClassName(args);
// 		Object configInstance = null;
// 		
// 		debug("Attempting to load config class [" + proposedNameOfConfigClass + "]");
// 		try {
// 			Class c = Class.forName(proposedNameOfConfigClass);
// 			configInstance = c.newInstance();
// 		} catch (Exception e) {
// 			CommandLineParameterException x = new CommandLineParameterException("Unable to create [" + proposedNameOfConfigClass + "].  Not in the classpath?", e);
// 			x.setProposedConfigClassName(proposedNameOfConfigClass);
// 			throw x;
// 		}
// 		
// 		if (Config.class.isInstance(configInstance)) {
// 			rc = (Config) configInstance;
// 			rc.setArgs(args);
// 		} else {
// 			CommandLineParameterException x = new CommandLineParameterException("The -config class [" + proposedNameOfConfigClass + "] must implement com.github.eostermueller.heapspank.leakyspank.console.Config");
// 			x.setProposedConfigClassName(proposedNameOfConfigClass);
// 			throw x;
// 		}
// 		
// 		debug("loaded config [" + rc.toString() + "]");
// 		return rc;
// 	}
// 	private void debug(String string) {
// 		System.out.println("heapSpank: " + string);
// 		
// 	}
// 	private String getConfigClassName(String[] args) throws CommandLineParameterException {
// 		String rc = null;
// 		for(int i = 0; i < args.length; i++) {
// 			if (args[i].equals("-config")) {
// 				if ( i+1 < args.length)
// 					rc = args[i+1];
// 				else {
// 					CommandLineParameterException x = new CommandLineParameterException("parameter after -config must be name of a class that implements com.github.eostermueller.heapspank.leakyspank.console.Config");
// 					x.setProposedConfigClassName(null);
// 					throw x;
// 				}
// 			}
// 		}
// 		if (rc==null)
// 			rc = this.defaultConfigClass;
// 		return rc;
// 	}
// 	public String getDefaultConfigClass() {
// 		return defaultConfigClass;
// 	}
// 	public void setDefaultConfigClass(String defaultConfigClass) {
// 		this.defaultConfigClass = defaultConfigClass;
// 	}
// 
// }


// Path: src/test/java/com/github/eostermueller/heapspank/leakyspank/TestCustomConfigClass.java
import static org.junit.Assert.*;
import org.junit.Test;
import com.github.eostermueller.heapspank.leakyspank.console.CommandLineParameterException;
import com.github.eostermueller.heapspank.leakyspank.console.Config;
import com.github.eostermueller.heapspank.leakyspank.console.ConfigFactory;

package com.github.eostermueller.heapspank.leakyspank;




public class TestCustomConfigClass {

	@Test
	public void test() throws CommandLineParameterException {