Hi,

In iPOJO 1.8.6, we are injecting proxy by default. You can disable the 
proxy-fixation by setting the ipojo.proxy system property to 'disabled' 
(http://felix.apache.org/site/service-requirement-handler.html#ServiceRequirementHandler-Proxies).

Regards,

Clement

On 23 mars 2013, at 15:35, "YANG, BongYeol (JIRA)" <j...@apache.org> wrote:

> YANG, BongYeol created FELIX-3990:
> -------------------------------------
> 
>             Summary: iPOJO 1.8.6 manipulator removes custom annotations
>                 Key: FELIX-3990
>                 URL: https://issues.apache.org/jira/browse/FELIX-3990
>             Project: Felix
>          Issue Type: Bug
>          Components: iPOJO
>    Affects Versions: ipojo-runtime-1.8.6, ipojo-manipulator-1.8.6
>         Environment: JDK 1.7.0_17, felix framework 4.2.0
>            Reporter: YANG, BongYeol
> 
> 
> I want to migrate from iPOJO 1.4.0 to 1.8.6 and tested my bundles.
> 
> In ipojo 1.4.0, custom (user-defined) runtime annotations are moved to ipojo 
> generated proxy class, but ipojo 1.8.6 does not care about it.
> 
> For example:
> 
> # TestMethod.java
> package org.araqne.test;
> 
> import java.lang.annotation.ElementType;
> import java.lang.annotation.Retention;
> import java.lang.annotation.RetentionPolicy;
> import java.lang.annotation.Target;
> 
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.METHOD)
> public @interface TestMethod {
>       String name();
> }
> 
> # TestService.java
> 
> package org.araqne.test;
> 
> public interface TestService {
> 
>       void stop();
>       void start();
>       
> }
> 
> # TestServiceImpl.java
> 
> package org.araqne.test.impl;
> 
> import org.apache.felix.ipojo.annotations.Component;
> import org.apache.felix.ipojo.annotations.Provides;
> import org.araqne.test.TestMethod;
> import org.araqne.test.TestService;
> 
> @Component(name = "test-service")
> @Provides
> public class TestServiceImpl implements TestService {
>       
>       public TestServiceImpl(String guid) {
>       }
>       
>       @Override
>       @TestMethod(name = "start")
>       public void start() {
>               
>       }
> 
>       @Override
>       @TestMethod(name = "stop")
>       public void stop() {
>       }
> 
> }
> 
> # OtherServiceImpl.java
> 
> package org.araqne.test.impl;
> 
> import java.lang.reflect.Method;
> 
> import org.apache.felix.ipojo.annotations.Component;
> import org.apache.felix.ipojo.annotations.Requires;
> import org.apache.felix.ipojo.annotations.Validate;
> import org.araqne.test.TestMethod;
> import org.araqne.test.TestService;
> 
> @Component(name = "test-base-service")
> public class OtherServiceImpl {
>       
>       @Requires
>       private TestService testService;
> 
>       public OtherServiceImpl(String guid) {
>       }
>       
>       @Validate
>       public void s() {
>               Method[] methods = testService.getClass().getDeclaredMethods();
>               for (Method m : methods) {
>                       TestMethod rpcMethod = 
> m.getAnnotation(TestMethod.class);
>                       if (rpcMethod == null) {
>                               System.out.println(String.format("annotation 
> not found: method [%s], class=[%s]", m.getName(), 
> testService.getClass().getName()));
>                       } else {
>                               System.out.println(String.format("annotation 
> found: method [%s], class=[%s]", m.getName(), 
> testService.getClass().getName()));
>                       }
>               }
>       }
> }
> 
> 
> In iPOJO 1.4.0, bundle print out like this:
> 
> annotation found: method [start], class=[org.araqne.test.impl.TestServiceImpl]
> annotation found: method [stop], class=[org.araqne.test.impl.TestServiceImpl]
> annotation not found: method [__start], 
> class=[org.araqne.test.impl.TestServiceImpl]
> annotation not found: method [__stop], 
> class=[org.araqne.test.impl.TestServiceImpl]
> annotation not found: method [_setInstanceManager], 
> class=[org.araqne.test.impl.TestServiceImpl]
> annotation not found: method [getComponentInstance], 
> class=[org.araqne.test.impl.TestServiceImpl]
> 
> In iPOJO 1.8.6, bundle print out like this:
> 
> annotation not found: method [start], 
> class=[org.araqne.test.TestService$$Proxy]
> annotation not found: method [stop], 
> class=[org.araqne.test.TestService$$Proxy]
> 
> Are there any other workaround for this? or just bug?
> 
> 
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA administrators
> For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to