package sharpen.xobotos.output; import com.thoughtworks.xstream.annotations.XStreamAlias; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.Modifier; @XStreamAlias(value = "stub") public class StubOutput extends OutputType { @XStreamAlias(value = "abstract") private boolean _abstract; @XStreamAlias(value = "remove-fields") private boolean _removeFields; @XStreamAlias(value = "remove-non-public") private boolean _removeNonPublic; @XStreamAlias(value = "remove-chained-constructors") private boolean _removeChainedCtors; @XStreamAlias(value = "remove-anonymous-classes") private boolean _removeAnonymousClasses; @XStreamAlias(value = "remove-static-constructor") private boolean _removeStaticCtor; @Override public OutputMode getMode() { return OutputMode.STUB; } @Override public OutputMode getModeForMember(ASTNode node) { if (node instanceof AnonymousClassDeclaration) { AnonymousClassDeclaration anon = (AnonymousClassDeclaration) node; if (_removeAnonymousClasses) return OutputMode.NOTHING; if (_removeNonPublic && Modifier.isPrivate(anon.resolveBinding().getModifiers())) return OutputMode.NAKED_STUB; } if (node instanceof BodyDeclaration) { BodyDeclaration body = (BodyDeclaration) node; if (_removeFields && (body instanceof FieldDeclaration)) return OutputMode.NOTHING; if (_removeNonPublic && Modifier.isPrivate(body.getModifiers())) return OutputMode.NOTHING; if (_abstract) return OutputMode.ABSTRACT_STUB; } return OutputMode.STUB; } @Override public boolean removeChainedConstructorInvocations() { return _removeChainedCtors; } @Override public boolean removeStaticConstructor() { return _removeStaticCtor; } }