test_class.declarator: USER_PATH = "/userpath"
test_class.modifier: private static final
test_class.original_string: private static final String USER_PATH = "/userpath";
test_class.type: String
test_class.var_name: USER_PATH
test_class.declarator: namePathMapper = Mockito.mock(NamePathMapper.class)
test_class.modifier: private final
test_class.original_string: private final NamePathMapper namePathMapper = Mockito.mock(NamePathMapper.class);
test_class.type: NamePathMapper
test_class.var_name: namePathMapper
test_class.declarator: pwChangeAction
test_class.modifier: private
test_class.original_string: private PasswordChangeAction pwChangeAction;
test_class.type: PasswordChangeAction
test_class.var_name: pwChangeAction
test_class.declarator: user
test_class.modifier: private
test_class.original_string: private User user;
test_class.type: User
test_class.var_name: user
test_class.file: oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeActionTest.java
test_class.identifier: PasswordChangeActionTest
test_case.body: @Test
      public void testUserWithoutPassword() throws Exception {
          try {
              pwChangeAction.onPasswordChange(user, "changedPassword", createRoot(null), namePathMapper);
          } finally {
              user.remove();
          }
      }
test_case.class_method_signature: PasswordChangeActionTest.testUserWithoutPassword()
test_case.full_signature: @Test public void testUserWithoutPassword()
test_case.identifier: testUserWithoutPassword
test_case.invocations: onPasswordChange createRoot remove
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testUserWithoutPassword()
focal_class.file: oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordChangeAction.java
focal_class.identifier: PasswordChangeAction
focal_class.class_method_signature: PasswordChangeAction.onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_class.full_signature: @Override public void onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_class.identifier: onPasswordChange
focal_class.modifiers: @Override public
focal_class.parameters: (@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_class.return: void
focal_class.signature: void onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_class.class_method_signature: PasswordChangeAction.getPasswordHash(@NotNull Root root, @NotNull User user)
focal_class.full_signature: @Nullable private String getPasswordHash(@NotNull Root root, @NotNull User user)
focal_class.identifier: getPasswordHash
focal_class.modifiers: @Nullable private
focal_class.parameters: (@NotNull Root root, @NotNull User user)
focal_class.return: String
focal_class.signature: String getPasswordHash(@NotNull Root root, @NotNull User user)
focal_class.superclass: extends AbstractAuthorizableAction
focal_method.body: @Override
      public void onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper) throws RepositoryException {
          if (newPassword == null) {
              throw new ConstraintViolationException("Expected a new password that is not null.");
          }
          String pwHash = getPasswordHash(root, user);
          if (PasswordUtil.isSame(pwHash, newPassword)) {
              throw new ConstraintViolationException("New password is identical to the old password.");
          }
      }
focal_method.class_method_signature: PasswordChangeAction.onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_method.full_signature: @Override public void onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_method.identifier: onPasswordChange
focal_method.invocations: getPasswordHash isSame
focal_method.modifiers: @Override public
focal_method.parameters: (@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)
focal_method.return: void
focal_method.signature: void onPasswordChange(@NotNull User user, String newPassword, @NotNull Root root, @NotNull NamePathMapper namePathMapper)