package de.neze.bugreport.eclipse;
//Code generator imported: import de.neze.bugreport.eclipse.GeneralConcept.Item;
//Code generator imported: import de.neze.bugreport.eclipse.GeneralConcept.Problem;
/**
 * Feature Missing in Eclispe M5:
 * 
 * I like to write code like as noted below, and it seams that eclispe 
 * handling of ambigouse inner class names is suboptimal during codeassistance.
 * And the code formater has problems with disambigouated names.
 * Note: The exampe below is optimzed for shortness and that make it look a 
 * little bit stupid, but "real world" exmples are much longer .. .
 */
public abstract class AssistMyStyle {
	public static final class Problem extends Exception {
	}
	public static final class Item {
	}
	public static interface Factory {
		AssistMyStyle newAssistMyStyle() throws Problem;
	}
	abstract Item someMethod() throws Problem;
}
/**
 * and
 */
interface GeneralConcept {
	public static final class Problem extends Exception {
	}
	public static final class Item {
	}
	abstract Item anotherMethodWithLongNameToForceCodeformaterToBreakTheLine() throws Problem;
}
/**
 * ... and as a result I have many inner classes with the names
 * "Problem", "Factory" or "Item".
 * Now I Use code completation to procduce method stubs and got errors
 * as note in the method comments below.
 * I use "Automatically add import instead of qualified name" in 
 * 		Window > Preferences > Java > Editor > Code Assist:
 */
class AssistMyStyleImpl extends AssistMyStyle implements GeneralConcept {
	public static final class Factory implements AssistMyStyle.Factory {
		public AssistMyStyle newAssistMyStyle() {
			return new AssistMyStyleImpl();
		}
	}
	/**
	 * <pre>
	 * 	Item someMethod() throws Problem {
	 *		return null;
	 *	}
	 * </pre>
	 * Implies errors:
	 *  [1] The exception type Problem is ambiguous for the method someMethod
	 *  [2] The return type Item is ambiguous for the method someMethod
	 * I fix this:
	 */
	AssistMyStyle.Item someMethod() throws AssistMyStyle.Problem {
		return null;
	}
	/**
	 * anotherMethodWithLongNameToForceCodeformaterToBreakTheLine()
	 * <pre>
	 * 	public Item anotherMethodWithLongNameToForceCodeformaterToBreakTheLine()
	 *	throws Problem {
	 *	// XXX Auto-generated method stub
	 *	return null;
	 *	}
	 * </pre>
	 * Implies error:
	 * [1] The exception type Problem is ambiguous for the method 
	 *      anotherMethodWithLongNameToForceCodeformaterToBreakTheLine()
	 * [2] The return type Item is ambiguous for the method 
	 *      anotherMethodWithLongNameToForceCodeformaterToBreakTheLine
	 * I fix this and used code format (looks ugly!!!!):
	 */
	public GeneralConcept.Item anotherMethodWithLongNameToForceCodeformaterToBreakTheLine() throws GeneralConcept.Problem {
		return null;
	}
}