I'd appreciate an issue. I've been working mostly on a somewhat modified tree
locally but have not seen this problem. What jdk are you on? I wonder if this
is due to the changes in the latest jdks that break a lot of stuff like the
aries proxy code.
thanks
david jencks
On Jun 15, 2012, at 12:25 PM, Pierre De Rop wrote:
> Hi,
>
> There are some failing tests in the SCR integration tests; for example:
>
> test_component_factory_newInstance_failure:ComponentFactoryTest.test_component_factory_newInstance_failure:org.ops4j.pax.exam.forked.ForkedTestContainer@4a9c05(org.apache.felix.scr.integration.ComponentFactoryTest):
> Cannot get m_componentInstances from Component: factory.component (1):
> java.lang.NoSuchFieldException: m_componentInstances
>
> Mainly, I think the problem comes from the ComponentTestBase.getField()
> method, which is using Field.getDeclaredField(String);
>
> So in the case of the ConfigurationComponentFactoryImpl class, this is a
> problem because the field "m_componentInstances" is declared in the parent
> class (ComponentFactoryImpl); and Field.getDeclaredField(String) does not
> introspect parent.
>
> So, I have committed the following patch in the scr integration test (I did
> not create a jira issue, since the problem is only in the test, let me know
> if I should have created one):
>
> -------------------------------------------------------------------------------------
> class ComponentTestBase {
> ...
>
> protected static Field getField( Class<?> type, String fieldName )
> throws NoSuchFieldException
> {
> Class<?> clazz = type;
> while (clazz != null)
> {
> Field[] fields = clazz.getDeclaredFields();
> for (int i = 0; i < fields.length; i++)
> {
> Field field = fields[i];
> if (field.getName().equals(fieldName))
> {
> field.setAccessible( true );
> return field;
> }
> }
> clazz = clazz.getSuperclass();
> }
> throw new NoSuchFieldException(fieldName);
> }
> -------------------------------------------------------------------------------------
>
> best regards;
> /pierre