24 lines
779 B
Java
24 lines
779 B
Java
package tc.oc.pgm.map;
|
|
|
|
import com.google.inject.ProvisionException;
|
|
import tc.oc.commons.core.reflect.Delegates;
|
|
import tc.oc.commons.core.reflect.ResolvableType;
|
|
|
|
/**
|
|
* Delegates module parsing to a static method on the module class,
|
|
* which must match the name and signature of {@link MapModuleParser#parse}.
|
|
*/
|
|
public abstract class StaticMethodMapModuleFactory<T extends MapModule> extends MapModuleManifest<T> {
|
|
@Override
|
|
protected MapModuleParser<T> parser() {
|
|
try {
|
|
return Delegates.newStaticMethodDelegate(
|
|
new ResolvableType<MapModuleParser<T>>(){}.in(getClass()),
|
|
rawType
|
|
);
|
|
} catch(NoSuchMethodError e) {
|
|
throw new ProvisionException(e.getMessage(), e);
|
|
}
|
|
}
|
|
}
|