felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "YANG, BongYeol (JIRA)" <j...@apache.org>
Subject [jira] [Created] (FELIX-3990) iPOJO 1.8.6 manipulator removes custom annotations
Date Sat, 23 Mar 2013 14:35:15 GMT
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

Mime
View raw message