public final void undo() { if (!applied) { throw new RuntimeException( "Attempt to undo edit that was never applied"); } DatalinkImpl datalinkImpl = (DatalinkImpl) datalink; synchronized (datalinkImpl) { undoEditAction(datalinkImpl); applied = false; } } }
public final Datalink doEdit() throws EditException { if (applied) { throw new EditException("Edit has already been applied!"); } if (datalink instanceof DatalinkImpl == false) { throw new EditException( "Edit cannot be applied to a Datalink which isn't an instance of DatalinkImpl"); } DatalinkImpl datalinkImpl = (DatalinkImpl) datalink; try { synchronized (datalinkImpl) { doEditAction(datalinkImpl); applied = true; return this.datalink; } } catch (EditException ee) { applied = false; throw ee; } }
@Test public void testIsApplied() throws EditException { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { } @Override protected void undoEditAction(DatalinkImpl datalink) { } }; assertFalse(edit.isApplied()); edit.doEdit(); assertTrue(edit.isApplied()); edit.undo(); assertFalse(edit.isApplied()); }
@Test public void testDoEdit() throws EditException { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { editDone = true; } @Override protected void undoEditAction(DatalinkImpl datalink) { } }; assertFalse(editDone); assertFalse(edit.isApplied()); assertEquals(datalink, edit.doEdit()); assertTrue(editDone); assertTrue(edit.isApplied()); }
@Test public void testAbstractDatalinkEdit() { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { } @Override protected void undoEditAction(DatalinkImpl datalink) { } }; assertEquals(datalink, edit.getSubject()); }
@Test(expected = EditException.class) public void testDoEditTwice() throws EditException { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { } @Override protected void undoEditAction(DatalinkImpl datalink) { } }; edit.doEdit(); edit.doEdit(); }
@Test(expected = RuntimeException.class) public void testUndoBeforeDoEdit() { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { } @Override protected void undoEditAction(DatalinkImpl datalink) { } }; edit.undo(); }
public final Datalink doEdit() throws EditException { if (applied) { throw new EditException("Edit has already been applied!"); } if (datalink instanceof DatalinkImpl == false) { throw new EditException( "Edit cannot be applied to a Datalink which isn't an instance of DatalinkImpl"); } DatalinkImpl datalinkImpl = (DatalinkImpl) datalink; try { synchronized (datalinkImpl) { doEditAction(datalinkImpl); applied = true; return this.datalink; } } catch (EditException ee) { applied = false; throw ee; } }
@Test public void testUndo() throws EditException { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { editDone = true; } @Override protected void undoEditAction(DatalinkImpl datalink) { editDone = false; } }; assertFalse(editDone); assertFalse(edit.isApplied()); edit.doEdit(); assertTrue(editDone); assertTrue(edit.isApplied()); edit.undo(); assertFalse(editDone); assertFalse(edit.isApplied()); }
@Test public void testGetSubject() { AbstractDatalinkEdit edit = new AbstractDatalinkEdit(datalink) { @Override protected void doEditAction(DatalinkImpl datalink) throws EditException { } @Override protected void undoEditAction(DatalinkImpl datalink) { } }; assertEquals(datalink, edit.getSubject()); }
public final void undo() { if (!applied) { throw new RuntimeException( "Attempt to undo edit that was never applied"); } DatalinkImpl datalinkImpl = (DatalinkImpl) datalink; synchronized (datalinkImpl) { undoEditAction(datalinkImpl); applied = false; } } }
public final Datalink doEdit() throws EditException { if (applied) { throw new EditException("Edit has already been applied!"); } if (datalink instanceof DatalinkImpl == false) { throw new EditException( "Edit cannot be applied to a Datalink which isn't an instance of DatalinkImpl"); } DatalinkImpl datalinkImpl = (DatalinkImpl) datalink; try { synchronized (datalinkImpl) { doEditAction(datalinkImpl); applied = true; return this.datalink; } } catch (EditException ee) { applied = false; throw ee; } }
public final void undo() { if (!applied) { throw new RuntimeException( "Attempt to undo edit that was never applied"); } DatalinkImpl datalinkImpl = (DatalinkImpl) datalink; synchronized (datalinkImpl) { undoEditAction(datalinkImpl); applied = false; } } }