FELIX-2929 :  Read @Property from interfaces of types annotated with @Component 

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1438508 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
index dfa5e99..a87a1ab 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
@@ -385,6 +385,28 @@
             }
         } while ( current != null);
 
+        // check service interfaces for properties
+        if ( container.getServiceDescription() != null ) {
+            for(final String interfaceName : container.getServiceDescription().getInterfaces()) {
+                try {
+                    final Class<?> interfaceClass = project.getClassLoader().loadClass(interfaceName);
+                    final ClassDescription interfaceDesc = this.scanner.getDescription(interfaceClass);
+                    if ( interfaceDesc != null ) {
+                        this.processProperties(interfaceDesc, container, ocd);
+                    }
+                } catch ( final SCRDescriptorFailureException sde) {
+                    this.logger.debug(sde.getMessage(), sde);
+                    iLog.addError(sde.getMessage(), interfaceName);
+                } catch ( final SCRDescriptorException sde) {
+                    this.logger.debug(sde.getSourceLocation() + " : " + sde.getMessage(), sde);
+                    iLog.addError(sde.getMessage(), sde.getSourceLocation());
+                } catch (ClassNotFoundException e) {
+                    this.logger.debug(e.getMessage(), e);
+                    iLog.addError(e.getMessage(), interfaceName);
+                }
+            }
+        }
+
         // global properties
         this.processGlobalProperties(desc, container.getProperties());