You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gn...@apache.org on 2006/08/11 21:12:49 UTC

svn commit: r430865 - in /geronimo/xbean/trunk/xbean-server/src: main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java test/resources/org/apache/xbean/server/spring/loader/classpath-xbean.xml

Author: gnodet
Date: Fri Aug 11 12:12:49 2006
New Revision: 430865

URL: http://svn.apache.org/viewvc?rev=430865&view=rev
Log:
XBEAN-41: Improper abstract bean definitions handling

Modified:
    geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java
    geronimo/xbean/trunk/xbean-server/src/test/resources/org/apache/xbean/server/spring/loader/classpath-xbean.xml

Modified: geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java?rev=430865&r1=430864&r2=430865&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java (original)
+++ geronimo/xbean/trunk/xbean-server/src/main/java/org/apache/xbean/server/spring/configuration/SpringConfiguration.java Fri Aug 11 12:12:49 2006
@@ -30,6 +30,8 @@
 import org.apache.xbean.kernel.StringServiceName;
 import org.apache.xbean.spring.context.SpringApplicationContext;
 import org.apache.xbean.server.spring.loader.SpringLoader;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 
 /**
  * SpringConfiguration that registers and unregisters services that have been defined in a SpringApplicationContext.
@@ -142,14 +144,34 @@
     }
 
     private static Map buildServiceNameIndex(SpringApplicationContext applicationContext) {
-        String[] beanNames = applicationContext.getBeanDefinitionNames();
-        Map serviceNameIndex = new HashMap(beanNames.length);
-        for (int i = 0; i < beanNames.length; i++) {
-            String beanName = beanNames[i];
-            ServiceName serviceName = new StringServiceName(beanName);
-            serviceNameIndex.put(beanName, serviceName);
+        BeanDefinitionRegistry registry = null;
+        if (applicationContext instanceof BeanDefinitionRegistry) {
+            registry = (BeanDefinitionRegistry) applicationContext;
+        } else if (applicationContext.getBeanFactory() instanceof BeanDefinitionRegistry) {
+            registry = (BeanDefinitionRegistry) applicationContext.getBeanFactory(); 
+        }
+        if (registry != null) {
+            String[] beanNames = registry.getBeanDefinitionNames();
+            Map serviceNameIndex = new HashMap(beanNames.length);
+            for (int i = 0; i < beanNames.length; i++) {
+                String beanName = beanNames[i];
+                BeanDefinition def = registry.getBeanDefinition(beanName);
+                if (!def.isAbstract()) {
+                    ServiceName serviceName = new StringServiceName(beanName);
+                    serviceNameIndex.put(beanName, serviceName);
+                }
+            }
+            return serviceNameIndex;
+        } else {
+            String[] beanNames = applicationContext.getBeanDefinitionNames();
+            Map serviceNameIndex = new HashMap(beanNames.length);
+            for (int i = 0; i < beanNames.length; i++) {
+                String beanName = beanNames[i];
+                ServiceName serviceName = new StringServiceName(beanName);
+                serviceNameIndex.put(beanName, serviceName);
+            }
+            return serviceNameIndex;
         }
-        return serviceNameIndex;
     }
 
     protected static ClassLoader getClassLoader(SpringApplicationContext applicationContext) {

Modified: geronimo/xbean/trunk/xbean-server/src/test/resources/org/apache/xbean/server/spring/loader/classpath-xbean.xml
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-server/src/test/resources/org/apache/xbean/server/spring/loader/classpath-xbean.xml?rev=430865&r1=430864&r2=430865&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-server/src/test/resources/org/apache/xbean/server/spring/loader/classpath-xbean.xml (original)
+++ geronimo/xbean/trunk/xbean-server/src/test/resources/org/apache/xbean/server/spring/loader/classpath-xbean.xml Fri Aug 11 12:12:49 2006
@@ -10,5 +10,15 @@
   <bean name="FileSystemRepository" class="org.apache.xbean.server.repository.FileSystemRepository">
     <property name="root" value="${xbean.base.dir}/repository"/>
   </bean>
+  
+  <bean id="inheritedTestBean" abstract="true" class="javax.swing.JComponent">
+    <property name="autoscrolls" value="true"/>
+  </bean>
+
+  <bean id="inheritsWithDifferentClass" class="javax.swing.JButton"
+        parent="inheritedTestBean">
+    <property name="autoscrolls" value="false"/>
+  </bean>
+
 </beans>
 <!-- END SNIPPET: xml -->