Hi Scott,
I've upgraded my 3.1..s080202 snapshot to release 3.1.5 today, and found
my intercepted components broken.
After some examinations, I think the problem should be the runtime
weaver who was responsible to generate code for webbeans component annotated
to be intercepted.
The attachment is an IntelliJ IDEA project which contains a trivial
servlet calling a injected service to output "hello" to html out. There're
four classes below:
================the binding type, no problem============
package com.mycompany.interceptors;
import javax.webbeans.InterceptorBindingType;
import java.lang.annotation.*;
@InterceptorBindingType
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Cachable {
}
===============================================
================the interceptor, no problem============
package com.mycompany.interceptors;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import javax.webbeans.Interceptor;
@Cachable
@Interceptor
public class CacheInterceptor {
public CacheInterceptor() {
}
@AroundInvoke
public Object invoke(final InvocationContext invocation) throws Throwable {
System.out.println("intercepted");
return invocation.proceed();
}
}
===============================================
================the servlet, no problem================
package com.mycompany.servlet;
import com.mycompany.services.TestService;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.webbeans.In;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@In
TestService service;
protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
try {
response.getOutputStream().print(service.service());
} catch (Exception e) {
throw new ServletException(e);
}
}
}
===============================================
================the service component, BUG!!!!!==========
package com.mycompany.services;
import com.mycompany.interceptors.Cachable;
import javax.webbeans.Component;
@Component
public class TestService {
public TestService() {
}
@Cachable
public String service() throws Exception { // todo bug: if not throws
Exception, everything is ok
return "hello";
}
}
===============================================
Note the TODO in the service component code.
Sorry I sent an incomplete mail a minute ago.
Regards,
-Wesley
_______________________________________________
resin-interest mailing list
[email protected]
http://maillist.caucho.com/mailman/listinfo/resin-interest