felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pde...@apache.org
Subject svn commit: r937771 - in /felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation: api/AdapterService.java api/BundleAdapterService.java api/ResourceAdapterService.java plugin/bnd/AnnotationCollector.java
Date Sun, 25 Apr 2010 09:40:13 GMT
Author: pderop
Date: Sun Apr 25 09:40:13 2010
New Revision: 937771

URL: http://svn.apache.org/viewvc?rev=937771&view=rev
Log:
fixed bug in adapter annotations: the services provided by adapters were specified as a Class,
instead of a Class array. Removed  checkClassImplements in AnnotationCollector.java

Modified:
    felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/AdapterService.java
    felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/BundleAdapterService.java
    felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/ResourceAdapterService.java
    felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java

Modified: felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/AdapterService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/AdapterService.java?rev=937771&r1=937770&r2=937771&view=diff
==============================================================================
--- felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/AdapterService.java
(original)
+++ felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/AdapterService.java
Sun Apr 25 09:40:13 2010
@@ -37,10 +37,10 @@ import java.lang.annotation.Target;
 public @interface AdapterService
 {
     /**
-     * Returns the adapter service interface . By default, the directly implemented interface
is used.
-     * @return The service interface to apply the adapter to.
+     * Returns the adapter service interface(s). By default, the directly implemented interface(s)
is (are) used.
+     * @return The service interface(s) provided by this adapter.
      */
-    Class<?> adapterService() default Object.class;
+    Class<?>[] adapterService() default {};
 
     /**
      * The adapter service properites. They will be added to the adapted service properties.

Modified: felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/BundleAdapterService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/BundleAdapterService.java?rev=937771&r1=937770&r2=937771&view=diff
==============================================================================
--- felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/BundleAdapterService.java
(original)
+++ felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/BundleAdapterService.java
Sun Apr 25 09:40:13 2010
@@ -49,10 +49,10 @@ public @Retention(RetentionPolicy.CLASS)
     int stateMask() default Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE;
     
     /**
-     * The interface to use when registering adapters. By default, the interface directly
implemented
-     * by the annotated class is used.
+     * The interface(s) to use when registering adapters. By default, the interface(s) directly
implemented
+     * by the annotated class is (are) used.
      */
-    Class<?> service() default Object.class;
+    Class<?>[] service() default {};
     
     /**
      * Additional properties to use with the service registration

Modified: felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/ResourceAdapterService.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/ResourceAdapterService.java?rev=937771&r1=937770&r2=937771&view=diff
==============================================================================
--- felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/ResourceAdapterService.java
(original)
+++ felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/api/ResourceAdapterService.java
Sun Apr 25 09:40:13 2010
@@ -42,9 +42,9 @@ public @interface ResourceAdapterService
     String filter();
 
     /**
-     * The interface to use when registering adapters
+     * The interface(s) to use when registering adapters
      */
-    Class<?> service() default Object.class;
+    Class<?>[] service() default {};
 
     /**
      * Additional properties to use with the adapter service registration

Modified: felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java?rev=937771&r1=937770&r2=937771&view=diff
==============================================================================
--- felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
(original)
+++ felix/trunk/dependencymanager/annotation/src/main/java/org/apache/felix/dm/annotation/plugin/bnd/AnnotationCollector.java
Sun Apr 25 09:40:13 2010
@@ -659,7 +659,6 @@ public class AnnotationCollector extends
             info.addParam(Params.service, m_interfaces[0]);
         } else
         {
-            checkClassImplements(annotation, Params.service);
             info.addClassParam(annotation, Params.service, null);
         }
     }
@@ -694,27 +693,7 @@ public class AnnotationCollector extends
         parseParameters(annotation, Params.adapterProperties, info);
 
         // Parse the optional adapter service (use directly implemented interface by default).
-        Object adapterService = annotation.get(Params.adapterService.toString());
-        if (adapterService == null) {
-            if (m_interfaces == null)
-            {
-                throw new IllegalStateException("Invalid AdapterService annotation: " +
-                    "the adapterService attribute has not been set and the class " + m_className
+ 
-                    " does not implement any interfaces");
-            }
-            if (m_interfaces.length != 1) 
-            {
-                throw new IllegalStateException("Invalid AdapterService annotation: " +
-                    "the adapterService attribute has not been set and the class " + m_className
+
-                    " implements more than one interface");
-            }
-            
-            info.addParam(Params.adapterService, m_interfaces[0]);
-        } else 
-        {
-            checkClassImplements(annotation, Params.adapterService);
-            info.addClassParam(annotation, Params.adapterService, null);
-        }
+        info.addClassParam(annotation, Params.adapterService, m_interfaces);
     }
 
     /**
@@ -747,27 +726,7 @@ public class AnnotationCollector extends
         parseParameters(annotation, Params.properties, info);
 
         // Parse the optional adapter service (use directly implemented interface by default).
-        Object service = annotation.get(Params.service.toString());
-        if (service == null) {
-            if (m_interfaces == null)
-            {
-                throw new IllegalStateException("Invalid BundleAdapterService annotation:
" +
-                    "the service attribute has not been set and the class " + m_className
+ 
-                    " does not implement any interfaces");
-            }
-            if (m_interfaces.length != 1) 
-            {
-                throw new IllegalStateException("Invalid AdapterService annotation: " +
-                    "the service attribute has not been set and the class " + m_className
+
-                    " implements more than one interface");
-            }
-            
-            info.addParam(Params.service, m_interfaces[0]);
-        } else 
-        {
-            checkClassImplements(annotation, Params.service);
-            info.addClassParam(annotation, Params.service, null);
-        }
+        info.addClassParam(annotation, Params.service, m_interfaces);
         
         // Parse propagate attribute
         info.addParam(annotation, Params.propagate, Boolean.FALSE);
@@ -800,27 +759,7 @@ public class AnnotationCollector extends
         parseParameters(annotation, Params.properties, info);
 
         // Parse the optional adapter service (use directly implemented interface by default).
-        Object service = annotation.get(Params.service.toString());
-        if (service == null) {
-            if (m_interfaces == null)
-            {
-                throw new IllegalStateException("Invalid ResourceAdapterService annotation:
" +
-                    "the service attribute has not been set and the class " + m_className
+ 
-                    " does not implement any interfaces");
-            }
-            if (m_interfaces.length != 1) 
-            {
-                throw new IllegalStateException("Invalid ResourceAdapterService annotation:
" +
-                    "the service attribute has not been set and the class " + m_className
+
-                    " implements more than one interface");
-            }
-            
-            info.addParam(Params.service, m_interfaces[0]);
-        } else 
-        {
-            checkClassImplements(annotation, Params.service);
-            info.addClassParam(annotation, Params.service, null);
-        }
+        info.addClassParam(annotation, Params.service, m_interfaces);
         
         // Parse propagate attribute
         info.addParam(annotation, Params.propagate, Boolean.FALSE);
@@ -866,32 +805,6 @@ public class AnnotationCollector extends
     }
 
     /**
-     * Checks if an annotation attribute references an implemented interface. 
-     * @param annotation the parsed annotation
-     * @param attribute an annotation attribute that references an interface this class must
-     * implement.
-     */
-    private void checkClassImplements(Annotation annotation, Params attribute)
-    {
-        String iface = annotation.get(attribute.toString());
-        iface = parseClass(iface, m_classPattern, 1);
-        
-        if (m_interfaces != null)
-        {
-            for (String implemented : m_interfaces)
-            {
-                if (implemented.equals(iface))
-                {
-                    return;
-                }
-            }
-        }
-
-        throw new IllegalArgumentException("Class " + m_className + " does not implement
the "
-            + iface + " interface.");
-    }
-    
-    /**
      * Parses a Param annotation (which represents a list of key-value pari).
      * @param annotation the annotation where the Param annotation is defined
      * @param attribute the attribute name which is of Param type



Mime
View raw message