Estou trabalho com GenericController nos meus controladores so que nos metodos adiciona tenho que fazer override em meu controlador alguem poderia me explicar como poderia manipular isso vi que no meu console imprimi isso quando eu nao sobrescrevo o metodo no controlador:
INFO: /cadindexador [POST] -> GenericoController.adiciona(Object)
E tambem acho eu quem monta isso e o DefaultRouteBuilder e extendi a classe PathAnnotationRoutesParser e fiz algumas customizacao se alguem puder me ajudar
@Component
@ApplicationScoped
public class CustomPathAnotationRoutes extends PathAnnotationRoutesParser {
private final Router router;
public CustomPathAnotationRoutes(Router router) {
super(router);
// TODO Auto-generated constructor stub
this.router = router;
}
@Override
protected String defaultUriFor(String controllerName, String methodName) {
// TODO Auto-generated method stub
if ((methodName.equals("adiciona")) || (methodName.equals("deletar")) || (methodName.equals("formulario"))) {
return controllerName.toLowerCase();
} else {
if ((methodName.equals("localizar")) || (methodName.equals("lista"))) {
return super.defaultUriFor(controllerName, methodName).toLowerCase();
} else {
return super.defaultUriFor(controllerName, methodName);
}
}
}
@Override
protected List<Route> registerRulesFor(Class<?> baseType) {
// TODO Auto-generated method stub
// TESTE
ParameterizedType parameterizedType = (ParameterizedType)baseType.getGenericSuperclass();
System.out.println((Class)parameterizedType.getActualTypeArguments()[0]);
System.out.println(baseType.getName());
List<Route> routes = new ArrayList<Route>();
for (Method javaMethod : baseType.getMethods()) {
if (isEligible(javaMethod)) {
System.out.println(baseType.getName());
String[] uris = getURIsFor(javaMethod, baseType);
for (String uri : uris) {
RouteBuilder rule = this.router.builderFor(uri);
Boolean ruleWith = false;
for (HttpMethod m : HttpMethod.values()) {
if (javaMethod.isAnnotationPresent(m.getAnnotation())) {
rule.with(m);
ruleWith = true;
}
}
//CODIFICACAO JVDS
if ((!ruleWith) && baseType.getSuperclass().getSimpleName().equals("GenericoController")) {
for (Method m : baseType.getSuperclass().getMethods()) {
if (m.getName().equals(javaMethod.getName())) {
for (HttpMethod j : HttpMethod.values()) {
if (m.isAnnotationPresent(j.getAnnotation())) {
rule.with(j);
}
}
}
}
}
//
if (javaMethod.isAnnotationPresent(Path.class)) {
rule.withPriority(javaMethod.getAnnotation(Path.class).priority());
}
rule.is(baseType, javaMethod);
rule.build();
routes.add(rule.build());
}
}
}
return routes;
}
}
Obrigado !!!
JVDS
