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; } }