You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/04/13 00:52:04 UTC

svn commit: r528273 - /incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java

Author: rfeng
Date: Thu Apr 12 15:52:04 2007
New Revision: 528273

URL: http://svn.apache.org/viewvc?view=rev&rev=528273
Log:
Find the binding sub-interface from the binding class

Modified:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=528273&r1=528272&r2=528273
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Thu Apr 12 15:52:04 2007
@@ -64,7 +64,8 @@
     private final Map<Class<? extends Implementation>, ComponentBuilder> componentBuilders = new HashMap<Class<? extends Implementation>, ComponentBuilder>();
     private final Map<Class<? extends Binding>, BindingBuilder<? extends Binding>> bindingBuilders = new HashMap<Class<? extends Binding>, BindingBuilder<? extends Binding>>();
 
-    public BuilderRegistryImpl(@org.osoa.sca.annotations.Reference ScopeRegistry scopeRegistry) {
+    public BuilderRegistryImpl(@org.osoa.sca.annotations.Reference
+    ScopeRegistry scopeRegistry) {
         this.scopeRegistry = scopeRegistry;
     }
 
@@ -79,15 +80,24 @@
     public <B extends Binding> void register(Class<B> implClass, BindingBuilder<B> builder) {
         bindingBuilders.put(implClass, builder);
     }
-    
+
     // FIXME: Hack to get the registry working
     private <T extends Implementation> Class<T> getImplementationType(Class<?> implClass) {
-        for(Class<?> interfaze: JavaIntrospectionHelper.getAllInterfaces(implClass)) {
-            if(interfaze!=Implementation.class && Implementation.class.isAssignableFrom(interfaze)) {
-                return (Class<T>) interfaze;
+        for (Class<?> interfaze : JavaIntrospectionHelper.getAllInterfaces(implClass)) {
+            if (interfaze != Implementation.class && Implementation.class.isAssignableFrom(interfaze)) {
+                return (Class<T>)interfaze;
+            }
+        }
+        return (Class<T>)implClass;
+    }
+
+    private <T extends Binding> Class<T> getBindingType(Class<?> bindingClass) {
+        for (Class<?> interfaze : JavaIntrospectionHelper.getAllInterfaces(bindingClass)) {
+            if (interfaze != Binding.class && Binding.class.isAssignableFrom(interfaze)) {
+                return (Class<T>)interfaze;
             }
         }
-        return (Class<T>) implClass;
+        return (Class<T>)bindingClass;
     }
 
     @SuppressWarnings("unchecked")
@@ -108,7 +118,7 @@
             properties.put(p.getName(), p);
         }
         component.setDefaultPropertyValues(properties);
-        
+
         // FIXME: How to deal scopes?
         // Scope scope = componentDef.getImplementation().getScope();
         Scope scope = Scope.STATELESS;
@@ -165,7 +175,7 @@
         for (Binding definition : serviceDefinition.getBindings()) {
             Class<?> bindingClass = definition.getClass();
             // noinspection SuspiciousMethodCalls
-            BindingBuilder bindingBuilder = bindingBuilders.get(bindingClass);
+            BindingBuilder bindingBuilder = bindingBuilders.get(getBindingType(bindingClass));
             if (bindingBuilder == null) {
                 throw new NoRegisteredBuilderException("No builder registered for type", bindingClass.getName());
             }
@@ -193,7 +203,7 @@
         for (Binding bindingDefinition : referenceDefinition.getBindings()) {
             Class<?> bindingClass = bindingDefinition.getClass();
             // noinspection SuspiciousMethodCalls
-            BindingBuilder bindingBuilder = bindingBuilders.get(bindingClass);
+            BindingBuilder bindingBuilder = bindingBuilders.get(getBindingType(bindingClass));
             ReferenceBinding binding = bindingBuilder.build(referenceDefinition, bindingDefinition, context);
             reference.addReferenceBinding(binding);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org