budjb / grails-spring-security-jaxrs

Provides a security layer on top of the Grails JAX-RS plugin.
Other
1 stars 3 forks source link

IllegalAccessError JaxrsAnnotationFilterInvocationDefinition.storeMapping() v1.0.2, Grails 2.X #9

Open bbedrin opened 7 years ago

bbedrin commented 7 years ago

Hi,

Im running a grails 2.4.3 application with: spring-security-core:2.0-RC5 spring-security-rest:1.5.4 spring-security-jaxrs:1.0.2

However, I am running into an issue with building due to an IllegalAccessError. It seems that your plugin cannot access the protected method from the different package.

27-03-2017 12:04:03,655 ERROR context.GrailsContextLoaderListener - Error initializing the application: tried to access method grails.plugin.springsecurity.web.access.intercept.AbstractFilterInvocationDefinition.storeMapping(Ljava/lang/String;Lorg/springframework/http/HttpMethod;Ljava/util/Collection;)Lgrails/plugin/springsecurity/InterceptedUrl; from class com.budjb.jaxrs.security.JaxrsAnnotationFilterInvocationDefinition$_initializeResource_closure1
java.lang.IllegalAccessError: tried to access method grails.plugin.springsecurity.web.access.intercept.AbstractFilterInvocationDefinition.storeMapping(Ljava/lang/String;Lorg/springframework/http/HttpMethod;Ljava/util/Collection;)Lgrails/plugin/springsecurity/InterceptedUrl; from class com.budjb.jaxrs.security.JaxrsAnnotationFilterInvocationDefinition$_initializeResource_closure1
    at com.budjb.jaxrs.security.JaxrsAnnotationFilterInvocationDefinition$_initializeResource_closure1.doCall(JaxrsAnnotationFilterInvocationDefinition.groovy:59)

I was able to resolve the issue by overwriting the storeMapping in the subclass(com.budjb.jaxrs.security.JaxrsFilterInvocationDefinition) to call the super class(grails.plugin.springsecurity.web.access.intercept.AbstractFilterInvocationDefinition) method.

protected InterceptedUrl storeMapping(final String pattern, final HttpMethod method,
                                          final Collection<ConfigAttribute> configAttributes) {

        return super.storeMapping(pattern, method, configAttributes)
    }

I'm not sure if I'm the only one experiencing this issue, but figured I pass on the solution if you want to implement it.