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