Improved implementation for
https://bugs.eclipse.org/bugs/show_bug.cgi?id=569910

Change-Id: I0000000000000000000000000000000000000000
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
index 3e2f9f5..4962026 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: ECF RS Example Timeservice Consumer DS
 Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.ds
 Automatic-Module-Name: com.mycorp.examples.timeservice.consumer.ds
-Bundle-Version: 1.0.300.qualifier
+Bundle-Version: 1.0.400.qualifier
 Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: com.mycorp.examples.timeservice;version="[2.0.0,3.0.0)",
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/TimeServiceConsumer.generic.edeffile.product b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/TimeServiceConsumer.generic.edeffile.product
new file mode 100644
index 0000000..26f8e08
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/TimeServiceConsumer.generic.edeffile.product
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product name="TimeServiceConsumer Generic EDEF File-based Discovery" uid="com.mycorp.examples.timeservice.consumer.generic.edeffile.product" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
+
+   <configIni use="default">
+   </configIni>
+
+   <launcherArgs>
+      <programArgs>-consoleLog -console
+      </programArgs>
+      <vmArgs>-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true
+      </vmArgs>
+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+      </vmArgsMac>
+   </launcherArgs>
+
+   <windowImages/>
+
+   <launcher>
+      <win useIco="false">
+         <bmp/>
+      </win>
+   </launcher>
+
+   <vm>
+      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows>
+   </vm>
+
+   <plugins>
+      <plugin id="com.mycorp.examples.timeservice.async"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.ds"/>
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery"/>
+      <plugin id="org.apache.felix.gogo.command"/>
+      <plugin id="org.apache.felix.gogo.runtime"/>
+      <plugin id="org.apache.felix.gogo.shell"/>
+      <plugin id="org.apache.felix.scr"/>
+      <plugin id="org.eclipse.core.jobs"/>
+      <plugin id="org.eclipse.ecf"/>
+      <plugin id="org.eclipse.ecf.console"/>
+      <plugin id="org.eclipse.ecf.discovery"/>
+      <plugin id="org.eclipse.ecf.identity"/>
+      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.console"/>
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>
+      <plugin id="org.eclipse.ecf.provider"/>
+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice"/>
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy"/>
+      <plugin id="org.eclipse.ecf.sharedobject"/>
+      <plugin id="org.eclipse.equinox.common"/>
+      <plugin id="org.eclipse.equinox.concurrent"/>
+      <plugin id="org.eclipse.equinox.console"/>
+      <plugin id="org.eclipse.equinox.event"/>
+      <plugin id="org.eclipse.osgi"/>
+      <plugin id="org.eclipse.osgi.services"/>
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
+      <plugin id="org.eclipse.osgi.util"/>
+   </plugins>
+
+   <configurations>
+      <plugin id="com.mycorp.examples.timeservice.async" autoStart="true" startLevel="0" />
+      <plugin id="com.mycorp.examples.timeservice.consumer.filediscovery" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.command" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.runtime" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.gogo.shell" autoStart="true" startLevel="0" />
+      <plugin id="org.apache.felix.scr" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.core.jobs" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.discovery" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.identity" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.provider.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.remoteservice.asyncproxy" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.ecf.sharedobject" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.concurrent" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.console" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+      <plugin id="org.eclipse.osgi.util" autoStart="true" startLevel="0" />
+   </configurations>
+
+</product>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
index e9e1c55..aa98c54 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
@@ -5,7 +5,8 @@
                launch/,\
                about.html,\
                runningexample.readme.txt,\
-               TimeServiceConsumer.generic.zeroconf.product
+               TimeServiceConsumer.generic.zeroconf.product,\
+               TimeServiceConsumer.generic.edeffile.product
 source.. = src/
 src.includes = launch/,\
                about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/pom.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/pom.xml
index 6c79415..37ed53d 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/pom.xml
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>com.mycorp.examples.timeservice.consumer.ds</artifactId>
-  <version>1.0.300-SNAPSHOT</version>
+  <version>1.0.400-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
index 60e1b73..16c132a 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
 Bundle-Version: 1.2.102.qualifier
 Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Remote-Service: timeserviceendpointdescription.xml
