Skip to content

Conversation

shuitai
Copy link

@shuitai shuitai commented Mar 17, 2020

fix [Bug] When Using custom annotation, the route will be incorrect

@drejc
Copy link
Member

drejc commented Mar 17, 2020

I have already fixed this issue but not pushed it jet as I have discovered some other unrelated bug that is in the fixing.
Your supposed solution might not work for all casses, find attached the code snippet that fixes the issue. Just replace it in AnnotationProcessor.java

/**
     * Gets all route definitions for base class / interfaces and inherited / abstract classes
     *
     * @param clazz to inspect
     * @return collection of all definitions
     */
    private static Map<RouteDefinition, Method> collect(Class<?> clazz) {

        // Addressing issue #55, where Guice alters annotations
        if (clazz.getName().contains("$$EnhancerByGuice$$")) { // Skip Guice enhanced clazz and go to "original"
            clazz = clazz.getSuperclass();
        }

        Map<RouteDefinition, Method> out = getDefinitions(clazz);
        RouteDefinition classDefinition = getClassDefinition(out);

        for (Class<?> inter : clazz.getInterfaces()) {
            Map<RouteDefinition, Method> found = collect(inter);

            RouteDefinition interfaceClassDefinition = getClassDefinition(found);
            if (classDefinition != null) {
                classDefinition.join(interfaceClassDefinition);
            }

            join(out, found);
        }

        Class<?> superClass = clazz.getSuperclass();
        if (superClass != Object.class && superClass != null) {
            Map<RouteDefinition, Method> found = collect(superClass);

            RouteDefinition superClassDefinition = getClassDefinition(found);
            if (classDefinition != null) {
                classDefinition.join(superClassDefinition);
            }

            join(out, found);
        }

        //
        out.put(classDefinition, null);
        return out;
    }

@drejc drejc closed this Mar 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants