private void checkCreationInvariants(Viewpoint viewpoint, Block block) throws BlockNotVisibleException { UserViewpoint userview = null; if (viewpoint instanceof UserViewpoint) userview = (UserViewpoint) viewpoint; if (block.getInclusion() == StackInclusion.ONLY_WHEN_VIEWING_SELF) { User user = identitySpider.lookupUser(block.getData1AsGuid()); if (userview == null || !userview.getViewer().equals(user)) { // FIXME should this be a RuntimeException? logger.warn is here so we can investigate // that if the exception ever really happens logger.warn( "Trying to view an ONLY_WHEN_VIEWING_SELF block from a different viewpoint: {} block={}", userview, block); throw new BlockNotVisibleException( "ONLY_WHEN_VIEWING_SELF block is not visible to non-self viewpoint"); } } }
private Set<User> getUsersWhoCareAboutData1User(Block block, User user) { Set<User> peopleWhoCare = null; switch (block.getInclusion()) { case IN_ALL_STACKS: case ONLY_WHEN_VIEWED_BY_OTHERS: peopleWhoCare = identitySpider.getUsersWhoHaveUserAsContact(SystemViewpoint.getInstance(), user); // we also show each block to its "owner" when it is IN_ALL_STACKS; // we include the "owner" for the ONLY_WHEN_VIEWED_BY_OTHERS block, so // that the block is displayed in the owner's mugshot when it is viewed // by another person peopleWhoCare.add(user); return peopleWhoCare; case ONLY_WHEN_VIEWING_SELF: peopleWhoCare = Collections.singleton(user); return peopleWhoCare; // no default, it hides bugs } throw new RuntimeException("invalid inclusion " + block); }