use of com.mvp4g.client.annotation.InjectService in project mvp4g by mvp4g.
the class Mvp4gAnnotationsWithServiceLoader method loadElement.
/*
* (non-Javadoc)
*
* @see com.mvp4g.rebind.config.loader.annotation.Mvp4gAnnotationsLoader#loadElement
* (com.google.gwt .core.ext.typeinfo.JClassType, java.lang.annotation.Annotation,
* com.mvp4g.rebind.config.Mvp4gConfiguration)
*/
@Override
protected void loadElement(JClassType c, T annotation, Mvp4gConfiguration configuration) throws Mvp4gAnnotationException {
Mvp4gWithServicesElement element = loadElementWithServices(c, annotation, configuration);
// check if any services need to be injected
JParameter[] params = null;
String className = null;
String serviceName = null;
InjectService serviceAnnotation = null;
for (JMethod m : c.getOverridableMethods()) {
serviceAnnotation = m.getAnnotation(InjectService.class);
if (serviceAnnotation != null) {
if (!m.isPublic()) {
String err = "Only public setter method can be used to inject a service.";
throw new Mvp4gAnnotationException(c.getQualifiedSourceName(), m.getName(), err);
}
params = m.getParameters();
if (params.length != 1) {
String err = "Only setter method with one parameter can be used to inject a service";
throw new Mvp4gAnnotationException(c.getQualifiedSourceName(), m.getName(), err);
}
serviceName = serviceAnnotation.serviceName();
if ((serviceName == null) || (serviceName.length() == 0)) {
className = params[0].getType().getQualifiedSourceName();
serviceName = getServiceName(configuration, className);
}
element.getInjectedServices().add(new InjectedElement(serviceName, m.getName()));
}
}
}
Aggregations