Author: nicolas
Date: Tue Feb 26 05:44:14 2008
New Revision: 631211

URL: http://svn.apache.org/viewvc?rev=631211&view=rev
Log:
fix error when target field is declared in the parent class

Modified:
    
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusComponentFactoryBean.java

Modified: 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusComponentFactoryBean.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusComponentFactoryBean.java?rev=631211&r1=631210&r2=631211&view=diff
==============================================================================
--- 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusComponentFactoryBean.java
 (original)
+++ 
maven/archiva/branches/springy/plexus-spring/src/main/java/org/codehaus/plexus/spring/PlexusComponentFactoryBean.java
 Tue Feb 26 05:44:14 2008
@@ -185,17 +185,8 @@
                 else
                 {
                     // explicit field injection
-                    Field field;
-                    try
-                    {
-                        fieldName = PlexusToSpringUtils.toCamelCase( fieldName 
);
-                        field = implementation.getDeclaredField( fieldName );
-                    }
-                    catch ( NoSuchFieldException e )
-                    {
-                        logger.warn( "No field " + fieldName + " on 
implementation class " + implementation );
-                        continue;
-                    }
+                    fieldName = PlexusToSpringUtils.toCamelCase( fieldName );
+                    Field field = findField( fieldName );
                     Object dependency = resolveRequirement( field, 
requirement.getValue() );
                     if ( logger.isTraceEnabled() )
                     {
@@ -210,6 +201,25 @@
         handlePlexusLifecycle( component );
 
         return component;
+    }
+
+    private Field findField( String fieldName )
+    {
+        Class clazz = implementation;
+        while (clazz != Object.class)
+        {
+            try
+            {
+                return clazz.getDeclaredField( fieldName );
+            }
+            catch (NoSuchFieldException e)
+            {
+                clazz = clazz.getSuperclass();
+            }
+        }
+        String error = "No field " + fieldName + " on implementation class " + 
implementation;
+        logger.error( error );
+        throw new BeanInitializationException( error );
     }
 
     private void handlePlexusLifecycle( final Object component )


Reply via email to