package xapi.gen; /** * @author James X. Nelson (james@wetheinter.net) * Created on 12/27/15. */ public class TestBufferSelf implements TestBufferTypeWithChildren<TestBufferParent, TestBufferSelf, TestBufferChild> { private final TestBufferAncestor ancestor; private final TestBufferParent parent; public TestBufferSelf(TestBufferAncestor ancestor, TestBufferParent parent) { this.ancestor = ancestor; this.parent = parent; } @Override public TestBufferAncestor ancestor() { return ancestor; } @Override public TestBufferParent parent() { return parent; } public TestBufferChild1 newChild1() { return TestBufferChild1.of(ancestor(), this); } public TestBufferChild2 newChild2() { return TestBufferChild2.of(ancestor(), this); } public TestBufferChild3 newChild3() { return TestBufferChild3.of(ancestor(), this); } public TestBufferChild1And2 newChild1And2() { return TestBufferChild1And2.of(ancestor(), this); } public TestBufferChild1 startChild1() { final TestBufferChild1 child = newChild1(); addChild(child); return child; } public TestBufferChild2 startChild2() { final TestBufferChild2 child = newChild2(); addChild(child); return child; } protected void addChild(TestBufferChild child) { final Class<? extends TestBufferChild> cls = child.getClass(); ctx(Class.class.cast(cls)).addChild(child); } }