You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by dk...@apache.org on 2012/05/23 17:43:12 UTC

svn commit: r1341907 - in /aries/branches/blueprint-0.3.2-fixes: ./ blueprint-core/ blueprint-core/src/main/java/org/apache/aries/blueprint/di/ blueprint-core/src/test/java/org/apache/aries/ blueprint-core/src/test/java/org/apache/aries/blueprint/ blue...

Author: dkulp
Date: Wed May 23 15:43:11 2012
New Revision: 1341907

URL: http://svn.apache.org/viewvc?rev=1341907&view=rev
Log:
[ARIES-855] Initial support for loading nested classes
Pull back from trunk

Added:
    aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java
      - copied, changed from r1341886, aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java
    aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/SimpleBean.java
      - copied unchanged from r1341886, aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/SimpleBean.java
    aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/resources/test-bean-classes.xml
      - copied unchanged from r1341886, aries/trunk/blueprint/blueprint-core/src/test/resources/test-bean-classes.xml
Modified:
    aries/branches/blueprint-0.3.2-fixes/   (props changed)
    aries/branches/blueprint-0.3.2-fixes/blueprint-core/   (props changed)
    aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/main/java/org/apache/aries/blueprint/di/AbstractRecipe.java
    aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/   (props changed)

Propchange: aries/branches/blueprint-0.3.2-fixes/
------------------------------------------------------------------------------
  Merged /aries/trunk/blueprint:r1341886

Propchange: aries/branches/blueprint-0.3.2-fixes/blueprint-core/
------------------------------------------------------------------------------
  Merged /aries/trunk/blueprint/blueprint-core:r1341886

Modified: aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/main/java/org/apache/aries/blueprint/di/AbstractRecipe.java
URL: http://svn.apache.org/viewvc/aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/main/java/org/apache/aries/blueprint/di/AbstractRecipe.java?rev=1341907&r1=1341906&r2=1341907&view=diff
==============================================================================
--- aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/main/java/org/apache/aries/blueprint/di/AbstractRecipe.java (original)
+++ aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/main/java/org/apache/aries/blueprint/di/AbstractRecipe.java Wed May 23 15:43:11 2012
@@ -106,10 +106,30 @@ public abstract class AbstractRecipe imp
         if (typeName == null) {
             return null;
         }
+        return doLoadType(typeName, fromClassLoader, true);
+    }
+
+    private ReifiedType doLoadType(String typeName, ClassLoader fromClassLoader, 
+                                   boolean checkNestedIfFailed) {
         try {
             return GenericType.parse(typeName, fromClassLoader != null ? fromClassLoader : ExecutionContext.Holder.getContext());
         } catch (ClassNotFoundException e) {
-            throw new ComponentDefinitionException("Unable to load class " + typeName + " from recipe " + this, e);
+            String errorMessage = "Unable to load class " + typeName + " from recipe " + this;
+            if (checkNestedIfFailed) {
+                int lastDot = typeName.lastIndexOf('.');
+                if (lastDot > 0 && lastDot < typeName.length()) {
+                    String nestedTypeName = typeName.substring(0, lastDot)
+                            + "$" + typeName.substring(lastDot + 1);
+                    try {
+                        return doLoadType(nestedTypeName, fromClassLoader, false);
+                    } catch (ComponentDefinitionException e2) {
+                        // ignore, the recursive call will throw this exception,
+                        // but ultimately the exception referencing the original
+                        // typeName has to be thrown
+                    }
+                }
+            }
+            throw new ComponentDefinitionException(errorMessage, e);
         }
     }
 

Propchange: aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/
------------------------------------------------------------------------------
  Merged /aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries:r1341886

Copied: aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java (from r1341886, aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java)
URL: http://svn.apache.org/viewvc/aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java?p2=aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java&p1=aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java&r1=1341886&r2=1341907&rev=1341907&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java (original)
+++ aries/branches/blueprint-0.3.2-fixes/blueprint-core/src/test/java/org/apache/aries/blueprint/BeanLoadingTest.java Wed May 23 15:43:11 2012
@@ -19,7 +19,7 @@
 package org.apache.aries.blueprint;
 
 import org.apache.aries.blueprint.di.Repository;
-import org.apache.aries.blueprint.parser.ComponentDefinitionRegistryImpl;
+import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
 import org.apache.aries.blueprint.pojos.SimpleBean;
 
 public class BeanLoadingTest extends AbstractBlueprintTest {