AbstractDatalinkEdit extends EditSupport<Datalink> { protected AbstractDatalinkEdit(Datalink datalink) { if (datalink == null) throw new RuntimeException( "Cannot construct a datalink edit with null datalink"); if (!(datalink instanceof DatalinkImpl)) throw new RuntimeException( "Edit cannot be applied to a Datalink which isn't an instance of DatalinkImpl"); this.datalink = (DatalinkImpl) datalink; } protected  AbstractDatalinkEdit(Datalink datalink); @Override final Datalink applyEdit(); @Override final Datalink getSubject();  }
@Test public void testAbstractDatalinkEdit() { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { } }; assertEquals(datalink, edit.getSubject()); }