### Question:
FactManager implements LifecycleAspect { public FactAclEntity saveFactAclEntry(FactAclEntity entry) { if (entry == null) return null; if (getFact(entry.getFactID()) == null) throw new IllegalArgumentException(String.format("Fact with id = %s does not exist.", entry.getFactID())); if (factDao.getAclEntry(entry.getFactID(), entry.getId()) != null) throw new ImmutableViolationException("It is not allowed to update an ACL entry."); factDao.save(entry); return entry; } @Inject  FactManager(ClusterManager clusterManager); @Override void startComponent(); @Override void stopComponent(); FactTypeEntity getFactType(UUID id); FactTypeEntity getFactType(String name); List<FactTypeEntity> fetchFactTypes(); FactTypeEntity saveFactType(FactTypeEntity type); FactEntity getFact(UUID id); Iterator<FactEntity> getFacts(List<UUID> id); FactEntity saveFact(FactEntity fact); FactEntity refreshFact(UUID id); FactEntity retractFact(UUID id); List<FactAclEntity> fetchFactAcl(UUID id); FactAclEntity saveFactAclEntry(FactAclEntity entry); List<FactCommentEntity> fetchFactComments(UUID id); FactCommentEntity saveFactComment(FactCommentEntity comment); List<MetaFactBindingEntity> fetchMetaFactBindings(UUID id); MetaFactBindingEntity saveMetaFactBinding(MetaFactBindingEntity binding);  }### Answer:
@Test public void testSaveFactAclEntryReturnsSameEntity() { FactAclEntity entity = createFactAclEntry(createAndSaveFact().getId()); assertSame(entity, getFactManager().saveFactAclEntry(entity)); }
@Test public void testSaveFactAclEntryReturnsNullOnNullInput() { assertNull(getFactManager().saveFactAclEntry(null)); }
@Test(expected = IllegalArgumentException.class) public void testSaveFactAclEntryWithNonExistingFactThrowsException() { getFactManager().saveFactAclEntry(createFactAclEntry(UUID.randomUUID())); }
@Test(expected = ImmutableViolationException.class) public void testSaveFactAclEntryTwiceThrowsException() { FactAclEntity entry = createFactAclEntry(createAndSaveFact().getId()); getFactManager().saveFactAclEntry(entry); getFactManager().saveFactAclEntry(entry); }