protected void checkHashFormatDurability() {

        if (!this.hashFormatWarned) {

            HashFormat format = this.hashFormat;

            if (!(format instanceof ParsableHashFormat) && LOGGER.isWarnEnabled()) {
                String msg = "The configured hashFormat instance [" + format.getClass().getName() + "] is not a "
                        + ParsableHashFormat.class.getName() + " implementation.  This is "
                        + "required if you wish to support backwards compatibility for saved password checking (almost "
                        + "always desirable).  Without a " + ParsableHashFormat.class.getSimpleName() + " instance, "
                        + "any hashService configuration changes will break previously hashed/saved passwords.";
                LOGGER.warn(msg);
                this.hashFormatWarned = true;
            }
        }
    }
Constructs a new PasswordService with a default hash service and the default
algorithm name {@value #DEFAULT_HASH_ALGORITHM}, a default hash format (shiro2) and
a default hash format factory.

<p>The default algorithm can change between minor versions and does not introduce
API incompatibility by design.</p>
core/src/main/java/org/apache/shiro/authc/credential/DefaultPasswordService.java