ProjectAres/PGM/src/main/java/tc/oc/pgm/map/StaticMethodMapModuleFactor...

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);
}
}
}