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());