FELIX-4378 : generate a metatype properties file if label/description are missing on @Component or @Property
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1559099 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 29ce548..b1fb78b 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
@@ -224,7 +224,7 @@
}
// and generate files
- result.setMetatypeFiles(MetaTypeIO.generateDescriptors(module, this.options, this.logger));
+ result.setMetatypeFiles(MetaTypeIO.generateDescriptors(module, this.project, this.options, this.logger));
result.setScrFiles(ComponentDescriptorIO.generateDescriptorFiles(module, this.options, logger));
return result;
@@ -310,13 +310,9 @@
ocd.setId( componentDesc.getName() );
if ( componentDesc.getLabel() != null ) {
ocd.setName( componentDesc.getLabel() );
- } else {
- ocd.setName( "%" + componentDesc.getName() + ".name");
}
if ( componentDesc.getDescription() != null ) {
ocd.setDescription( componentDesc.getDescription() );
- } else {
- ocd.setDescription( "%" + componentDesc.getName() + ".description");
}
// Factory pid
@@ -525,13 +521,9 @@
if (pd.getLabel() != null ) {
ad.setName(pd.getLabel());
- } else {
- ad.setName("%" + pd.getName() + ".name");
}
if (pd.getDescription() != null ) {
ad.setDescription(pd.getDescription());
- } else {
- ad.setDescription("%" + pd.getName() + ".description");
}
if ( pd.getUnbounded() == PropertyUnbounded.DEFAULT ) {
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
index e9c9ca9..49b55e8 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/MetaTypeIO.java
@@ -31,6 +31,7 @@
import org.apache.felix.scrplugin.Log;
import org.apache.felix.scrplugin.Options;
+import org.apache.felix.scrplugin.Project;
import org.apache.felix.scrplugin.SCRDescriptorException;
import org.apache.felix.scrplugin.helper.ComponentContainer;
import org.apache.felix.scrplugin.helper.ComponentContainerUtil;
@@ -78,6 +79,7 @@
private static final String OPTION_ELEMENT_QNAME = OPTION_ELEMENT;
public static List<String> generateDescriptors(final DescriptionContainer module,
+ final Project project,
final Options options,
final Log logger)
throws SCRDescriptorException {
@@ -93,6 +95,9 @@
final File parentDir = mtDir.getParentFile();
if (components.size() > 0) {
+ // check for metatype.properties
+ final File mtProps = new File(project.getClassesDirectory(), "OSGI-INF" + File.separator + "metatype" + File.separator + "metatype.properties");
+ final boolean oldStyle = mtProps.exists();
mtDir.mkdirs();
final List<String> fileNames = new ArrayList<String>();
@@ -107,16 +112,44 @@
for(final ComponentContainer cc : ccc.components) {
final MetatypeContainer mc = cc.getMetatypeContainer();
+ if ( mc.getName() == null ) {
+ if ( oldStyle ) {
+ mc.setName( "%" + cc.getComponentDescription().getName() + ".name");
+ } else {
+ mc.setName("Component " + cc.getComponentDescription().getName());
+ }
+ }
if ( mc.getName() != null && mc.getName().startsWith("%") ) {
allInlined = false;
}
+ if ( mc.getDescription() == null ) {
+ if ( oldStyle ) {
+ mc.setDescription("%" + cc.getComponentDescription().getName() + ".description");
+ } else {
+ mc.setDescription("Description for " + cc.getComponentDescription().getName());
+ }
+ }
if ( mc.getDescription() != null && mc.getDescription().startsWith("%") ) {
allInlined = false;
}
for(final MetatypeAttributeDefinition mad : mc.getProperties()) {
+ if ( mad.getName() == null ) {
+ if ( oldStyle ) {
+ mad.setName("%" + mad.getId() + ".name");
+ } else {
+ mad.setName("Property " + mad.getId());
+ }
+ }
if ( mad.getName() != null && mad.getName().startsWith("%") ) {
allInlined = false;
}
+ if ( mad.getDescription() == null ) {
+ if ( oldStyle ) {
+ mad.setDescription("%" + mad.getId() + ".description");
+ } else {
+ mad.setDescription("Description for " + mad.getId());
+ }
+ }
if ( mad.getDescription() != null && mad.getDescription().startsWith("%") ) {
allInlined = false;
}