in crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/DefaultHashFormatFactory.java [188:233]
protected Class getHashFormatClass(String token) {
Class clazz = null;
//check to see if the token is a configured FQCN alias. This is faster than searching packages,
//so we try this first:
if (this.formatClassNames != null) {
String value = this.formatClassNames.get(token);
if (value != null) {
//found an alias - see if the value is a class:
clazz = lookupHashFormatClass(value);
}
}
//check to see if the token is one of Shiro's provided FQCN aliases (again, faster than searching):
if (clazz == null) {
ProvidedHashFormat provided = ProvidedHashFormat.byId(token);
if (provided != null) {
clazz = provided.getHashFormatClass();
}
}
if (clazz == null) {
//check to see if 'token' was a FQCN itself:
clazz = lookupHashFormatClass(token);
}
if (clazz == null) {
//token wasn't a FQCN or a FQCN alias - try searching in configured packages:
if (this.searchPackages != null) {
for (String packageName : this.searchPackages) {
clazz = getHashFormatClass(packageName, token);
if (clazz != null) {
//found it:
break;
}
}
}
}
if (clazz != null) {
assertHashFormatImpl(clazz);
}
return clazz;
}