Changed Bundle-Version of UPnP base driver, now it match the value 
shown by the jar artifact
Fixed with hack the order of XML entites for the UPnP Exported device 
(FELIX-79)



git-svn-id: https://svn.apache.org/repos/asf/incubator/felix/trunk@416765 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.felix.upnp.basedriver/pom.xml b/org.apache.felix.upnp.basedriver/pom.xml
index 79c981f..b50771d 100644
--- a/org.apache.felix.upnp.basedriver/pom.xml
+++ b/org.apache.felix.upnp.basedriver/pom.xml
@@ -56,7 +56,7 @@
           <osgiManifest>

             <bundleName>UPnPBaseDriver</bundleName>

             <bundleVendor>Apache Software Foundation</bundleVendor>

-            <bundleVersion>1.0.0</bundleVersion>

+            <bundleVersion>0.1.0</bundleVersion>

             <bundleDescription>

                	A Bundle implementation of the UPnP Service Specification R4 (not yet)

             </bundleDescription>

diff --git a/org.apache.felix.upnp.basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/BuildDevice.java b/org.apache.felix.upnp.basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/BuildDevice.java
index 64864eb..a960d8d 100644
--- a/org.apache.felix.upnp.basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/BuildDevice.java
+++ b/org.apache.felix.upnp.basedriver/src/main/java/org/apache/felix/upnp/basedriver/export/BuildDevice.java
@@ -96,16 +96,16 @@
 		devUPnP.setManufactureURL((String) sr.getProperty(UPnPDevice.MANUFACTURER_URL));
 		devUPnP.setModelDescription((String) sr.getProperty(UPnPDevice.MODEL_DESCRIPTION));
 		devUPnP.setModelName((String) sr.getProperty(UPnPDevice.MODEL_NAME));
-		devUPnP.setUDN((String) sr.getProperty(UPnPDevice.UDN));
-		devUPnP.setPresentationURL((String) sr.getProperty(UPnPDevice.PRESENTATION_URL));
-		devUPnP.setUPC((String) sr.getProperty(UPnPDevice.UPC));
 		devUPnP.setModelNumber((String) sr.getProperty(UPnPDevice.MODEL_NUMBER));
 		devUPnP.setModelURL((String) sr.getProperty(UPnPDevice.MODEL_URL));
 		devUPnP.setSerialNumber((String) sr.getProperty(UPnPDevice.SERIAL_NUMBER));
+		devUPnP.setUDN((String) sr.getProperty(UPnPDevice.UDN));
+		devUPnP.setUPC((String) sr.getProperty(UPnPDevice.UPC));
 		devUPnP.setLocation("/gen-desc.xml");		
 
 		addServices("",devUPnP,sr);
 		addDevices("",devUPnP,sr);
+		devUPnP.setPresentationURL((String) sr.getProperty(UPnPDevice.PRESENTATION_URL));
 		
 		return devUPnP;
 	}
@@ -144,18 +144,19 @@
 		devUPnP.setManufactureURL((String) sr.getProperty(UPnPDevice.MANUFACTURER_URL));
 		devUPnP.setModelDescription((String) sr.getProperty(UPnPDevice.MODEL_DESCRIPTION));
 		devUPnP.setModelName((String) sr.getProperty(UPnPDevice.MODEL_NAME));
-		devUPnP.setUDN((String) sr.getProperty(UPnPDevice.UDN));
-		devUPnP.setPresentationURL((String) sr.getProperty(UPnPDevice.PRESENTATION_URL));
-		devUPnP.setUPC((String) sr.getProperty(UPnPDevice.UPC));
 		devUPnP.setModelNumber((String) sr.getProperty(UPnPDevice.MODEL_NUMBER));
 		devUPnP.setModelURL((String) sr.getProperty(UPnPDevice.MODEL_URL));
 		devUPnP.setSerialNumber((String) sr.getProperty(UPnPDevice.SERIAL_NUMBER));
+		devUPnP.setUDN((String) sr.getProperty(UPnPDevice.UDN));
+		devUPnP.setUPC((String) sr.getProperty(UPnPDevice.UPC));
 		devUPnP.setLocation(id+"/gen-desc.xml");		
 
 		addServices(id,devUPnP,sr);
 		addDevices(id,devUPnP,sr);
 
 		parent.addDevice(devUPnP); //		twa: essential!!!!!!!
+		devUPnP.setPresentationURL((String) sr.getProperty(UPnPDevice.PRESENTATION_URL));
+		
 	}
 	
 	/**
@@ -190,35 +191,7 @@
 			ser.setDescriptionURL(id+"/service/"+i+"/gen-desc.xml");
 			ser.setControlURL(id+"/service/"+i+"/ctrl");
 			ser.setEventSubURL(id+"/service/"+i+"/event");
-			
-			UPnPStateVariable[] vars = services[i].getStateVariables();
-			for (int j = 0; j < vars.length; j++) {
-				StateVariable var = new StateVariable();
-				var.setDataType(vars[j].getUPnPDataType());
-				var.setName(vars[j].getName());
-				var.setSendEvents(vars[j].sendsEvents());
-				String[] values = vars[j].getAllowedValues();
-				if(values!=null){
-					AllowedValueList avl = new AllowedValueList(values);
-					var.setAllowedValueList(avl);
-				}else if(vars[j].getMaximum()!= null){
-					AllowedValueRange avr = new AllowedValueRange(
-							vars[j].getMaximum(),
-							vars[j].getMinimum(),
-							vars[j].getStep()
-						);
-					var.setAllowedValueRange(avr);
-				}
-				if(vars[j].getDefaultValue()!=null)
-					try {
-						var.setDefaultValue(Converter.toString(
-								vars[j].getDefaultValue(),vars[j].getUPnPDataType()
-							));
-					} catch (Exception ignored) {
-					}
-				ser.addStateVariable(var);				
-			}
-			
+
 			UPnPAction[] actions = services[i].getActions();
 			for (int j = 0; j < actions.length; j++) {
 				Action act = new Action(ser.getServiceNode());
@@ -251,8 +224,36 @@
 				}
 				act.setArgumentList(al);
 				ser.addAction(act);
-			}
+			}			
 			
+			UPnPStateVariable[] vars = services[i].getStateVariables();
+			for (int j = 0; j < vars.length; j++) {
+				StateVariable var = new StateVariable();
+				var.setDataType(vars[j].getUPnPDataType());
+				var.setName(vars[j].getName());
+				var.setSendEvents(vars[j].sendsEvents());
+				String[] values = vars[j].getAllowedValues();
+				if(values!=null){
+					AllowedValueList avl = new AllowedValueList(values);
+					var.setAllowedValueList(avl);
+				}else if(vars[j].getMaximum()!= null){
+					AllowedValueRange avr = new AllowedValueRange(
+							vars[j].getMaximum(),
+							vars[j].getMinimum(),
+							vars[j].getStep()
+						);
+					var.setAllowedValueRange(avr);
+				}
+				if(vars[j].getDefaultValue()!=null)
+					try {
+						var.setDefaultValue(Converter.toString(
+								vars[j].getDefaultValue(),vars[j].getUPnPDataType()
+							));
+					} catch (Exception ignored) {
+					}
+				ser.addStateVariable(var);				
+			}
+						
 			Activator.bc.ungetService(sr);
 		}