+Remote-Service: edef/
 Require-Capability: osgi.extender; filter:=(&(osgi.extender=osgi.remoteserviceadmin) (version>=1.1) (!(version>=2.0))),
  osgi.extender;filter:="(&(osgi.extender=osgi.remoteserviceadmin.localdiscovery)(version>=1.0)(!(version>=2.0)))"
 
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties
index 42b1d7f..6d33315d 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/build.properties
@@ -2,7 +2,9 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               timeserviceendpointdescription.xml,\
-               about.html
-src.includes = timeserviceendpointdescription.xml,\
+               edef/timeserviceendpointdescription.xml,\
+               about.html,\
+               edef/default.properties,\
+               edef/timeserviceendpointdescription.properties
+src.includes = edef/timeserviceendpointdescription.xml,\
                about.html
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/default.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/default.properties
new file mode 100644
index 0000000..9c2e569
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/default.properties
@@ -0,0 +1,5 @@
+# other properties required by RSA specification (chap 122 in compendium spec)
+service.imported=true
+endpoint.framework.uuid:uuid= 
+endpoint.id:uuid= 
+endpoint.service.id:Long=0
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/timeserviceendpointdescription.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/timeserviceendpointdescription.properties
new file mode 100644
index 0000000..3942825
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/timeserviceendpointdescription.properties
@@ -0,0 +1,11 @@
+# service type properties...service interface and version
+objectClass:array=com.mycorp.examples.timeservice.ITimeService
+endpoint.package.version.com.mycorp.examples.timeservice=2.0.0
+# ecf properties to select and configure distribution provider
+ecf.endpoint.id=ecftcp://localhost:3288/server
+ecf.endpoint.id.ns=org.eclipse.ecf.core.identity.StringID
+ecf.endpoint.ts:Long:nanoTime=0
+# rsa properties to select and configure distribution provider
+service.imported.configs:array=ecf.generic.server
+remote.configs.supported:array=ecf.generic.server
+remote.intents.supported:array=passByValue,exactlyOnce,ordered
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/timeserviceendpointdescription.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/timeserviceendpointdescription.xml
new file mode 100644
index 0000000..d2fda97
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/edef/timeserviceendpointdescription.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
+  <endpoint-description>
+  </endpoint-description>
+</endpoint-descriptions>
\ No newline at end of file
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
deleted file mode 100644
index 156b074..0000000
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
-  <endpoint-description>
-    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://localhost:3288/server"/>
-    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
-    <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
-    <property name="endpoint.framework.uuid" value-type="String" value="20cc5d57-e8f0-0012-192b-c570b422d1f9"/>
-    <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9ea"/>
-    <property name="endpoint.package.version.com.mycorp.examples.timeservice" value-type="String" value="1.0.0"/>
-    <property name="endpoint.service.id" value-type="Long" value="0"/>
-    <property name="objectClass" value-type="String">
-      <array>
-        <value>com.mycorp.examples.timeservice.ITimeService</value>
-      </array>
-    </property>
-    <property name="remote.configs.supported" value-type="String">
-      <array>
-        <value>ecf.generic.server</value>
-      </array>
-    </property>
-    <property name="remote.intents.supported" value-type="String">
-      <array>
-        <value>passByValue</value>
-        <value>exactlyOnce</value>
-        <value>ordered</value>
-      </array>
-    </property>
-    <property name="service.id" value-type="Long" value="66"/>
-    <property name="service.imported" value-type="String" value="true"/>
-    <property name="service.imported.configs" value-type="String">
-      <array>
-        <value>ecf.generic.server</value>
-      </array>
-    </property>
-  </endpoint-description>
-</endpoint-descriptions>
\ No newline at end of file
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
index de6996c..e95d11e 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
@@ -390,7 +390,15 @@
 		return mergeProperties(copyProperties(serviceReference, new HashMap()), overrides);
 	}
 
