Sync bndlib source
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1364196 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java b/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java
index 1054896..b58b775 100644
--- a/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java
+++ b/bundleplugin/src/main/java/aQute/bnd/component/ComponentDef.java
@@ -22,9 +22,9 @@
final static String NAMESPACE_STEM = "http://www.osgi.org/xmlns/scr";
final List<String> properties = new ArrayList<String>();
final MultiMap<String,String> property = new MultiMap<String,String>();
- final Map<String,ReferenceDef> references = new TreeMap<String,ReferenceDef>();
+ final Map<String,ReferenceDef> references = new LinkedHashMap<String,ReferenceDef>();
- Version version = AnnotationReader.V1_1;
+ Version version = AnnotationReader.V1_0;
String name;
String factory;
Boolean immediate;
@@ -72,6 +72,8 @@
} else if (servicefactory != null && servicefactory)
analyzer.warning("The servicefactory:=true directive is set but no service is provided, ignoring it");
+ if (configurationPolicy != null)
+ version = ReferenceDef.max(version, AnnotationReader.V1_1);
if (configurationPid != null)
version = ReferenceDef.max(version, AnnotationReader.V1_2);
@@ -108,6 +110,12 @@
propertyTags.add(property);
}
}
+
+ void sortReferences() {
+ Map<String, ReferenceDef> temp = new TreeMap(references);
+ references.clear();
+ references.putAll(temp);
+ }
/**
* Returns a tag describing the component element.
@@ -115,11 +123,12 @@
* @return a component element
*/
Tag getTag() {
- Tag component = new Tag("scr:component");
+ String xmlns = this.xmlns;
+ if (xmlns == null && version != AnnotationReader.V1_0)
+ xmlns = NAMESPACE_STEM + "/v" + version;
+ Tag component = new Tag(xmlns == null? "component": "scr:component");
if (xmlns != null)
component.addAttribute("xmlns:scr", xmlns);
- else
- component.addAttribute("xmlns:scr", NAMESPACE_STEM + "/v" + version);
component.addAttribute("name", name);