mirror of
https://github.com/google/nomulus
synced 2026-01-10 07:57:58 +00:00
Add a custom logic framework to provide pluggable extensibility
To add additional logic for flow code, write custom classes that extend the existing custom logic classes (of which DomainCreateFlowCustomLogic is the first provided example), along with a class that extends CustomLogicFactory to provide instances of the new custom logic classes. Then configure the fully qualified class name of your new custom logic factory in ConfigModule.provideCustomLogicFactoryClass(). ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=139221577
This commit is contained in:
@@ -56,6 +56,28 @@ public class TypeUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class referred to by a fully qualified class name string.
|
||||
*
|
||||
* <p>Throws an error if the loaded class is not assignable from the expected super type class.
|
||||
*/
|
||||
public static <T> Class<T> getClassFromString(String className, Class<T> expectedSuperType) {
|
||||
Class<?> clazz;
|
||||
try {
|
||||
clazz = Class.forName(className);
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new IllegalArgumentException(String.format("Failed to load class %s", className), e);
|
||||
}
|
||||
checkArgument(
|
||||
expectedSuperType.isAssignableFrom(clazz),
|
||||
"%s does not implement/extend %s",
|
||||
clazz.getSimpleName(),
|
||||
expectedSuperType.getSimpleName());
|
||||
@SuppressWarnings("unchecked")
|
||||
Class<T> castedClass = (Class<T>) clazz;
|
||||
return castedClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggregates enum "values" in a typesafe enum pattern into a string->field map.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user