+	public static Map mergePropertiesRaw(final Map<String,Object> source, final Map<String,Object> overrides) {
+		return mergeProperties0(source, overrides, true);
+	}
+	
 	public static Map mergeProperties(final Map<String, Object> source, final Map<String, Object> overrides) {
+		return mergeProperties0(source, overrides, false);
+	}
+	
+	public static Map mergeProperties0(final Map<String, Object> source, final Map<String, Object> overrides, boolean raw) {
 
 		// copy to target from service reference
 		final Map target = copyProperties(source, new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER));
@@ -398,18 +406,16 @@
 		// now do actual merge
 		for (final String key : overrides.keySet()) {
 			// skip keys not allowed
-			if (Constants.SERVICE_ID.equals(key) || Constants.OBJECTCLASS.equals(key)) {
+			if (!raw && (Constants.SERVICE_ID.equals(key) || Constants.OBJECTCLASS.equals(key))) {
 				continue;
 			}
-			// to lower case
-			String k = key.toLowerCase();
 			// remove from target if exists
-			target.remove(k);
+			target.remove(key);
 			// get value associated with key
-			Object value = overrides.get(k);
+			Object value = overrides.get(key);
 			// if value not null then put new key->value into target
 			if (value != null) {
-				target.put(k, value);
+				target.put(key, value);
 			}
 		}
 		return target;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
index af00591..8cc2ea3 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
@@ -75,6 +75,7 @@
 /**
  * Implementation of EndpointDescription discovery mechanism, using any/all ECF
  * discovery providers (implementers if {@link IDiscoveryLocator}.
+ * 
  * @since 4.8
  * 
  */
@@ -949,6 +950,10 @@
 
 		protected org.osgi.service.remoteserviceadmin.EndpointDescription[] handleEndpointDescriptionFile(Bundle bundle,
 				URL fileURL) {
+
+			trace("handleEndpointDescriptionFile", //$NON-NLS-1$
+					"edef file detected.  BundleId=" + bundle.getBundleId() + " fileURL=" + fileURL + " found"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
 			InputStream ins = null;
 			Map<String, Object> mergeProperties = findOverrideProperties(bundle, fileURL);
 			try {
@@ -1266,8 +1271,12 @@
 			switch (simpleType) {
 			case "long": //$NON-NLS-1$
 			case "Long": //$NON-NLS-1$
-				if ("unique".equals(this.type2)) { //$NON-NLS-1$
+				if ("unique".equalsIgnoreCase(this.type2)) { //$NON-NLS-1$
 					return getNextLong();
+				} else if ("nanoTime".equalsIgnoreCase(this.type2)) { //$NON-NLS-1$
+					return System.nanoTime();
+				} else if ("milliTime".equalsIgnoreCase(this.type2)) { //$NON-NLS-1$
+					return System.currentTimeMillis();
 				}
 				return getSimpleValue(Long.class, value);
 			case "double": //$NON-NLS-1$
@@ -1396,31 +1405,35 @@
 		Map<String, Object> mergedProps = new HashMap<String, Object>();
 		URL defaultPropsFileURL = getDefaultPropsURLFromEDFileURL(fileURL);
 		if (defaultPropsFileURL != null) {
+			trace("handleEndpointDescriptionFile", //$NON-NLS-1$
+					"Attempting to load default.properties.  BundleId=" + bundle.getBundleId() + " defaultPropsFileURL=" //$NON-NLS-1$ //$NON-NLS-2$
+							+ defaultPropsFileURL);
 			try {
-				mergedProps = PropertiesUtil.mergeProperties(mergedProps,
+				mergedProps = PropertiesUtil.mergePropertiesRaw(mergedProps,
 						processProperties(loadProperties(defaultPropsFileURL)));
-				LogUtility.logWarning("findOverrideProperties", DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, getClass(), //$NON-NLS-1$
-						"loaded default properties for edef file=" + fileURL.getFile() //$NON-NLS-1$
-								+ " with default properties file=" //$NON-NLS-1$
-								+ defaultPropsFileURL.getFile());
+				trace("findOverrideProperties", "loaded default.properties file=" + defaultPropsFileURL.getFile() //$NON-NLS-1$ //$NON-NLS-2$
+						+ " properties loaded=" //$NON-NLS-1$
+						+ mergedProps);
 			} catch (IOException e) {
 				LogUtility.logWarning("findOverrideProperties", DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, getClass(), //$NON-NLS-1$
-						"Could not load default properties fileUrl=" + defaultPropsFileURL + ",fileUrl=" //$NON-NLS-1$ //$NON-NLS-2$
-								+ fileURL.getFile(),
-						e);
+						"Could not load default properties file=" + defaultPropsFileURL + ",edef fileUrl=" //$NON-NLS-1$ //$NON-NLS-2$
+								+ fileURL.getFile());
 			}
 		}
 		URL propsFileURL = getPropsURLFromEDFileURL(fileURL);
 		if (propsFileURL != null) {
+			trace("handleEndpointDescriptionFile", //$NON-NLS-1$
+					"Attemping to load <file>.properties.  BundleId=" + bundle.getBundleId() + " propsFileURL=" //$NON-NLS-1$ //$NON-NLS-2$
+							+ propsFileURL);
 			try {
-				mergedProps = PropertiesUtil.mergeProperties(mergedProps,
+				mergedProps = PropertiesUtil.mergePropertiesRaw(mergedProps,
 						processProperties(loadProperties(propsFileURL)));
-				LogUtility.logWarning("findOverrideProperties", DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, getClass(), //$NON-NLS-1$
-						"loaded override properties for edef file=" + fileURL.getFile() + " with properties file=" //$NON-NLS-1$ //$NON-NLS-2$
-								+ propsFileURL.getFile());
+				trace("findOverrideProperties", //$NON-NLS-1$
+						"loaded override properties file=" + fileURL.getFile() + " merged Properties=" //$NON-NLS-1$ //$NON-NLS-2$
+								+ mergedProps);
 			} catch (IOException e) {
 				LogUtility.logWarning("findOverrideProperties", DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, getClass(), //$NON-NLS-1$
-						"Could not load properties fileUrl=" + propsFileURL + ",fileUrl=" + fileURL.getFile(), e); //$NON-NLS-1$ //$NON-NLS-2$
+						"Could not load properties fileUrl=" + propsFileURL + ",fileUrl=" + fileURL.getFile()); //$NON-NLS-1$ //$NON-NLS-2$
 			}
 		}
 		return (!mergedProps.isEmpty()) ? mergedProps : null;
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
index 6735260..b2bc52b 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
@@ -49,13 +49,19 @@
 		// For each one parsed, get properties and
 		for (EndpointDescriptionParser.EndpointDescription ed : parsedDescriptions) {
 			Map<String, Object> parsedProperties = ed.getProperties();
+			LogUtility.trace("readEndpointDescriptions", DebugOptions.ENDPOINT_DESCRIPTION_READER, getClass(), //$NON-NLS-1$
+					"parsed properties=" + parsedProperties); //$NON-NLS-1$
 			Map<String, Object> mergedProperties = null;
 			if (overrideProperties != null) {
+				LogUtility.trace("readEndpointDescriptions", DebugOptions.ENDPOINT_DESCRIPTION_READER, getClass(), //$NON-NLS-1$
+						"override properties=" + overrideProperties); //$NON-NLS-1$
 				mergedProperties = mergeWithParsed(parsedProperties, overrideProperties);
 			} else {
 				mergedProperties = parsedProperties;
 			}
 			try {
+				LogUtility.trace("readEndpointDescriptions", DebugOptions.ENDPOINT_DESCRIPTION_READER, getClass(), //$NON-NLS-1$
+						"endpoint description properties=" + mergedProperties); //$NON-NLS-1$
 				results.add(new EndpointDescription(mergedProperties));
 			} catch (Exception e) {
 				LogUtility.logError("readEndpointDescriptions", //$NON-NLS-1$
@@ -73,7 +79,7 @@
 	 */
 	protected Map<String, Object> mergeWithParsed(Map<String, Object> parsedProperties,
 			Map<String, Object> mergeProperties) {
-		return PropertiesUtil.mergeProperties(parsedProperties, mergeProperties);
+		return PropertiesUtil.mergePropertiesRaw(parsedProperties, mergeProperties);
 	}
 
 }