Merge branch 'master' into 331383
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.classpath b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.classpath
deleted file mode 100644
index 2fbb7a2..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.gitignore b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
deleted file mode 100644
index 1acd148..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.osgi.services.discovery.local</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 5eedff0..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,69 +0,0 @@
-#Tue Sep 15 21:51:34 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/META-INF/MANIFEST.MF
deleted file mode 100644
index 4916da6..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,18 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.osgi.services.discovery.local
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.osgi.services.discovery.local.Activator
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Import-Package: javax.xml.parsers,
- org.eclipse.ecf.osgi.services.discovery,
- org.eclipse.osgi.framework.console;version="1.0.0",
- org.osgi.framework;version="1.4.0",
- org.osgi.service.log;version="1.3.0",
- org.osgi.util.tracker;version="1.4.0",
- org.w3c.dom
-Bundle-ActivationPolicy: lazy
-Bundle-Vendor: %pluginProvider
-Export-Package: org.eclipse.ecf.osgi.services.discovery.local
-Bundle-Localization: plugin
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/about.html b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/about.html
deleted file mode 100644
index ada977b..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/about.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>August 25, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>OSGi Materials</h4>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
-	<li>org/osgi</li>
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2006
-<br /><br />
-OSGi Alliance
-Bishop Ranch 6<br/>
-2400 Camino Ramon, Suite 375<br/>
-San Ramon, CA 94583 USA
-<br /><br />
-All Rights Reserved.
-</blockquote>
-
-<p>The OSGi Materials are provided to you under the terms and conditions of the Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</p>
-
-<p>Implementation of certain elements of the OSGi Materials may be subject to third party intellectual property rights, including without limitation, patent rights (such a third party may
-or may not be a member of the OSGi Alliance).  The OSGi Alliance and its members are not responsible and shall not be held responsible in any manner for identifying or failing to identify any or all such third party
-intellectual property rights.</p>
-
-<small>OSGi&trade; is a trademark, registered trademark, or service mark of The OSGi Alliance in the US and other countries. Java is a trademark,
-registered trademark, or service mark of Sun Microsystems, Inc. in the US and other countries. All other trademarks, registered trademarks, or
-service marks used in the Content are the property of their respective owners and are hereby recognized.</small>
-</body>
-</html>
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/build.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/build.properties
deleted file mode 100644
index 3a2416a..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/build.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               about.html,\
-               example-service-description-generic.xml,\
-               example-service-description-r-osgi.xml
-src.includes = about.html,\
-               example-service-description-generic.xml,\
-               example-service-description-r-osgi.xml
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-generic.xml b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-generic.xml
deleted file mode 100644
index b46e9e1..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-generic.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide
-interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
-      <property
-name="ecf.sp.cid">ecftcp://localhost:3787/server</property>
-      <property name="ecf.sp.cns">org.eclipse.ecf.core.identity.StringID</property>
-      <property name="ecf.sp.ect">ecf.generic.server</property>
-   </service-description>
-</service-descriptions>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-r-osgi.xml b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-r-osgi.xml
deleted file mode 100644
index fdd42a5..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/example-service-description-r-osgi.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-  <service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0">
-    <service-description>
-      <provide
-interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
-      <property
-name="ecf.sp.cid">r-osgi://localhost</property>
-      <property name="ecf.sp.cns">ecf.namespace.r_osgi</property>
-      <property name="ecf.sp.ect">ecf.r_osgi.peer</property>
-   </service-description>
-</service-descriptions>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/plugin.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/plugin.properties
deleted file mode 100644
index c6cce33..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# Copyright (c) 2009 Markus Alexander Kuppe and others. All rights reserved. This
-# program and the accompanying materials are made available under the terms of
-# the Eclipse Public License v1.0 which accompanies this distribution, and is
-#
-# Contributors:
-#   Markus Alexander Kuppe - initial API and implementation
-#################################################################################
-pluginName=ECF OSGi R4.2 Compendium Local Discovery
-pluginProvider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Activator.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Activator.java
deleted file mode 100644
index e9314e3..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Activator.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator implements BundleActivator {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.ecf.osgi.services.discovery.local";
-
-	// The shared instance
-	private static Activator plugin;
-
-	private LogService logService = null;
-	private ServiceTracker logServiceTracker;
-
-	private BundleContext context = null;
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	private ServiceRegistration commandProviderRegistration;
-
-	private ServiceDescriptionPublisher serviceDescriptionPublisher;
-	private ServiceRegistration serviceDescriptionPublisherRegistration;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext bc) throws Exception {
-		plugin = this;
-		context = bc;
-		logServiceTracker = new ServiceTracker(bc, LogService.class.getName(),
-				new ServiceTrackerCustomizer() {
-
-					private LogService logger = null;
-
-					public Object addingService(ServiceReference reference) {
-						if (logger == null) {
-							LogService logger = (LogService) context
-									.getService(reference);
-							setLogService(logger);
-							return logger;
-						}
-						return null;
-					}
-
-					public void modifiedService(ServiceReference reference,
-							Object service) {
-					}
-
-					public void removedService(ServiceReference reference,
-							Object service) {
-						context.ungetService(reference);
-						ServiceReference serviceRef = context
-								.getServiceReference(LogService.class.getName());
-						if (serviceRef == null) {
-							setLogService(null);
-						} else {
-							setLogService((LogService) context
-									.getService(serviceRef));
-						}
-					}
-
-				});
-		logServiceTracker.open();
-		discovery = new FileBasedDiscoveryImpl(bc, logService);
-		discovery.init();
-
-		commandProviderRegistration = context.registerService(
-				CommandProvider.class.getName(), new DiscoveryCommandProvider(
-						discovery), null);
-
-		// Register servicedescription publisher
-		serviceDescriptionPublisher = new ServiceDescriptionPublisher(discovery);
-		serviceDescriptionPublisherRegistration = context.registerService(
-				IServiceEndpointDescriptionPublisher.class.getName(),
-				serviceDescriptionPublisher, null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		if (commandProviderRegistration != null) {
-			commandProviderRegistration.unregister();
-			commandProviderRegistration = null;
-		}
-		if (serviceDescriptionPublisherRegistration != null) {
-			serviceDescriptionPublisherRegistration.unregister();
-			serviceDescriptionPublisherRegistration = null;
-		}
-		if (serviceDescriptionPublisher != null) {
-			serviceDescriptionPublisher.close();
-			serviceDescriptionPublisher = null;
-		}
-		logServiceTracker.close();
-		logServiceTracker = null;
-		discovery.destroy();
-		discovery = null;
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * 
-	 * @param loggerLogService
-	 *            instance to set
-	 */
-	void setLogService(LogService logger) {
-		logService = logger;
-		FileBasedDiscoveryImpl.setLogService(logService);
-	}
-
-	LogService getLogService() {
-		return logService;
-	}
-
-	public BundleContext getBundleContext() {
-		return context;
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/BundleTrackerImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/BundleTrackerImpl.java
deleted file mode 100644
index 731df71..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/BundleTrackerImpl.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleEvent;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.BundleTrackerCustomizer;
-import org.xml.sax.SAXException;
-
-public class BundleTrackerImpl implements BundleTrackerCustomizer {
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	private static final String REMOTESERVICE_LOCATION = "OSGI-INF"
-			+ File.separator + "remote-service";
-
-	private static final String REMOTESERVICE_MANIFESTHEADER = "Remote-Service";
-
-	// stores the bundle ids of the bundles that are checked for the static
-	// discovery informations
-	private Collection checkedBundles = Collections
-			.synchronizedList(new ArrayList());
-
-	private Map publishedServicesPerBundle = Collections
-			.synchronizedMap(new HashMap());
-
-	/**
-	 * 
-	 * @param disco
-	 *            the FileBasedDiscovery implementation that publishes and
-	 *            unpublishes file based seds.
-	 */
-	public BundleTrackerImpl(FileBasedDiscoveryImpl disco) {
-		discovery = disco;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.BundleTrackerCustomizer#addingBundle(org.osgi.framework.Bundle,
-	 *      org.osgi.framework.BundleEvent)
-	 */
-	public Object addingBundle(Bundle bundle, BundleEvent event) {
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO, "Adding bundle "
-				+ bundle.getSymbolicName() + " with event " + event);
-		checkedBundles.add(String.valueOf(bundle.getBundleId()));
-		return checkBundleAndPublishServices(bundle);
-	}
-
-	/**
-	 * @param bundle
-	 * @return
-	 */
-	private Bundle checkBundleAndPublishServices(Bundle bundle) {
-		Collection /* <URL> */remoteServiceFiles = null;
-		Collection /* <ServiceEndpointDescription> */publishedServices = null;
-		if ((remoteServiceFiles = getRemoteServiceInformationFilesFromBundle(bundle))
-				.size() == 0) {
-			return null;
-		}
-		Iterator/* <URL> */it = remoteServiceFiles.iterator();
-		publishedServices = new ArrayList();
-		while (it.hasNext()) {
-			// each file may contain more than ServiceDescription
-			Collection seds = createSEDsFromFile((URL) it.next());
-			Iterator /* <ServiceEndpointDescription> */sedIterator = seds
-					.iterator();
-			while (sedIterator.hasNext()) {
-				// publish each of them
-				ServiceEndpointDescription next = (ServiceEndpointDescription) sedIterator
-						.next();
-				discovery.publishService(next);
-				publishedServices.add(next);
-			}
-		}
-		publishedServicesPerBundle.put(bundle, publishedServices);
-		return bundle;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.BundleTrackerCustomizer#modifiedBundle(org.osgi.framework.Bundle,
-	 *      org.osgi.framework.BundleEvent, java.lang.Object)
-	 */
-	public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {
-		// ignored
-
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.BundleTrackerCustomizer#removedBundle(org.osgi.framework.Bundle,
-	 *      org.osgi.framework.BundleEvent, java.lang.Object)
-	 */
-	public void removedBundle(Bundle bundle, BundleEvent event, Object object) {
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO, "Removing bundle "
-				+ bundle.getSymbolicName() + " with event " + event);
-		Collection publishedServices = (Collection) publishedServicesPerBundle
-				.get(bundle);
-		if (publishedServices != null) {
-			Iterator it = publishedServices.iterator();
-			while (it.hasNext()) {
-				discovery.unpublishService((ServiceEndpointDescription) it
-						.next());
-			}
-		}
-		publishedServicesPerBundle.remove(bundle);
-		checkedBundles.remove(String.valueOf(bundle.getBundleId()));
-	}
-
-	/**
-	 * 
-	 * @param bundle
-	 *            the bundle to check
-	 * @return the URL list of Distributed OSGi compliant xml files. The list is
-	 *         empty if none are found.
-	 */
-	private Collection getRemoteServiceInformationFilesFromBundle(
-			final Bundle bundle) {
-		Collection result = new ArrayList();
-		String remote_services = (String) bundle.getHeaders().get(
-				REMOTESERVICE_MANIFESTHEADER);
-		if (remote_services != null) {
-			// the default has been overwritten
-			StringTokenizer tokenizer = new StringTokenizer(remote_services,
-					",");
-			while (tokenizer.hasMoreElements()) {
-				handleRemoteService(bundle, result, tokenizer);
-			}
-		} else {
-			// default location
-			Enumeration bundleEntries = bundle.findEntries(
-					REMOTESERVICE_LOCATION, "*.xml", true);
-			if (bundleEntries != null) {
-				while (bundleEntries.hasMoreElements()) {
-					result.add(bundleEntries.nextElement());
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @param bundle
-	 * @param result
-	 * @param tokenizer
-	 */
-	private void handleRemoteService(final Bundle bundle, Collection result,
-			StringTokenizer tokenizer) {
-		String token = tokenizer.nextToken().trim();
-		// fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=325664
-		int lastSlash = token.lastIndexOf("/");
-		// We set the path to '/' is not present at all in token (lastSlash == -1)
-		// or if the slash is first char (lastSlash==0)
-		String path = (lastSlash <= 0)?"/":token.substring(0,lastSlash);
-		int start = path.indexOf("${");
-		if (start >= 0) {
-			int end = path.indexOf("}");
-			String substring = path.substring(start + 2, end);
-			String property = System.getProperty(substring);
-			path = path.replaceAll("\\$\\{" + substring + "\\}", property);
-		}
-		// Also be sure to use lastSlash to get files
-		String files = token.substring(lastSlash+1,
-				token.length());
-		Enumeration enumeration = bundle.findEntries(path, files, false);
-		if (enumeration == null) {
-			// that was maybe an absolute file path so lets check that.
-			File f = new File(path + File.separator + files);
-			if (f.isFile() && f.exists()) {
-				try {
-					// we have file given
-					result.add(f.toURL());
-				} catch (MalformedURLException e) {
-					// ignore that location
-				}
-			} else if (f.isDirectory() && f.exists()) {
-				// if it is a directory and it does exist
-				addFilesToResult(result, f);
-			} else if (new File(path).isDirectory()) {
-				// if we have a directory extended with a wildcard file
-				// selector given
-				File directory = new File(path);
-				if (directory.exists() && files.equals("*.xml")) {
-					addFilesToResult(result, directory);
-				}
-			}
-		} else {
-			while (enumeration.hasMoreElements()) {
-				result.add(enumeration.nextElement());
-			}
-		}
-	}
-
-	/**
-	 * @param result
-	 * @param f
-	 */
-	private void addFilesToResult(Collection result, File f) {
-		File[] filesInTheDirectory = f.listFiles(new FilenameFilter() {
-
-			public boolean accept(File directory, String fileName) {
-				return (fileName.endsWith(".xml")) ? true : false;
-			}
-		});
-		for (int i = 0; i < filesInTheDirectory.length; i++) {
-			try {
-				result.add(filesInTheDirectory[i].toURL());
-			} catch (MalformedURLException e) {
-				// ignore the file and go on with the next one
-			}
-		}
-	}
-
-	/**
-	 * 
-	 * @param file
-	 *            the xml file containing valid Distributed OSGi service
-	 *            information
-	 * @return a ServiceEndpointDescription object containing the information
-	 *         from the file
-	 */
-	private Collection/* <ServiceEndpointDescription> */createSEDsFromFile(
-			final URL file) {
-		try {
-			InputStream inputStream = file.openStream();
-			return new ServiceDescriptionParser().load(inputStream);
-		} catch (FileNotFoundException e) {
-			log(file, e);
-		} catch (ParserConfigurationException e) {
-			log(file, e);
-		} catch (SAXException e) {
-			log(file, e);
-		} catch (IOException e) {
-			log(file, e);
-		}
-		return new ArrayList();
-	}
-
-	/**
-	 * @param file
-	 * @param e
-	 */
-	private void log(URL file, Exception e) {
-		e.printStackTrace();
-		FileBasedDiscoveryImpl.log(LogService.LOG_ERROR,
-				"Error during loading and reading of service descriptions from file "
-						+ file.getFile(), e);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DSTTracker.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DSTTracker.java
deleted file mode 100644
index 14a8e08..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DSTTracker.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * This class monitors the lifecycle of DiscoveredServiceTrackers. They will be
- * notified on registration and modification if any service has been published.
- * 
- * TODO: replace arg0 arg names with more descriptive ones
- */
-public class DSTTracker implements ServiceTrackerCustomizer {
-
-	// Map of DiscoveredServiceTracker, property map
-	private Map /* <DiscoveredServiceTracker, Map> */dsTrackers = null;
-
-	private BundleContext context = null;
-
-	/**
-	 * 
-	 * @param ctx
-	 */
-	public DSTTracker(final BundleContext ctx) {
-		context = ctx;
-		dsTrackers = Collections.synchronizedMap(new HashMap());
-	}
-
-	/**
-	 * @return a new instance of dsTracker map
-	 */
-	public Map getDsTrackers() {
-		return new HashMap(dsTrackers);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.osgi.framework.ServiceReference)
-	 */
-	public Object addingService(final ServiceReference dstTrackerReference) {
-		DiscoveredServiceTracker tracker = (DiscoveredServiceTracker) context
-				.getService(dstTrackerReference);
-		if (!dsTrackers.keySet().contains(tracker)) {
-			FileBasedDiscoveryImpl.log(LogService.LOG_INFO,
-					"adding service tracker " + tracker);
-			addTracker(dstTrackerReference);
-			Map changedFilterCriteria = determineChangedFilterProperties(
-					tracker, dstTrackerReference);
-			FileBasedDiscoveryImpl.notifyOnAvailableSEDs(tracker,
-					changedFilterCriteria);
-			return tracker;
-		}
-		return null;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void modifiedService(final ServiceReference dstTrackerReference,
-			final Object arg1) {
-		DiscoveredServiceTracker tracker = (DiscoveredServiceTracker) context
-				.getService(dstTrackerReference);
-		Map changedFilterCriteria = determineChangedFilterProperties(tracker,
-				dstTrackerReference);
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO,
-				"modified service tracker " + tracker + " ;changedFilter = "
-						+ changedFilterCriteria);
-		dsTrackers.remove(tracker);
-		addTracker(dstTrackerReference);
-		FileBasedDiscoveryImpl.notifyOnAvailableSEDs(tracker,
-				changedFilterCriteria);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void removedService(final ServiceReference dstTrackerReference,
-			final Object arg1) {
-		DiscoveredServiceTracker tracker = (DiscoveredServiceTracker) context
-				.getService(dstTrackerReference);
-		FileBasedDiscoveryImpl.log(LogService.LOG_INFO,
-				"removing service tracker " + tracker);
-		dsTrackers.remove(tracker);
-	}
-
-	/**
-	 * This method fills a map with key value pairs, where the key is
-	 * {@link#DiscoveredServiceTracker.PROP_KEY_MATCH_CRITERIA_INTERFACES} or
-	 * {@linkDiscoveredServiceTracker.PROP_KEY_MATCH_CRITERIA_FILTERS} and the
-	 * value is the list of new entries or empty if nothing is new.
-	 * 
-	 * @param tracker
-	 *            the registered or modified tracker registration
-	 * @param serviceReference
-	 * @return a map that contains two entries where the value contains the
-	 *         added properties. It returns empty values if no new properties
-	 *         have been found. It returns null values if the new properties are
-	 *         null or empty
-	 */
-	private Map determineChangedFilterProperties(
-			DiscoveredServiceTracker tracker, ServiceReference serviceReference) {
-		Map result = new HashMap();
-
-		Map props = (Map) dsTrackers.get(tracker);
-		if (props != null) {
-			Collection oldInterfaceCriteria = (Collection) props
-					.get(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA);
-			Collection oldFilterCriteria = (Collection) props
-					.get(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA);
-
-			Collection newInterfaceCriteria = (Collection) serviceReference
-					.getProperty(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA);
-			Collection newFilterCriteria = (Collection) serviceReference
-					.getProperty(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA);
-
-			result.put(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA,
-					getAddedEntries(oldInterfaceCriteria, newInterfaceCriteria));
-			result.put(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA,
-					getAddedEntries(oldFilterCriteria, newFilterCriteria));
-		} else {
-			// set empty lists as values
-			result.put(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA,
-					new ArrayList());
-			result.put(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA,
-					new ArrayList());
-		}
-		return result;
-	}
-
-	/**
-	 * Compares to list and returns only those who are not in the old list. Or
-	 * it returns an empty list if nothing has been found.
-	 * 
-	 * @param oldList
-	 *            the existing set of properties
-	 * @param newList
-	 *            the new set of properties
-	 * @return a list of only new properties; empty list if no new has been
-	 *         found; null if newList is null or empty
-	 */
-	private Collection getAddedEntries(Collection oldList, Collection newList) {
-		ArrayList result = new ArrayList();
-		if (newList == null || newList.isEmpty()) {
-			return null;
-		}
-		if (oldList == null) {
-			return newList;
-		}
-		Iterator it = newList.iterator();
-		while (it.hasNext()) {
-			Object val = it.next();
-			if (!oldList.contains(val)) {
-				result.add(val);
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Adds a DiscoveredServiceTracker with its properties to our map.
-	 * 
-	 * @param ref
-	 *            reference to the just registered or modified
-	 *            DiscoveredServiceTracker
-	 */
-	private void addTracker(final ServiceReference ref) {
-		// Retrieve current service properties (required later when modified to
-		// compute the actual modification)
-		Map props = new HashMap();
-		props.put(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA, ref
-				.getProperty(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA));
-
-		props.put(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA,
-				ref.getProperty(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA));
-		dsTrackers.put((DiscoveredServiceTracker) context.getService(ref),
-				props);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveredServiceNotificationImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveredServiceNotificationImpl.java
deleted file mode 100644
index bdca3ad..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveredServiceNotificationImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.Collection;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class DiscoveredServiceNotificationImpl implements
-		DiscoveredServiceNotification {
-
-	private ServiceEndpointDescription descr;
-	private int type;
-	private Collection/* String */filters;
-	private Collection/* String */interfaces;
-
-	public DiscoveredServiceNotificationImpl(ServiceEndpointDescription sed,
-			int notificationType, Collection matchingFilters,
-			Collection matchingInterfaces) {
-		descr = sed;
-		type = notificationType;
-		filters = matchingFilters;
-		interfaces = matchingInterfaces;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getServiceEndpointDescription()
-	 */
-	public ServiceEndpointDescription getServiceEndpointDescription() {
-		return descr;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getType()
-	 */
-	public int getType() {
-		return type;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getFilters()
-	 */
-	public Collection getFilters() {
-		return filters;
-	}
-
-	/**
-	 * @see org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification#getInterfaces()
-	 */
-	public Collection getInterfaces() {
-		return interfaces;
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveryCommandProvider.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveryCommandProvider.java
deleted file mode 100644
index 1557f09..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/DiscoveryCommandProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Markus Alexander Kuppe.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Markus Alexander Kuppe (ecf-dev_eclipse.org <at> lemmster <dot> de) - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.xml.sax.SAXException;
-
-public class DiscoveryCommandProvider implements CommandProvider {
-
-	private static final String LINE_SEPARATOR = System
-			.getProperty("line.separator"); //$NON-NLS-0$
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	public DiscoveryCommandProvider(FileBasedDiscoveryImpl discovery) {
-		super();
-		this.discovery = discovery;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.osgi.framework.console.CommandProvider#getHelp()
-	 */
-	public String getHelp() {
-		return LINE_SEPARATOR //$NON-NLS-0$
-				+ "---ECF File-based Service Discovery---" //$NON-NLS-1$
-				+ LINE_SEPARATOR //$NON-NLS-0$
-				+ "\tpublish <URL of ServiceEndpointDescriptor XML> -- publish the given Service Endpoint Descriptor\n\tunpublish <URL of ServiceEndpointDescriptor XML> -- unpublish the given Service Endpoint Descriptor" //$NON-NLS-1$
-				+ LINE_SEPARATOR; //$NON-NLS-0$
-	}
-
-	public void _publish(CommandInterpreter ci) {
-		Collection seds = getServiceEndpointDescriptions(ci);
-		for (Iterator iterator = seds.iterator(); iterator.hasNext();) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) iterator
-					.next();
-			discovery.publishService(sed);
-		}
-	}
-
-	public void _unpublish(CommandInterpreter ci) {
-		Collection seds = getServiceEndpointDescriptions(ci);
-		for (Iterator iterator = seds.iterator(); iterator.hasNext();) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) iterator
-					.next();
-			discovery.unpublishService(sed);
-		}
-	}
-
-	private Collection getServiceEndpointDescriptions(CommandInterpreter ci) {
-		String path = ci.nextArgument();
-		try {
-			URL url = new URL(path);
-			InputStream inputStream = url.openStream();
-			return new ServiceDescriptionParser().load(inputStream);
-		} catch (IOException e) {
-			ci.print("Error loading service endpoint descriptions from file="+path); //$NON-NLS-1$
-		} catch (ParserConfigurationException e) {
-			ci.print("Error setting up parser"); //$NON-NLS-1$
-		} catch (SAXException e) {
-			ci.print("Error parsing service endpoint descriptions from file="+path); //$NON-NLS-1$
-		}
-		return new ArrayList();
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java
deleted file mode 100644
index 29ede37..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java
+++ /dev/null
@@ -1,469 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.BundleTracker;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class FileBasedDiscoveryImpl {
-	/**
-	 * ServiceRegistration property identifying Discovery's default strategy for
-	 * distribution of published service information. It's up to the Discovery
-	 * service to provide and support this property. Value of this property is
-	 * of type String.
-	 * 
-	 * TODO do we support this property?
-	 */
-	public static final String PROP_KEY_PUBLISH_STRATEGY = "osgi.discovery.strategy.publication";
-
-	/**
-	 * Constant for a "push" publication strategy: published service information
-	 * is actively pushed to the network for discovery.
-	 */
-	public static final String PROP_VAL_PUBLISH_STRATEGY_PUSH = "push";
-
-	/**
-	 * Constant for a "pull" publication strategy: published service information
-	 * is available just upon lookup requests.
-	 */
-	public static final String PROP_VAL_PUBLISH_STRATEGY_PULL = "pull";
-
-	private static BundleContext context;
-
-	private static LogService logService;
-
-	private static Map /* <SLPServiceDescriptionAdapter> */inMemoryCache = Collections
-			.synchronizedMap(new HashMap());
-
-	private ServiceTracker spTracker = null;
-
-	private DSTTracker discoTrackerCustomizer = null;
-
-	private ServiceTracker discoTracker = null;
-
-	private BundleTracker bt = null;
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param bc
-	 *            the BundleContext of the containing bundle.
-	 * @param logger
-	 *            a LogService instance
-	 */
-	public FileBasedDiscoveryImpl(final BundleContext bc,
-			final LogService logger) {
-		logService = logger;
-		context = bc;
-	}
-
-	/**
-	 * Initialization method called by Activator.
-	 */
-	public void init() {
-		log(LogService.LOG_DEBUG, "init");
-		discoTrackerCustomizer = new DSTTracker(context);
-		discoTracker = new ServiceTracker(context,
-				DiscoveredServiceTracker.class.getName(),
-				discoTrackerCustomizer);
-		discoTracker.open();
-		spTracker = new ServiceTracker(context,
-				ServicePublication.class.getName(),
-				new ServicePublicationTracker(context, this));
-		spTracker.open();
-		// We track active and starting bundles as per Remote Services Admin spec
-		bt = new BundleTracker(context, Bundle.ACTIVE | Bundle.STARTING, new BundleTrackerImpl(this));
-		bt.open();
-	}
-
-	/**
-	 * Shutdown method called by Activator.
-	 */
-	public void destroy() {
-		log(LogService.LOG_DEBUG, "destroy");
-		bt.close();
-		discoTracker.close();
-		spTracker.close();
-	}
-
-	/**
-	 * Publishes a service.
-	 * 
-	 * TODO: publish also for every endpoint interface TODO: use
-	 * endpointLocation as service URL if given
-	 * 
-	 * @param javaInterfaces
-	 *            collection of java interface names
-	 * @param javaInterfacesAndVersions
-	 *            collection of versions, where the order of the version must
-	 *            match the order of the java interfaces
-	 * @param javaInterfacesAndEndpointInterfaces
-	 *            optional collection of endpointinterface names, where the
-	 *            order must match the order of the java interfaces
-	 * @param properties
-	 *            map of properties; keys must be Strings, values are of type
-	 *            object
-	 * @param strategy
-	 *            optional string that defines the publish strategy
-	 * @return a ServiceEndpointDescription or null, if an error occurred during
-	 *         creation of the ServiceDescription
-	 */
-	protected ServiceEndpointDescription publishService(
-			Collection/* <String> */javaInterfaces,
-			Collection/* <String> */javaInterfacesAndVersions,
-			Collection/* <String> */javaInterfacesAndEndpointInterfaces,
-			Map/* <String, Object> */properties, String strategy,
-			String endpointID) {
-		ServiceEndpointDescription svcDescr = new ServiceEndpointDescriptionImpl(
-				javaInterfaces, javaInterfacesAndVersions,
-				javaInterfacesAndEndpointInterfaces, properties, endpointID);
-		storeAndNotify(svcDescr);
-		return svcDescr;
-	}
-
-	private void storeAndNotify(final ServiceEndpointDescription svcDescr) {
-		// add it to the available Services
-		inMemoryCache.put(svcDescr.getEndpointID(), svcDescr);
-		// inform the listener about the new available service
-		notifyListenersOnNewServiceDescription(svcDescr);
-	}
-
-	protected void publishService(final ServiceEndpointDescription svcDescr) {
-		storeAndNotify(svcDescr);
-	}
-
-	/**
-	 * Unpublishes a given service description.
-	 * 
-	 * @param serviceDescription
-	 *            the service to unpublish
-	 * @throws IllegalArgumentException
-	 *             if serviceDescription is null or does not contain at least
-	 *             one java interface
-	 */
-	protected void unpublishService(
-			final ServiceEndpointDescription serviceDescription) {
-		validateServiceDescription(serviceDescription);
-		log(LogService.LOG_DEBUG,
-				"unpublish service " + serviceDescription.toString());
-		inMemoryCache.remove(serviceDescription.getEndpointID());
-		notifyListenersOnRemovedServiceDescription(serviceDescription);
-	}
-
-	/**
-	 * 
-	 */
-	protected static synchronized void log(int logLevel, String msg) {
-		if (logService != null) {
-			logService.log(logLevel, msg);
-		}
-	}
-
-	/**
-	 * 
-	 */
-	protected static synchronized void log(int logLevel, String msg, Exception e) {
-		if (logService != null) {
-			logService.log(logLevel, msg, e);
-		}
-	}
-
-	/**
-	 * @param logger
-	 *            the reference to the LogService which get called for logging
-	 * 
-	 */
-	public static void setLogService(final LogService logger) {
-		logService = logger;
-	}
-
-	/**
-	 * This method checks if a given ServiceEndpointDescrioption follows the
-	 * minimal requirements.
-	 * 
-	 * @param serviceDescription
-	 *            the given ServiceEndpointDescription
-	 * @throws IllegalArgumentException
-	 *             if serviceDescription is null or does not contain at least
-	 *             one java interface
-	 */
-	protected void validateServiceDescription(
-			ServiceEndpointDescription serviceDescription) {
-		if (serviceDescription == null)
-			throw new IllegalArgumentException(
-					"serviceDescription must not be null.");
-		if (serviceDescription.getProvidedInterfaces() == null) {
-			throw new IllegalArgumentException(
-					"Given set of Java interfaces must not be null");
-		}
-		String ifName = (String) serviceDescription.getProvidedInterfaces()
-				.iterator().next();
-		if (serviceDescription.getProvidedInterfaces() == null
-				|| serviceDescription.getProvidedInterfaces().size() <= 0
-				|| ifName == null || ifName.length() <= 0) {
-			throw new IllegalArgumentException(
-					"serviceDescription must contain at least one service interface name.");
-		}
-	}
-
-	/**
-	 * Returns a Map of all registered DiscoveredServiceTracker trackers.
-	 * 
-	 * TODO should it be a copy of the map for thread safety? This could lead to
-	 * failures during usage of the copy. But we do not block the Tracker,
-	 * registrations and deregistrations of DSTs.
-	 * 
-	 * @return a copied Map of all registered DiscoveredServiceTracker trackers.
-	 */
-	protected Map getRegisteredServiceTracker() {
-		if (discoTrackerCustomizer == null) {
-			return new HashMap();
-		}
-		return new HashMap(discoTrackerCustomizer.getDsTrackers());
-	}
-
-	/**
-	 * This method informs a just registered or modified service tracker if a
-	 * service matches its properties.
-	 * 
-	 * TODO: add suppression of informing trackers twice for the same SED
-	 * 
-	 * @param tracker
-	 *            the just registered or modified DiscoveredServiceTracker
-	 */
-	public static void notifyOnAvailableSEDs(
-			final DiscoveredServiceTracker tracker, final Map matchingCriteria) {
-		List cachedServices = new ArrayList(inMemoryCache.values());
-		if (cachedServices != null) {
-			Collection matchingInterfaces = new ArrayList();
-			Collection matchingFilters = new ArrayList();
-			Iterator it = cachedServices.iterator();
-			while (it.hasNext()) {
-				ServiceEndpointDescription svcDescr = (ServiceEndpointDescription) it
-						.next();
-				matchingInterfaces.clear();
-				matchingFilters.clear();
-				if (isTrackerInterestedInSED(svcDescr, matchingCriteria,
-						matchingInterfaces, matchingFilters)) {
-					tracker.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr, DiscoveredServiceNotification.AVAILABLE,
-							matchingInterfaces, matchingFilters));
-				}
-			}
-		}
-	}
-
-	/**
-	 * 
-	 * @param svcDescr
-	 */
-	protected void notifyListenersOnNewServiceDescription(
-			ServiceEndpointDescription svcDescr) {
-		Collection matchingInterfaces = new ArrayList();
-		Collection matchingFilters = new ArrayList();
-		Map discoveredSTs = getRegisteredServiceTracker();
-		Iterator it = discoveredSTs.keySet().iterator();
-		while (it.hasNext()) {
-			DiscoveredServiceTracker st = (DiscoveredServiceTracker) it.next();
-			Map trackerProps = (Map) discoveredSTs.get(st);
-			matchingInterfaces.clear();
-			matchingFilters.clear();
-			if (isTrackerInterestedInSED(svcDescr, trackerProps,
-					matchingInterfaces, matchingFilters)) {
-				try {
-					st.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr, DiscoveredServiceNotification.AVAILABLE,
-							matchingInterfaces, matchingFilters));
-				} catch (Exception e) {
-					log(LogService.LOG_ERROR,
-							"Exceptions where thrown while notifying about a new remote service.",
-							e);
-				}
-
-			}
-		}
-	}
-
-	/**
-	 * Notifies all DSTTrackers about an unpublished service.
-	 * 
-	 * @param svcDescr
-	 *            the unpublished ServiceEndpointDescription
-	 */
-	protected void notifyListenersOnRemovedServiceDescription(
-			ServiceEndpointDescription svcDescr) {
-		Collection matchingInterfaces = new ArrayList();
-		Collection matchingFilters = new ArrayList();
-		Map discoveredSTs = getRegisteredServiceTracker();
-		Iterator it = discoveredSTs.keySet().iterator();
-		while (it.hasNext()) {
-			DiscoveredServiceTracker st = (DiscoveredServiceTracker) it.next();
-			Map trackerProps = (Map) discoveredSTs.get(st);
-			matchingInterfaces.clear();
-			matchingFilters.clear();
-			// inform it if the listener has no Filter set
-			// or the filter matches the criteria
-			if (isTrackerInterestedInSED(svcDescr, trackerProps,
-					matchingInterfaces, matchingFilters)) {
-				try {
-					st.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr,
-							DiscoveredServiceNotification.UNAVAILABLE,
-							matchingInterfaces, matchingFilters));
-				} catch (Exception e) {
-					log(LogService.LOG_ERROR,
-							"Exceptions where thrown while notifying about removal of a remote service.",
-							e);
-				}
-			}
-		}
-	}
-
-	/**
-	 * 
-	 * @param svcDescr
-	 */
-	protected void notifyListenersOnModifiedServiceDescription(
-			ServiceEndpointDescription svcDescr) {
-		Collection matchingInterfaces = new ArrayList();
-		Collection matchingFilters = new ArrayList();
-		Map discoveredSTs = getRegisteredServiceTracker();
-		Iterator it = discoveredSTs.keySet().iterator();
-		while (it.hasNext()) {
-			DiscoveredServiceTracker st = (DiscoveredServiceTracker) it.next();
-			Map trackerProps = (Map) discoveredSTs.get(st);
-			// inform it if the listener has no Filter set
-			// or the filter matches the criteria
-			matchingInterfaces.clear();
-			matchingFilters.clear();
-			if (isTrackerInterestedInSED(svcDescr, trackerProps,
-					matchingInterfaces, matchingFilters)) {
-				try {
-					st.serviceChanged(new DiscoveredServiceNotificationImpl(
-							svcDescr, DiscoveredServiceNotification.MODIFIED,
-							matchingInterfaces, matchingFilters));
-				} catch (Exception e) {
-					log(LogService.LOG_ERROR,
-							"Exceptions where thrown while notifying about modification of a remote service.",
-							e);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Compares the properties of a registered DiscoveredServiceTracker with the
-	 * SED properties. IF they match, it returns true.
-	 * 
-	 * @param svcDescr
-	 * @param trackerProperties
-	 * @param matchingInterfaces
-	 *            (an out-argument) a collection which will contain all
-	 *            tracker's interface criteria matching with given
-	 *            ServiceEndpointDescription object
-	 * @param matchingFilters
-	 *            (an out-argument) a collection which will contain all
-	 *            tracker's filter criteria matching with given
-	 *            ServiceEndpointDescription object
-	 * @return true if the service tracker properties match the SEDs properties,
-	 *         else false
-	 */
-	public static boolean isTrackerInterestedInSED(
-			ServiceEndpointDescription svcDescr,
-			Map/* String, Object */trackerProperties,
-			Collection matchingInterfaces, Collection matchingFilters) {
-		Collection interfaceCriteria = (Collection) trackerProperties
-				.get(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA);
-		Collection filter = (Collection) trackerProperties
-				.get(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA);
-		boolean notify = false;
-		if (interfaceCriteria == null && filter == null) {
-			notify = true;
-		} else {
-			// if interface-criteria are defined on tracker
-			if (interfaceCriteria != null && !interfaceCriteria.isEmpty()) {
-				// then check whether tracker's interface-list contains one of
-				// SED's interfaces
-				Collection svcInterfaces = svcDescr.getProvidedInterfaces();
-				if (svcInterfaces == null) {
-					throw new RuntimeException("no interfaces provided");
-				}
-				Collection intersectionResult = new HashSet(interfaceCriteria);
-				intersectionResult.retainAll(svcInterfaces);
-				if (intersectionResult.size() > 0) {
-					notify = true;
-					if (matchingInterfaces != null) {
-						matchingInterfaces.addAll(intersectionResult);
-					}
-				}
-			}
-
-			// if filter-criteria are defined on tracker
-			if (filter != null && !filter.isEmpty()) {
-				// check whether one filter of tracker's filter-list matches to
-				// SED's properties
-				Iterator it = filter.iterator();
-				while (it.hasNext()) {
-					String currentFilter = (String) it.next();
-					try {
-						Filter f = context.createFilter(currentFilter);
-						if (f.match(new Hashtable(svcDescr.getProperties()))) {
-							notify = true;
-							if (matchingFilters != null) {
-								matchingFilters.add(currentFilter);
-							}
-						}
-					} catch (InvalidSyntaxException e) {
-						throw new RuntimeException(e.getMessage());
-					} catch (IllegalStateException isex) {
-						// TODO: check whether this catch block is needed.
-						isex.printStackTrace();
-						// ignore it
-					}
-				}
-			}
-		}
-		return notify;
-	}
-
-	/**
-	 * Returns the list of known services without the locally published ones.
-	 * 
-	 * @return a list of all remote services
-	 */
-	public Map getCachedServices() {
-		return new HashMap(inMemoryCache);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/IServiceEndpointDescriptionPublisher.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/IServiceEndpointDescriptionPublisher.java
deleted file mode 100644
index 43f2368..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/IServiceEndpointDescriptionPublisher.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Composent, Inc. - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-public interface IServiceEndpointDescriptionPublisher {
-
-	public void publishServiceDescription(InputStream serviceEndpointDescriptionFile)
-			throws IOException;
-
-	public void publishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceDescription);
-
-	public void unpublishServiceDescription(InputStream serviceEndpointDescriptionFile)
-			throws IOException;
-
-	public void unpublishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceDescription);
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Messages.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Messages.java
deleted file mode 100644
index e845356..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/Messages.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class Messages {
-	private static final String BUNDLE_NAME = "org.eclipse.ecf.osgi.services.discovery.local.messages"; //$NON-NLS-1$
-
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
-
-	private Messages() {
-	}
-
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/OneInterfaceSED.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/OneInterfaceSED.java
deleted file mode 100644
index e318d6c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/OneInterfaceSED.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.Collection;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-
-/**
- * 
- * 
- * TODO Add Javadoc comment for this type.
- * 
- */
-public class OneInterfaceSED {
-
-	private static final String LINE_SEPARATOR = System
-			.getProperty("line.separator");
-
-	private String interfaceName = null;
-	private String version = null;
-	private String endpointInterface = null;
-
-	/**
-	 * Adds a property to the existing map.
-	 * 
-	 * @param key
-	 *            property key
-	 * @param value
-	 *            the value of the key
-	 */
-	public void addProperty(final String key, final Object value) {
-
-		if (key.equals(ServicePublication.SERVICE_INTERFACE_NAME)) {
-			interfaceName = (String) value;
-		}
-
-		if (key.equals(ServicePublication.ENDPOINT_INTERFACE_NAME)) {
-			if (!((String) value).startsWith(interfaceName)) {
-				endpointInterface = combineValue((String) value);
-			}
-		}
-
-		if (key.equals(ServicePublication.SERVICE_INTERFACE_VERSION)) {
-			if (!((String) value).startsWith(interfaceName)) {
-				version = combineValue((String) value);
-			}
-		}
-
-		// properties.put(key, value);
-	}
-
-	/**
-	 * Preceding a value with the interface name and a separator.
-	 * 
-	 * @param value
-	 *            to append
-	 * @return the complete string
-	 */
-	private String combineValue(final String value) {
-		return interfaceName + ServicePublication.SEPARATOR + value;
-	}
-
-	/**
-	 * @return the interfaceName
-	 */
-	public String getInterfaceName() {
-		return interfaceName;
-	}
-
-	/**
-	 * @param interfaceName
-	 *            the interfaceName to set
-	 */
-	public void setInterfaceName(final String interfaceName) {
-		this.interfaceName = interfaceName;
-	}
-
-	/**
-	 * @return the version
-	 */
-	public String getVersion() {
-		return version;
-	}
-
-	/**
-	 * @param version
-	 *            the version to set
-	 */
-	public void setVersion(final String version) {
-		this.version = version;
-	}
-
-	/**
-	 * @return the endpointInterface
-	 */
-	public String getEndpointInterface() {
-		return endpointInterface;
-	}
-
-	/**
-	 * @param endpointInterface
-	 *            the endpointInterface to set
-	 */
-	public void setEndpointInterface(final String endpointInterface) {
-		this.endpointInterface = endpointInterface;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(final Object serviceDescription) {
-		if (!(serviceDescription instanceof ServiceEndpointDescription)) {
-			return false;
-		}
-
-		ServiceEndpointDescription descr = (ServiceEndpointDescription) serviceDescription;
-
-		Collection descrInterfaces = descr.getProvidedInterfaces();
-		if (descrInterfaces == null) {
-			throw new RuntimeException(
-					"The service does not contain requiered parameter interfaces. "
-							+ descr);
-		}
-
-		// compare interface names
-		if (!descrInterfaces.contains(interfaceName)) {
-			return false;
-		}
-
-		// compare versions
-		if ((version != null && (!version.equals(descr
-				.getVersion(interfaceName))))
-				|| (version == null && descr.getVersion(interfaceName) != null)) {
-			return false;
-		}
-
-		// compare endpoint interfaces
-		if ((endpointInterface != null && (!endpointInterface.equals(descr
-				.getEndpointInterfaceName(interfaceName))))
-				|| (endpointInterface == null && descr
-						.getEndpointInterfaceName(interfaceName) != null)) {
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		int result = 17;
-
-		result = 37 * result + interfaceName.hashCode();
-
-		if (endpointInterface != null) {
-			result = 37 * result + endpointInterface.hashCode();
-		}
-
-		if (version != null) {
-			result = 37 * result + version.hashCode();
-		}
-
-		return result;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		sb.append("\tinterface=").append(interfaceName).append(LINE_SEPARATOR);
-		if (version != null) {
-			sb.append("\tversion=").append(version).append(LINE_SEPARATOR);
-		}
-		if (endpointInterface != null) {
-			sb.append("\tendpointInterface=").append(endpointInterface)
-					.append(LINE_SEPARATOR);
-		}
-		return sb.toString();
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionParser.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionParser.java
deleted file mode 100644
index 977de79..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionParser.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Entity;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
-
-public class ServiceDescriptionParser {
-
-	private static final String SERVICEDESCRIPTION_ELEMENT = "service-description";
-
-	private static final String PROVIDE_ELEMENT = "provide";
-	private static final String PROPERTY_ELEMENT = "property";
-
-	private static final String INTERFACE_ATTR = "interface";
-	private static final String NAME_ATTR = "name";
-	private static final String TYPE_ATTR = "type";
-
-	private void findElementsNamed(Node top, String name, List aList) {
-		int type = top.getNodeType();
-		switch (type) {
-		case Node.DOCUMENT_TYPE_NODE:
-			// Print entities if any
-			NamedNodeMap nodeMap = ((DocumentType) top).getEntities();
-			for (int i = 0; i < nodeMap.getLength(); i++) {
-				Entity entity = (Entity) nodeMap.item(i);
-				findElementsNamed(entity, name, aList);
-			}
-			break;
-		case Node.ELEMENT_NODE:
-			String elementName = top.getNodeName();
-			if (name.equals(elementName)) {
-				aList.add(top);
-			}
-		default:
-			for (Node child = top.getFirstChild(); child != null; child = child
-					.getNextSibling()) {
-				findElementsNamed(child, name, aList);
-			}
-		}
-	}
-
-	private Collection processServiceDescriptionNodes(
-			List serviceDescriptionNodes) {
-		Collection res = new ArrayList();
-		for (Iterator i = serviceDescriptionNodes.iterator(); i.hasNext();) {
-			Node n = (Node) i.next();
-
-			ServiceEndpointDescriptionImpl c = new ServiceEndpointDescriptionImpl();
-			processServiceEndpointDescription(n, c);
-			res.add(c);
-		}
-		return res;
-	}
-
-	private Collection loadServiceDescriptions(Document doc) {
-		List ps = new ArrayList();
-		findElementsNamed(doc, SERVICEDESCRIPTION_ELEMENT, ps);
-		return processServiceDescriptionNodes(ps);
-	}
-
-	private String getAttributeValue(Node node, String attrName) {
-		NamedNodeMap attrs = node.getAttributes();
-		Node attrNode = attrs.getNamedItem(attrName);
-		if (attrNode != null) {
-			return attrNode.getNodeValue();
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-	private void processServiceEndpointDescription(Node n,
-			ServiceEndpointDescriptionImpl c) {
-		List groupList = new ArrayList();
-		findElementsNamed(n, PROVIDE_ELEMENT, groupList);
-		Collection/* <String> */providedInterfaces = null;
-		if (!groupList.isEmpty()) {
-			providedInterfaces = new ArrayList/* <String> */();
-			for (Iterator i = groupList.iterator(); i.hasNext();) {
-				Node node = (Node) i.next();
-				String providedInterfaceValue = getAttributeValue(node,
-						INTERFACE_ATTR);
-				if (providedInterfaceValue != null
-						&& !providedInterfaceValue.equals("")) { //$NON-NLS-1$
-					providedInterfaces.add(providedInterfaceValue);
-				}
-			}
-			c.setProvidedInterfaces(providedInterfaces);
-		}
-		groupList = new ArrayList();
-		findElementsNamed(n, PROPERTY_ELEMENT, groupList);
-		Map/* <String, String> */providedProperties = null;
-		if (!groupList.isEmpty()) {
-			providedProperties = new HashMap/* <String, String> */();
-			for (Iterator i = groupList.iterator(); i.hasNext();) {
-				Node node = (Node) i.next();
-				String name = getAttributeValue(node, NAME_ATTR);
-				String value = node.getFirstChild().getNodeValue();
-				String type = getAttributeValue(node, TYPE_ATTR);
-				if (name != null && !name.equals("")) { //$NON-NLS-1$
-					if (value != null && !value.equals("")) {
-						if (type == null || type.equals("")) {
-							providedProperties.put(name, value);
-						} else if (type.equals("String")) {
-							providedProperties.put(name, value);
-						} else if (type.equals("Long")) {
-							providedProperties.put(name, Long.valueOf(value));
-						} else if (type.equals("Double")) {
-							providedProperties.put(name, Double.valueOf(value));
-						} else if (type.equals("Float")) {
-							providedProperties.put(name, Float.valueOf(value));
-						} else if (type.equals("Integer")) {
-							providedProperties
-									.put(name, Integer.valueOf(value));
-						} else if (type.equals("Byte")) {
-							providedProperties.put(name, Byte.valueOf(value));
-						} else if (type.equals("Character")) {
-							providedProperties.put(name,
-									new Character(value.charAt(0)));
-						} else if (type.equals("Boolean")) {
-							providedProperties
-									.put(name, Boolean.valueOf(value));
-						} else if (type.equals("Short")) {
-							providedProperties.put(name, Short.valueOf(value));
-						}
-					}
-				}
-			}
-			c.setProvidedInterfaces(providedInterfaces);
-			c.setProperties(providedProperties);
-		}
-	}
-
-	public Collection load(InputStream ins)
-			throws ParserConfigurationException, SAXException, IOException {
-		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-		DocumentBuilder db = dbf.newDocumentBuilder();
-		Document doc = db.parse(ins);
-		return loadServiceDescriptions(doc);
-	}
-}
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionPublisher.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionPublisher.java
deleted file mode 100644
index 284c128..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceDescriptionPublisher.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Composent, Inc. - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Iterator;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.osgi.service.log.LogService;
-import org.xml.sax.SAXException;
-
-public class ServiceDescriptionPublisher implements
-		IServiceEndpointDescriptionPublisher {
-
-	private FileBasedDiscoveryImpl discovery;
-	private ServiceDescriptionParser sdp;
-	private Object discoveryLock = new Object();
-
-	public ServiceDescriptionPublisher(FileBasedDiscoveryImpl discovery) {
-		this.discovery = discovery;
-		this.sdp = new ServiceDescriptionParser();
-	}
-
-	private void logException(String message, Throwable t) {
-		Activator a = Activator.getDefault();
-		if (a != null) {
-			LogService logService = a.getLogService();
-			if (logService != null)
-				logService.log(LogService.LOG_ERROR, message, t);
-		}
-	}
-
-	private Collection getServiceEndpointDescriptions(
-			InputStream serviceDescriptionStream) throws IOException {
-		try {
-			return sdp.load(serviceDescriptionStream);
-		} catch (IOException e) {
-			logException("IOException publishing serviceDescriptionStream", e);
-			throw e;
-		} catch (ParserConfigurationException e) {
-			logException(
-					"Parser exception publishing serviceDescriptionStream", e);
-			throw new IOException(
-					"Parser exception publishing serviceDescriptionStream: "
-							+ e.getMessage());
-		} catch (SAXException e) {
-			logException(
-					"Parser exception publishing serviceDescriptionStream", e);
-			throw new IOException(
-					"SAX exception publishing serviceDescriptionStream: "
-							+ e.getMessage());
-		} finally {
-			serviceDescriptionStream.close();
-		}
-	}
-
-	public void publishServiceDescription(InputStream serviceDescriptionStream)
-			throws IOException {
-		Collection serviceDescriptions = getServiceEndpointDescriptions(serviceDescriptionStream);
-		if (serviceDescriptions != null) {
-			for (Iterator i = serviceDescriptions.iterator(); i.hasNext();) {
-				publishServiceDescription((ServiceEndpointDescriptionImpl) i
-						.next());
-			}
-		}
-	}
-
-	public void unpublishServiceDescription(InputStream serviceDescriptionStream)
-			throws IOException {
-		Collection serviceDescriptions = getServiceEndpointDescriptions(serviceDescriptionStream);
-		if (serviceDescriptions != null) {
-			for (Iterator i = serviceDescriptions.iterator(); i.hasNext();) {
-				unpublishServiceDescription((ServiceEndpointDescriptionImpl) i
-						.next());
-			}
-		}
-	}
-
-	public void publishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceEndpointDescription) {
-		synchronized (discoveryLock) {
-			if (discovery != null)
-				discovery.publishService(serviceEndpointDescription);
-		}
-	}
-
-	public void unpublishServiceDescription(
-			ServiceEndpointDescriptionImpl serviceEndpointDescription) {
-		synchronized (discoveryLock) {
-			if (discovery != null)
-				discovery.unpublishService(serviceEndpointDescription);
-		}
-	}
-
-	public void close() {
-		synchronized (discoveryLock) {
-			this.discovery = null;
-		}
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceEndpointDescriptionImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceEndpointDescriptionImpl.java
deleted file mode 100644
index 831afe4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServiceEndpointDescriptionImpl.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.rmi.dgc.VMID;
-import java.rmi.server.UID;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-
-public class ServiceEndpointDescriptionImpl implements
-		ServiceEndpointDescription {
-
-	public ServiceEndpointDescriptionImpl() {
-		super();
-		endpointID = getUUID();
-	}
-
-	private static final String LINE_SEPARATOR = System
-			.getProperty("line.separator");
-
-	private String endpointID = null;
-
-	private final Map listOfJSLPSEDs = Collections
-			.synchronizedMap(new HashMap());
-
-	private Map properties = new HashMap();
-
-	/**
-	 * 
-	 * @param interfaceNames
-	 * @param interfacesAndVersions
-	 * @param endPointInterfaces
-	 * @param props
-	 * @throws ServiceLocationException
-	 */
-	public ServiceEndpointDescriptionImpl(
-			final Collection/* <String> */interfaceNames,
-			final Collection/* <String> */interfacesAndVersions,
-			final Collection/* <String> */endPointInterfaces, final Map props,
-			final String endpntID) {
-		// check the java interface map for validity
-		if (interfaceNames == null) {
-			throw new IllegalArgumentException(
-					"Given set of Java interfaces must not be null.");
-		}
-		if (interfaceNames.size() <= 0) {
-			throw new IllegalArgumentException(
-					"Given set of Java interfaces must contain at least one service interface name.");
-		}
-
-		// separate given interface and version strings and put it in a map
-		Map interfaceAndVersionsMap = new HashMap();
-		if (interfacesAndVersions != null) {
-			Iterator versionIterator = interfacesAndVersions.iterator();
-			while (versionIterator.hasNext()) {
-				String interfaceAndVersion = (String) versionIterator.next();
-				int separatorIndex = interfaceAndVersion
-						.indexOf(ServicePublication.SEPARATOR);
-				// if separator doesn't exist or it's index is invalid (at the
-				// very beginning, at the very end)
-				if (separatorIndex <= 0
-						|| (separatorIndex + 1) == interfaceAndVersion.length()) {
-					break;
-				}
-				String interfaceName = interfaceAndVersion.substring(0,
-						separatorIndex);
-				String version = interfaceAndVersion
-						.substring(separatorIndex + 1);
-				if (interfaceName != null && interfaceName.length() > 0
-						&& version != null && version.length() > 0) {
-					interfaceAndVersionsMap.put(interfaceName, version);
-				}
-			}
-		}
-
-		// separate given java interface and endpoint interface and put it in a
-		// map
-		Map endPointInterfacesMap = new HashMap();
-		if (endPointInterfaces != null) {
-			Iterator endpIterator = endPointInterfaces.iterator();
-			while (endpIterator.hasNext()) {
-				String interfaceAndEndpoint = (String) endpIterator.next();
-				int separatorIndex = interfaceAndEndpoint
-						.indexOf(ServicePublication.SEPARATOR);
-				// if separator doesn't exist or it's index is invalid (at the
-				// very beginning, at the very end)
-				if (separatorIndex <= 0
-						|| (separatorIndex + 1) == interfaceAndEndpoint
-								.length()) {
-					break;
-				}
-				String interfaceName = interfaceAndEndpoint.substring(0,
-						separatorIndex);
-				String endpInterface = interfaceAndEndpoint
-						.substring(separatorIndex + 1);
-				if (interfaceName != null && interfaceName.length() > 0
-						&& endpInterface != null && endpInterface.length() > 0) {
-					endPointInterfacesMap.put(interfaceName, endpInterface);
-				}
-			}
-		}
-
-		// create interface-specific SEDs
-		Iterator it = interfaceNames.iterator();
-		while (it.hasNext()) {
-			String ifName = (String) it.next();
-
-			OneInterfaceSED jslpSED = new OneInterfaceSED();
-			jslpSED.setInterfaceName(ifName);
-			jslpSED.setVersion((String) interfaceAndVersionsMap.get(ifName));
-			jslpSED.setEndpointInterface((String) endPointInterfacesMap
-					.get(ifName));
-			listOfJSLPSEDs.put(ifName, jslpSED);
-		}
-		if (endpntID != null) {
-			this.endpointID = endpntID;
-		} else {
-			this.endpointID = getUUID();
-		}
-
-		if (props != null) {
-			this.properties = new HashMap(props);
-		}
-		addInterfacesAndVersionsToProperties(interfaceNames,
-				interfacesAndVersions, endPointInterfaces, endpointID);
-	}
-
-	/**
-	 * adds the endpoint interfaces and versions to the properties map
-	 * 
-	 * @throws ServiceLocationException
-	 */
-	private void addInterfacesAndVersionsToProperties(
-			Collection interfaceNames, Collection versions,
-			Collection endPointInterfaces, String endpntID) {
-
-		if (properties == null) {
-			properties = new HashMap();
-		}
-		properties.put(ServicePublication.SERVICE_INTERFACE_NAME,
-				interfaceNames);
-		if (versions != null) {
-			properties.put(ServicePublication.SERVICE_INTERFACE_VERSION,
-					versions);
-		}
-		if (endPointInterfaces != null) {
-			properties.put(ServicePublication.ENDPOINT_INTERFACE_NAME,
-					endPointInterfaces);
-		}
-
-		if (endpntID != null) {
-			properties.put(ServicePublication.ENDPOINT_ID, endpntID);
-		}
-	}
-
-	public Map getProperties() {
-		return new HashMap(properties);
-	}
-
-	public Object getProperty(final String key) {
-		return getProperties().get(key);
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer sb = new StringBuffer("Service:" + LINE_SEPARATOR);
-		if (endpointID != null) {
-			sb.append("EndpointID = ");
-			sb.append(endpointID);
-			sb.append(LINE_SEPARATOR);
-		}
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			int i = 1;
-			while (it.hasNext()) {
-				sb.append("Interface ");
-				sb.append(i);
-				sb.append(LINE_SEPARATOR);
-				sb.append((OneInterfaceSED) it.next());
-				i++;
-			}
-		}
-		String key;
-		Object value;
-		Iterator it = properties.keySet().iterator();
-		if (it.hasNext()) {
-			sb.append("properties=" + LINE_SEPARATOR);
-		}
-		while (it.hasNext()) {
-			key = (String) it.next();
-			value = properties.get(key);
-			if (value == null) {
-				value = "<null>";
-			}
-
-			sb.append("\t");
-			sb.append(key);
-			sb.append("=");
-			sb.append(value.toString());
-			sb.append(LINE_SEPARATOR);
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getProvidedInterfaces()
-	 */
-	public Collection getProvidedInterfaces() {
-		List l = new ArrayList();
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			while (it.hasNext()) {
-				l.add(((OneInterfaceSED) it.next()).getInterfaceName());
-			}
-		}
-		return l;
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getEndpointInterfaceName(java.lang.String)
-	 */
-	public String getEndpointInterfaceName(String interfaceName) {
-		OneInterfaceSED jSED = ((OneInterfaceSED) listOfJSLPSEDs
-				.get(interfaceName));
-		if (jSED != null) {
-			return jSED.getEndpointInterface();
-		} else {
-			return null;
-		}
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getVersion(java.lang.String)
-	 */
-	public String getVersion(String interfaceName) {
-		OneInterfaceSED jSED = ((OneInterfaceSED) listOfJSLPSEDs
-				.get(interfaceName));
-		if (jSED != null) {
-			return jSED.getVersion();
-		} else {
-			return null;
-		}
-	}
-
-	public URI getLocation() {
-		Object uriObject = getProperty(ServicePublication.ENDPOINT_LOCATION);
-		if (uriObject instanceof URI) {
-			return (URI) uriObject;
-		} else if (uriObject instanceof String) {
-			try {
-				return new URI((String) uriObject);
-			} catch (URISyntaxException e) {
-				throw new RuntimeException(e.getMessage());
-			}
-		} else if (uriObject == null) {
-			return null;
-		} else {
-			throw new RuntimeException(
-					"Service location property is not of expected type URI or String. Property = "
-							+ uriObject.toString());
-		}
-	}
-
-	/**
-	 * 
-	 * @return Collection
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getPropertyKeys()
-	 */
-	public Collection getPropertyKeys() {
-		return getProperties().keySet();
-	}
-
-	/**
-	 * 
-	 * @param key
-	 * @param value
-	 */
-	public void addProperty(String key, Object value) {
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			while (it.hasNext()) {
-				((OneInterfaceSED) it.next()).addProperty(key, value);
-			}
-		}
-		if (key.equals(ServicePublication.ENDPOINT_ID)) {
-			endpointID = (String) value;
-		}
-		properties.put(key, value);
-	}
-
-	/**
-	 * @return
-	 */
-	private String getUUID() {
-		return new UID().toString() + new VMID().toString();
-	}
-
-	/**
-	 * 
-	 * @param javaInterfaceName
-	 * @return String
-	 */
-	public static String convertJavaInterface2Path(
-			final String javaInterfaceName) {
-		return javaInterfaceName != null ? ":"
-				+ javaInterfaceName.replace('.', '/') : "";
-	}
-
-	/**
-	 * 
-	 * @param interfaceNameEncodedAsPath
-	 * @return String
-	 */
-	public static String convertPath2JavaInterface(
-			final String interfaceNameEncodedAsPath) {
-		return interfaceNameEncodedAsPath != null ? interfaceNameEncodedAsPath
-				.replace('/', '.') : null;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
-	public boolean equals(final Object serviceDescription) {
-		if (!(serviceDescription instanceof ServiceEndpointDescription)) {
-			return false;
-		}
-
-		ServiceEndpointDescription descr = (ServiceEndpointDescription) serviceDescription;
-
-		// if one has an EndpointID
-		if (this.endpointID != null || descr.getEndpointID() != null) {
-			if (this.endpointID != null) {
-				return this.endpointID.equals(descr.getEndpointID());
-			} else {
-				// we don't have an endpointID but only the other.
-				return false;
-			}
-		}
-
-		Collection descrInterfaces = descr.getProvidedInterfaces();
-		if (descrInterfaces == null) {
-			throw new RuntimeException(
-					"The service does not contain requiered parameter interfaces. "
-							+ descr);
-		}
-
-		boolean found = false;
-		synchronized (listOfJSLPSEDs) {
-			Iterator it = listOfJSLPSEDs.values().iterator();
-			while (it.hasNext()) {
-				OneInterfaceSED sed = (OneInterfaceSED) it.next();
-				if (sed.equals(serviceDescription)) {
-					found = true;
-				}
-			}
-		}
-
-		return found;
-	}
-
-	/**
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	public int hashCode() {
-		// In case endpointID has been provided by DSW / another Discovery or
-		// has been generated
-		if (endpointID != null) {
-			return endpointID.hashCode();
-		} else {
-			int result = 17;
-			synchronized (listOfJSLPSEDs) {
-				Iterator it = listOfJSLPSEDs.values().iterator();
-				while (it.hasNext()) {
-					result = 37 * result
-							+ ((OneInterfaceSED) it.next()).hashCode();
-				}
-			}
-
-			if (endpointID != null) {
-				result = 37 * result + endpointID.hashCode();
-			}
-
-			if (properties != null) {
-				result = 37 * result + properties.hashCode();
-			}
-
-			return result;
-		}
-	}
-
-	/**
-	 * 
-	 * @see org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription#getEndpointID()
-	 */
-	public String getEndpointID() {
-		return endpointID;
-	}
-
-	/**
-	 * 
-	 * @param interfaceNames
-	 *            the list of interfaceNames provided by this
-	 *            ServiceEndpointDescription
-	 */
-	public void setProvidedInterfaces(Collection interfaceNames) {
-		if (interfaceNames == null || interfaceNames.isEmpty()) {
-			return;
-		}
-		listOfJSLPSEDs.clear();
-		// create interface-specific SEDs
-		Iterator it = interfaceNames.iterator();
-		while (it.hasNext()) {
-			String ifName = (String) it.next();
-			OneInterfaceSED jslpSED = new OneInterfaceSED();
-			jslpSED.setInterfaceName(ifName);
-			listOfJSLPSEDs.put(ifName, jslpSED);
-		}
-	}
-
-	public void setProperties(Map props) {
-		// TODO implement setting of members (endpointID, endpointinterfaces,
-		// versions)
-		properties = new HashMap(props);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServicePublicationTracker.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServicePublicationTracker.java
deleted file mode 100644
index 16a91ec..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/ServicePublicationTracker.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/* 
- * Copyright (c) 2009 Siemens Enterprise Communications GmbH & Co. KG, 
- * Germany. All rights reserved.
- *
- * Siemens Enterprise Communications GmbH & Co. KG is a Trademark Licensee 
- * of Siemens AG.
- *
- * This material, including documentation and any related computer programs,
- * is protected by copyright controlled by Siemens Enterprise Communications 
- * GmbH & Co. KG and its licensors. All rights are reserved.
- * 
- * This program and the accompanying materials are made available under the 
- * terms of the Eclipse Public License v1.0 which accompanies this 
- * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.eclipse.ecf.osgi.services.discovery.local;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class ServicePublicationTracker implements ServiceTrackerCustomizer {
-
-	private BundleContext context = null;
-
-	private FileBasedDiscoveryImpl discovery = null;
-
-	private Map /* <ServiceReference, ServiceEndpointDescription> */publicationAndSED = null;
-
-	public ServicePublicationTracker(BundleContext ctx,
-			FileBasedDiscoveryImpl disco) {
-		context = ctx;
-		discovery = disco;
-		publicationAndSED = Collections.synchronizedMap(new HashMap());
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.osgi.framework.ServiceReference)
-	 */
-	public Object addingService(ServiceReference arg0) {
-		ServicePublication sp = publishServicePublication(arg0);
-		return sp;
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void modifiedService(ServiceReference arg0, Object arg1) {
-		unpublishServicePublication(arg0);
-		publishServicePublication(arg0);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(org.osgi.framework.ServiceReference,
-	 *      java.lang.Object)
-	 */
-	public void removedService(ServiceReference arg0, Object arg1) {
-		unpublishServicePublication(arg0);
-	}
-
-	/**
-	 * 
-	 * @param arg0
-	 * @return
-	 */
-	private ServicePublication publishServicePublication(ServiceReference arg0) {
-		ServicePublication sp = (ServicePublication) context.getService(arg0);
-		ServiceEndpointDescription sed = discovery
-				.publishService(
-						(Collection) arg0
-								.getProperty(ServicePublication.SERVICE_INTERFACE_NAME),
-						(Collection) arg0
-								.getProperty(ServicePublication.SERVICE_INTERFACE_VERSION),
-						(Collection) arg0
-								.getProperty(ServicePublication.ENDPOINT_INTERFACE_NAME),
-						(Map) arg0
-								.getProperty(ServicePublication.SERVICE_PROPERTIES),
-						FileBasedDiscoveryImpl.PROP_VAL_PUBLISH_STRATEGY_PUSH,
-						(String) arg0
-								.getProperty(ServicePublication.ENDPOINT_ID));
-		publicationAndSED.put(arg0, sed);
-		return sp;
-	}
-
-	/**
-	 * 
-	 * @param srvReference
-	 *            the given reference to the service to unpublish
-	 */
-	private void unpublishServicePublication(ServiceReference srvReference) {
-		discovery
-				.unpublishService((ServiceEndpointDescription) publicationAndSED
-						.get(srvReference));
-		publicationAndSED.remove(srvReference);
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.classpath b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.1%Foundation-1.1"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.gitignore b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.options b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.options
deleted file mode 100644
index dba9382..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.options
+++ /dev/null
@@ -1,19 +0,0 @@
-# Debugging options for the org.eclipse.ecf.osgi.services.discovery plug-in
-
-# Turn on general debugging for the org.eclipse.ecf.osgi.services.discovery plug-in
-org.eclipse.ecf.osgi.services.discovery/debug=true
-org.eclipse.ecf.osgi.services.discovery/debug/filter = *
-org.eclipse.ecf.osgi.services.discovery/debug/flag = true
-
-# Trace when exceptions are caught
-org.eclipse.ecf.osgi.services.discovery/debug/exceptions/catching=true
-# Trace when exceptions are thrown
-org.eclipse.ecf.osgi.services.discovery/debug/exceptions/throwing=true
-
-# Trace when methods are entered
-org.eclipse.ecf.osgi.services.discovery/debug/methods/entering=true
-# Trace when methods are exited
-org.eclipse.ecf.osgi.services.discovery/debug/methods/exiting=true
-
-# Trace service publication events
-org.eclipse.ecf.osgi.services.discovery/debug/servicepublication=true
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.project b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.project
deleted file mode 100644
index b947658..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.osgi.services.discovery</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 947746f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,88 +0,0 @@
-#Thu May 06 20:48:39 PDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs
deleted file mode 100644
index 03423ff..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Feb 03 16:43:43 PST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.ui.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 71b405f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Fri May 01 09:30:31 PDT 2009
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index dea5bec..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,91 +0,0 @@
-#Fri May 08 23:15:32 PDT 2009
-ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
-ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
-CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
-CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
-CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
-CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
-ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
-ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
-ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
-FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
-FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
-FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
-FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
-ILLEGAL_EXTEND=Warning
-ILLEGAL_IMPLEMENT=Warning
-ILLEGAL_INSTANTIATE=Warning
-ILLEGAL_OVERRIDE=Warning
-ILLEGAL_REFERENCE=Warning
-INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-INVALID_JAVADOC_TAG=Ignore
-INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
-LEAK_EXTEND=Ignore
-LEAK_FIELD_DECL=Warning
-LEAK_IMPLEMENT=Warning
-LEAK_METHOD_PARAM=Warning
-LEAK_METHOD_RETURN_TYPE=Warning
-METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
-METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-UNUSED_PROBLEM_FILTERS=Warning
-eclipse.preferences.version=1
-incompatible_api_component_version=Error
-incompatible_api_component_version_include_major_without_breaking_change=Disabled
-incompatible_api_component_version_include_minor_without_api_change=Disabled
-invalid_since_tag_version=Error
-malformed_since_tag=Error
-missing_since_tag=Error
-report_api_breakage_when_major_version_incremented=Disabled
-report_resolution_errors_api_component=Warning
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 80d12d4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Fri Jan 23 15:00:57 PST 2009
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index b015a19..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,26 +0,0 @@
-#Fri May 08 23:14:42 PDT 2009
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.deprecated=1
-compilers.p.discouraged-class=0
-compilers.p.internal=1
-compilers.p.missing-packages=2
-compilers.p.missing-version-export-package=2
-compilers.p.missing-version-import-package=2
-compilers.p.missing-version-require-bundle=2
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=2
-compilers.p.unknown-attribute=1
-compilers.p.unknown-class=1
-compilers.p.unknown-element=1
-compilers.p.unknown-identifier=1
-compilers.p.unknown-resource=1
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.s.create-docs=false
-compilers.s.doc-folder=doc
-compilers.s.open-tags=1
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF
deleted file mode 100644
index 8321849..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.osgi.services.discovery
-Bundle-Version: 2.0.0.qualifier
-Bundle-Vendor: %pluginProvider
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Bundle-ActivationPolicy: lazy
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties
deleted file mode 100644
index 5b90aa0..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               about.html
-src.includes = about.html
-jre.compilation.profile = J2SE-1.4
-javacErrors.. = -assertIdentifier,-enumIdentifier
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/plugin.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/plugin.properties
deleted file mode 100644
index 30d6d6c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/plugin.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-#################################################################################
-# Copyright (c) 2010 Composent Inc. and others. All rights reserved. This
-# program and the accompanying materials are made available under the terms of
-# the Eclipse Public License v1.0 which accompanies this distribution, and is
-#
-# Contributors:
-#   EclipseSource - initial API and implementation
-#################################################################################
-pluginName=ECF OSGi R4.2 Compendium Discovery
-pluginProvider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/foo.txt b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/foo.txt
deleted file mode 100644
index a0c2040..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/foo.txt
+++ /dev/null
@@ -1 +0,0 @@
-nothing here
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
index f712df2..aa25efc 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.distribution
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.osgi.services.distribution.Activator
 Bundle-Vendor: %pluginProvider
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
index f6fca33..741fc23 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
@@ -5,7 +5,9 @@
 import java.util.Properties;

 import org.eclipse.ecf.osgi.services.remoteserviceadmin.AbstractTopologyManager;

 import org.osgi.framework.BundleContext;

+import org.osgi.framework.InvalidSyntaxException;

 import org.osgi.framework.ServiceEvent;

+import org.osgi.framework.ServiceReference;

 import org.osgi.framework.ServiceRegistration;

 import org.osgi.framework.hooks.service.EventHook;

 import org.osgi.service.remoteserviceadmin.EndpointListener;

@@ -21,6 +23,17 @@
 	private static final String endpointListenerScope = System

 			.getProperty("org.eclipse.ecf.osgi.services.discovery.endpointListenerScope"); //$NON-NLS-1$

 

+	private boolean exportRegisteredSvcs = new Boolean(

+			System.getProperty(

+					"org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcs", "true")).booleanValue(); //$NON-NLS-1$ //$NON-NLS-2$

+

+	private String exportRegisteredSvcsClassname = System

+			.getProperty("org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcsClassname"); //$NON-NLS-1$

+

+	private String exportRegisteredSvcsFilter = System

+			.getProperty(

+					"org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcsFilter", "(service.exported.interfaces=*)"); //$NON-NLS-1$ //$NON-NLS-2$

+

 	private ServiceRegistration endpointListenerRegistration;

 

 	private ServiceRegistration eventHookRegistration;

@@ -29,6 +42,18 @@
 		super(context);

 	}

 

+	public void setExportRegisteredSvcs(boolean val) {

+		this.exportRegisteredSvcs = val;

+	}

+

+	public void setExportRegisteredSvcsClassname(String classname) {

+		this.exportRegisteredSvcsClassname = classname;

+	}

+

+	public void setExportRegisteredSvcsFilter(String filter) {

+		this.exportRegisteredSvcsFilter = filter;

+	}

+

 	private String getEndpointListenerScope() {

 		// If it's set via system property, then simply use it

 		if (endpointListenerScope != null)

@@ -55,7 +80,33 @@
 		return result;

 	}

 

+	public void exportRegisteredServices(String exportRegisteredSvcsClassname,

+			String exportRegisteredSvcsFilter) {

+		ServiceReference[] existingServiceRefs = null;

+		try {

+			existingServiceRefs = getContext().getAllServiceReferences(

+					exportRegisteredSvcsClassname, exportRegisteredSvcsFilter);

+		} catch (InvalidSyntaxException e) {

+			logError(

+					"exportRegisteredServices", //$NON-NLS-1$

+					"Could not retrieve existing service references for exportRegisteredSvcsClassname=" //$NON-NLS-1$

+							+ exportRegisteredSvcsClassname

+							+ " and exportRegisteredSvcsFilter=" //$NON-NLS-1$

+							+ exportRegisteredSvcsFilter, e);

+		}

+		// Now export as if the service was registering right now...i.e. perform

+		// export

+		if (existingServiceRefs != null)

+			for (int i = 0; i < existingServiceRefs.length; i++)

+				// This method will check the service properties for

+				// remote service props. If previously registered as a

+				// remote service, it will export the remote

+				// service if not it will simply return/skip

+				handleServiceRegistering(existingServiceRefs[i]);

+	}

+

 	public void start() throws Exception {

+

 		// Register as EndpointListener, so that it gets notified when Endpoints

 		// are discovered

 		Properties props = new Properties();

@@ -69,6 +120,11 @@
 		// are registered

 		eventHookRegistration = getContext().registerService(

 				EventHook.class.getName(), this, null);

+

+		// Lastly, export any previously registered remote services

+		if (exportRegisteredSvcs)

+			exportRegisteredServices(exportRegisteredSvcsClassname,

+					exportRegisteredSvcsFilter);

 	}

 

 	public void endpointAdded(

diff --git a/doc/bundles/org.eclipse.ecf.doc/build.properties b/doc/bundles/org.eclipse.ecf.doc/build.properties
index a4d687e..c211d8a 100644
--- a/doc/bundles/org.eclipse.ecf.doc/build.properties
+++ b/doc/bundles/org.eclipse.ecf.doc/build.properties
@@ -14,7 +14,8 @@
                topics_GettingStarted.xml,\
                tocapi.xml,\
                toc.xml,\
-               schema.xml
+               schema.xml,\
+               topics_Reference_RemoteServices.xml
 src.includes = intro/,\
                about.html,\
                notices.html,\
@@ -26,7 +27,8 @@
                tocpics_Concepts.xml,\
                tocapi.xml,\
                toc.xml,\
-               schema.xml
+               schema.xml,\
+               topics_Reference_RemoteServices.xml
 bin.excludes = html/reference/api/
 generateSourceBundle=false
 
diff --git a/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml b/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
index 11d5539..e57d725 100644
--- a/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/buildapitoc.xml
@@ -1,8 +1,6 @@
 <project default="toc" basedir=".">
 
 	<target name="init">
-		<property name="package-list.path" location="${basedir}/html/reference/api/package-list"/>
-		<uptodate property="BuildAPITOC.uptodate" srcfile="${package-list.path}" targetfile="BuildAPITOC.class"/>
 	</target>
 	
 	<target name="toc" depends="init,compile">
@@ -10,24 +8,26 @@
 <toc label="JavaDoc">
 ]]></echo>
 		<java classname="BuildAPITOC" classpath="." output="tocapi.xml" append="true">
-			<arg value="${package-list.path}"/>
+			<arg value="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/package-list"/>
 		</java>
 		<echo file="tocapi.xml" append="true"><![CDATA[
 </toc>
 ]]></echo>
 	</target>
 
-	<target name="compile" unless="BuildAPITOC.uptodate">
+	<target name="compile">
 		<echo file="BuildAPITOC.java"><![CDATA[
 import java.io.*;
+import java.net.URL;
 public class BuildAPITOC {
 	public static void main(String[] args) throws Exception {
 	    System.out.println("args[0] is "+args[0]);
-		BufferedReader r = new BufferedReader(new FileReader(args[0]));
+	    URL url = new URL(args[0]);
+		BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
 		String line;
 		try {
 			while ((line = r.readLine()) != null)
-				System.out.println("<topic label=\"" + line + "\" href=\"http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/" + line.replace('.', '/') + "/package-summary.html\"/>");
+				System.out.println("<topic label=\"" + line + "\" href=\"http://download.eclipse.org/rt/ecf/3.5Test/javadoc/" + line.replace('.', '/') + "/package-summary.html\"/>");
 		} finally {
 			r.close();
 		}
diff --git a/doc/bundles/org.eclipse.ecf.doc/plugin.xml b/doc/bundles/org.eclipse.ecf.doc/plugin.xml
index a8907c9..f3c9a92 100644
--- a/doc/bundles/org.eclipse.ecf.doc/plugin.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/plugin.xml
@@ -14,6 +14,14 @@
       <toc file="topics_Reference.xml"/>
       <toc file="topics_Extpoint.xml"/>
       <toc file="topics_Tutorials.xml"/>
+      <toc
+            file="tocapi.xml"
+            primary="false">
+      </toc>
+      <toc
+            file="topics_Reference_RemoteServices.xml"
+            primary="false">
+      </toc>
     </extension>
    
    
diff --git a/doc/bundles/org.eclipse.ecf.doc/toc.xml b/doc/bundles/org.eclipse.ecf.doc/toc.xml
index a9b1bf7..20e55c5 100644
--- a/doc/bundles/org.eclipse.ecf.doc/toc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/toc.xml
@@ -2,14 +2,14 @@
 <?NLS TYPE="org.eclipse.help.toc"?>
 
 <toc label="ECF Developer Guide" link_to="toc.xml">
-   <topic label="Quick Start" href="html/gettingstarted/quickStart.html"/>
-   <topic label="OSGi 4.2 Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services"/>
-   <topic label="System Requirements" href="html/gettingstarted/prerequisites.html"/>
-   <topic label="Overview" href="html/gettingstarted/ecf_overview.html"/>
-   <topic label="Tips and Tricks" href="http://wiki.eclipse.org/ECF_Tips_Tricks"/>
    <topic label="What's New and Noteworthy" href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"/>
-   <topic label="Legal" href="notices.html"/>
-   <topic label="Programmer's Reference">
+    <topic label="Project Blog" href="http://eclipseecf.blogspot.com/"/>
+    <topic label="OSGi Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_Remote_Services">
+		<link toc="topics_Reference_RemoteServices.xml"/>
+    </topic>
+    <topic label="Distributed Event Admin" href="http://wiki.eclipse.org/Distributed_EventAdmin_Service"/>
+    <topic label="Generic Servers" href="http://wiki.eclipse.org/ECF_Servers"/>
+   <topic label="Reference">
       <anchor id="reference"/>
    </topic>
    <topic label="Tutorials">
diff --git a/doc/bundles/org.eclipse.ecf.doc/tocapi.xml b/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
index 7d5f5b0..bc37666 100644
--- a/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/tocapi.xml
@@ -1,138 +1,116 @@
 
-<toc label="JavaDoc">
-args[0] is C:\Documents and Settings\slewis\workspace.ecf.rt\org.eclipse.ecf.doc\html\reference\api\package-list
-<topic label="org.eclipse.ecf.core" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.jobs" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/jobs/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.provider" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.security" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/security/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.provider" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.security" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/security/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.sharedobject.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/sharedobject/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.start" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/start/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.status" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/status/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.user" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/user/package-summary.html"/>
-<topic label="org.eclipse.ecf.core.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.mergeable" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/mergeable/package-summary.html"/>
-<topic label="org.eclipse.ecf.datashare.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/datashare/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.impl" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/impl/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.provider" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/provider/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.resource" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/resource/package-summary.html"/>
-<topic label="org.eclipse.ecf.discovery.ui.model.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/ui/model/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/docshare/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare.menu" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/docshare/menu/package-summary.html"/>
-<topic label="org.eclipse.ecf.docshare.messages" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/docshare/messages/package-summary.html"/>
-<topic label="org.eclipse.ecf.example.clients" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/example/clients/package-summary.html"/>
-<topic label="org.eclipse.ecf.example.clients.applications" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/example/clients/applications/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.provider.trivial" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/examples/provider/trivial/package-summary.html"/>
-<topic label="org.eclipse.ecf.examples.remoteservices.hello" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/examples/remoteservices/hello/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events.socket" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/events/socket/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.events.socketfactory" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/events/socketfactory/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.filetransfer.ui.actions" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/filetransfer/ui/actions/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.discovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/osgi/services/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.discovery.local" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/osgi/services/discovery/local/package-summary.html"/>
-<topic label="org.eclipse.ecf.osgi.services.distribution" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/osgi/services/distribution/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/bot/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot.application" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/bot/application/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.bot.impl" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/bot/impl/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.chatroom" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/chatroom/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.console" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/console/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.screencapture" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/screencapture/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.url" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/url/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.collab.ui.view" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/collab/ui/view/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.history" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/history/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.im" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/im/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.roster" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/roster/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.search" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/search/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.search.message" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/search/message/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.chatroom" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/chatroom/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.dnd" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/dnd/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.menu" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/menu/package-summary.html"/>
-<topic label="org.eclipse.ecf.presence.ui.roster" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/presence/ui/roster/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.bittorrent" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/protocol/bittorrent/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.msn" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/protocol/msn/package-summary.html"/>
-<topic label="org.eclipse.ecf.protocol.msn.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/protocol/msn/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.comm" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/comm/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.comm.tcp" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/comm/tcp/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.datashare" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/datashare/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.datashare.nio" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/datashare/nio/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.discovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/discovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.browse" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/browse/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.events.socket" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/events/socket/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.httpclient" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/httpclient/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.outgoing" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/outgoing/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.retrieve" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/retrieve/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.filetransfer.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/filetransfer/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.generic" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.generic.gmm" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/generic/gmm/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.irc.bot" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/irc/bot/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.irc.bot.handler" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/irc/bot/handler/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jmdns.container" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jmdns/container/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jmdns.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jmdns/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jslp.container" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jslp/container/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.jslp.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/jslp/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.localdiscovery" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/localdiscovery/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.r_osgi.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/r_osgi/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.remoteservice" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/remoteservice/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.remoteservice.generic" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/remoteservice/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.ui.wizards" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/ui/wizards/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.xmpp" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/xmpp/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.xmpp.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/xmpp/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.core" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/core/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.core.internal" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/core/internal/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.node.internal" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/node/internal/package-summary.html"/>
-<topic label="org.eclipse.ecf.provider.zookeeper.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/provider/zookeeper/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.client" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.eventadmin" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/eventadmin/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.client" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.rest.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/rest/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.soap.client" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/soap/client/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.soap.identity" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/soap/identity/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservice.util.tracker" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/util/tracker/package-summary.html"/>
-<topic label="org.eclipse.ecf.remoteservices.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservices/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.server" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/server/package-summary.html"/>
-<topic label="org.eclipse.ecf.server.generic" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/server/generic/package-summary.html"/>
-<topic label="org.eclipse.ecf.server.generic.app" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/server/generic/app/package-summary.html"/>
-<topic label="org.eclipse.ecf.storage" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/storage/package-summary.html"/>
-<topic label="org.eclipse.ecf.sync" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/sync/package-summary.html"/>
-<topic label="org.eclipse.ecf.sync.doc" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/sync/doc/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.events" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/events/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.service" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/service/package-summary.html"/>
-<topic label="org.eclipse.ecf.telephony.call.ui.actions" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/telephony/call/ui/actions/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.actions" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/actions/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.dialogs" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/dialogs/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.hyperlink" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/hyperlink/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.screencapture" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/screencapture/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.util" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/util/package-summary.html"/>
-<topic label="org.eclipse.ecf.ui.wizards" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/ui/wizards/package-summary.html"/>
+<toc label="API JavaDoc">
+args[0] is http://download.eclipse.org/rt/ecf/3.5Test/javadoc/package-list

+<topic label="org.eclipse.ecf.core" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.jobs" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/jobs/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.provider" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/provider/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.security" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/security/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.sharedobject" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.sharedobject.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.sharedobject.provider" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/provider/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.sharedobject.security" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/security/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.sharedobject.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/sharedobject/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.start" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/start/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.status" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/status/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.user" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/user/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.core.util.reflection" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/core/util/reflection/package-summary.html"/>

+<topic label="org.eclipse.ecf.datashare" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/package-summary.html"/>

+<topic label="org.eclipse.ecf.datashare.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.datashare.mergeable" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/mergeable/package-summary.html"/>

+<topic label="org.eclipse.ecf.datashare.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/datashare/service/package-summary.html"/>

+<topic label="org.eclipse.ecf.discovery" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/discovery/package-summary.html"/>

+<topic label="org.eclipse.ecf.discovery.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/discovery/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.discovery.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/discovery/service/package-summary.html"/>

+<topic label="org.eclipse.ecf.docshare" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/docshare/package-summary.html"/>

+<topic label="org.eclipse.ecf.docshare.menu" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/docshare/menu/package-summary.html"/>

+<topic label="org.eclipse.ecf.docshare.messages" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/docshare/messages/package-summary.html"/>

+<topic label="org.eclipse.ecf.example.clients" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/example/clients/package-summary.html"/>

+<topic label="org.eclipse.ecf.example.clients.applications" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/example/clients/applications/package-summary.html"/>

+<topic label="org.eclipse.ecf.examples.loadbalancing" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/loadbalancing/package-summary.html"/>

+<topic label="org.eclipse.ecf.examples.provider.trivial" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/provider/trivial/package-summary.html"/>

+<topic label="org.eclipse.ecf.examples.remoteservices.common" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/remoteservices/common/package-summary.html"/>

+<topic label="org.eclipse.ecf.examples.remoteservices.hello" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/remoteservices/hello/package-summary.html"/>

+<topic label="org.eclipse.ecf.examples.remoteservices.hello.impl" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/examples/remoteservices/hello/impl/package-summary.html"/>

+<topic label="org.eclipse.ecf.filetransfer" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/package-summary.html"/>

+<topic label="org.eclipse.ecf.filetransfer.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.filetransfer.events.socket" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/events/socket/package-summary.html"/>

+<topic label="org.eclipse.ecf.filetransfer.events.socketfactory" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/events/socketfactory/package-summary.html"/>

+<topic label="org.eclipse.ecf.filetransfer.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.filetransfer.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/filetransfer/service/package-summary.html"/>

+<topic label="org.eclipse.ecf.osgi.services.distribution" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/osgi/services/distribution/package-summary.html"/>

+<topic label="org.eclipse.ecf.osgi.services.remoteserviceadmin" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/osgi/services/remoteserviceadmin/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.bot" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/bot/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.bot.application" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/bot/application/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.bot.impl" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/bot/impl/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.chatroom" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/chatroom/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.history" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/history/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.im" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/im/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.roster" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/roster/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.search" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/search/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.search.message" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/search/message/package-summary.html"/>

+<topic label="org.eclipse.ecf.presence.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/presence/service/package-summary.html"/>

+<topic label="org.eclipse.ecf.protocol.bittorrent" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/protocol/bittorrent/package-summary.html"/>

+<topic label="org.eclipse.ecf.protocol.msn" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/protocol/msn/package-summary.html"/>

+<topic label="org.eclipse.ecf.protocol.msn.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/protocol/msn/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.comm" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/comm/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.comm.tcp" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/comm/tcp/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.datashare" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/datashare/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.datashare.nio" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/datashare/nio/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.discovery" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/discovery/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.dnssd" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/dnssd/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.browse" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/browse/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.events.socket" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/events/socket/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.httpclient" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/httpclient/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.outgoing" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/outgoing/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.retrieve" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/retrieve/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.filetransfer.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/filetransfer/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.generic" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/generic/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.generic.gmm" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/generic/gmm/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.irc.bot" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/irc/bot/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.irc.bot.handler" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/irc/bot/handler/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.jslp.container" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/jslp/container/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.jslp.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/jslp/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.local.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/local/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.r_osgi.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/r_osgi/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.remoteservice.generic" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/remoteservice/generic/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.xmpp" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/xmpp/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.xmpp.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/xmpp/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.zookeeper" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/zookeeper/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.zookeeper.core" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/zookeeper/core/package-summary.html"/>

+<topic label="org.eclipse.ecf.provider.zookeeper.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/provider/zookeeper/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/client/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.eventadmin" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/eventadmin/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rest" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rest.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/client/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rest.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rest.synd" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/synd/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rest.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rest/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rpc" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rpc/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rpc.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rpc/client/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.rpc.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/rpc/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.soap.client" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/soap/client/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.soap.identity" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/soap/identity/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.util" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/util/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservice.util.tracker" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservice/util/tracker/package-summary.html"/>

+<topic label="org.eclipse.ecf.remoteservices.rest.rss" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/remoteservices/rest/rss/package-summary.html"/>

+<topic label="org.eclipse.ecf.server" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/package-summary.html"/>

+<topic label="org.eclipse.ecf.server.generic" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/generic/package-summary.html"/>

+<topic label="org.eclipse.ecf.server.generic.app" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/generic/app/package-summary.html"/>

+<topic label="org.eclipse.ecf.storage" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/storage/package-summary.html"/>

+<topic label="org.eclipse.ecf.sync" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/sync/package-summary.html"/>

+<topic label="org.eclipse.ecf.sync.doc" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/sync/doc/package-summary.html"/>

+<topic label="org.eclipse.ecf.telephony.call" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/package-summary.html"/>

+<topic label="org.eclipse.ecf.telephony.call.dtmf" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/dtmf/package-summary.html"/>

+<topic label="org.eclipse.ecf.telephony.call.events" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/events/package-summary.html"/>

+<topic label="org.eclipse.ecf.telephony.call.service" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/telephony/call/service/package-summary.html"/>

 
 </toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
index f75d2f7..a1d4984 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Reference.xml
@@ -2,12 +2,19 @@
 <?NLS TYPE="org.eclipse.help.toc"?>
 
 <toc label="Reference" link_to="toc.xml#reference">
-	<topic label="Introduction" href="html/concepts/intro.html"/>
-    <topic label="OSGi 4.2 Remote Services" href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services"/>
+    <topic label="What's New and Noteworthy" href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"/>
 	<topic label="ECF Architecture" href="http://www.eclipse.org/ecf/documentation.php"/>
 	<topic label="ECF API" href="http://wiki.eclipse.org/index.php/ECF_API_Docs"/>
-	<topic label="JavaDoc" href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/overview-summary.html"/>
-	<topic label="Project Wiki" href="http://wiki.eclipse.org/index.php/Eclipse_Communication_Framework_Project"/>
+	<topic label="API JavaDoc" href="http://download.eclipse.org/rt/ecf/3.5Test/javadoc">
+		<link toc="tocapi.xml"/>
+	</topic>
+	<topic label="Homepage" href="http://www.eclipse.org/ecf"/>
+	<topic label="Summary" href="http://www.eclipse.org/projects/project_summary.php?projectid=rt.ecf"/>
+	<topic label="Wiki" href="http://wiki.eclipse.org/ECF"/>
+	<topic label="Mailing List" href="https://dev.eclipse.org/mailman/listinfo/ecf-dev"/>
+	<topic label="Newsgroup" href="http://www.eclipse.org/forums/index.php"/>
+	<topic label="IP Log" href="http://www.eclipse.org/projects/ip_log.php?projectid=rt.ecf"/>
+    <topic label="Project Blog" href="http://eclipseecf.blogspot.com/"/>
 	<topic label="Extension Points">
 		<link toc="topics_Extpoint.xml"/>
 	</topic>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
new file mode 100644
index 0000000..6ebfc52
--- /dev/null
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Reference_RemoteServices.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+<toc label="OSGi Remote Services"> 
+	<topic label="REST API" href="http://wiki.eclipse.org/REST_abstraction_for_ECF"/>
+    <topic label="Getting Started with OSGi Remote Services" href="http://wiki.eclipse.org/Getting_Started_with_ECF%27s_OSGi_Remote_Services_Implementation"/>
+    <topic label="Remote Services Admin" href="http://wiki.eclipse.org/Remote_Services_Admin"/>
+    <topic label="Asynchronous Proxies" href="http://wiki.eclipse.org/Asynchronous_Proxies_for_Remote_Services"/>
+    <topic label="OSGi Remote Services and ECF" href="http://wiki.eclipse.org/OSGi_4.2_Remote_Services_and_ECF"/>
+    <topic label="File-based Discovery of Remote Services" href="http://wiki.eclipse.org/File-based_Discovery"/>
+</toc>
diff --git a/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml b/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
index 239dc76..cf9db58 100644
--- a/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/topics_Tutorials.xml
@@ -8,5 +8,5 @@
 	<topic label="Distributed EventAdmin Service" href="http://wiki.eclipse.org/Distributed_EventAdmin_Service"/>
 	<topic label="Real-Time Shared Editing" href="http://wiki.eclipse.org/DocShare_Plugin"/>
 	<topic label="Create an IRC bot" href="html/tutorials/bot.html"/>
-	<topic label="Other Info" href="http://wiki.eclipse.org/Eclipse_Communication_Framework_Project"/>
+	<topic label="Other Info" href="http://wiki.eclipse.org/ECF"/>
 </toc>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.classpath
similarity index 99%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.classpath
index 64c5e31..2d1a430 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
similarity index 90%
rename from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
index f9bafca..ef31131 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.provider.discovery.local</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.examples.provider.remoteservice</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..a97b222
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Jul 04 13:23:29 PDT 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

+org.eclipse.jdt.core.compiler.compliance=1.5

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.5

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.pde.core.prefs
similarity index 74%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.pde.core.prefs
index bbcd50b..d16699c 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.pde.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,4 @@
-#Tue Mar 09 13:32:16 PST 2010
-eclipse.preferences.version=1
-pluginProject.extensions=true
-resolve.requirebundle=false
+#Mon Jul 04 13:28:20 PDT 2011

+eclipse.preferences.version=1

+pluginProject.extensions=true

+resolve.requirebundle=false

diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ef68727
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %bundle.name
+Bundle-SymbolicName: org.eclipse.ecf.examples.provider.remoteservice;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %bundle.provider
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Import-Package: org.eclipse.ecf.core;version="3.0.0",
+ org.eclipse.ecf.core.events,
+ org.eclipse.ecf.core.identity,
+ org.eclipse.ecf.core.provider,
+ org.eclipse.ecf.core.security,
+ org.eclipse.ecf.examples.provider.trivial.identity,
+ org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.events;version="6.0.0",
+ org.eclipse.ecf.remoteservice.util;version="6.0.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
+ org.osgi.framework;version="1.6.0"
+Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Export-Package: org.eclipse.ecf.examples.provider.remoteservice.identity,
+ org.eclipse.ecf.internal.examples.provider.remoteservice.container;x-internal:=true
+Bundle-Localization: plugin
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
similarity index 79%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
index cfa3528..8665ac2 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
@@ -1,6 +1,6 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/,\
-               plugin.properties
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .,\

+               plugin.xml,\

+               plugin.properties

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.properties
similarity index 60%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.properties
index e649bf6..26decd9 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.properties
@@ -1,11 +1,12 @@
-############################################################################
-# Copyright (c) 2010 Composent and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-############################################################################
-plugin.name=ECF Distribution Tests LocalDiscovery
-plugin.provider=Eclipse.org - ECF
-
+################################################################################

+# Copyright (c) 2011 Composent, Inc. and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+# 

+# Contributors:

+#     Composent, Inc. - initial API and implementation

+################################################################################

+bundle.name=ECF Example Remoteservice Provider

+bundle.provider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.xml b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.xml
new file mode 100644
index 0000000..8605ad5
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.4"?>

+<plugin>

+   <extension

+         point="org.eclipse.ecf.identity.namespace">

+      <namespace

+            class="org.eclipse.ecf.examples.provider.remoteservice.identity.RSExampleNamespace"

+            description="RS Example Namespace"

+            name="ecf.namespace.example.rs">

+      </namespace>

+   </extension>

+   <extension

+         point="org.eclipse.ecf.containerFactory">

+      <containerFactory

+            class="org.eclipse.ecf.internal.examples.provider.remoteservice.container.RSExampleContainerInstantiator"

+            name="ecf.container.example.rs">

+      </containerFactory>

+   </extension>

+

+</plugin>

diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleID.java
old mode 100755
new mode 100644
similarity index 70%
copy from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleID.java
index 0d10a27..0e816df
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleID.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2004 Composent, Inc. and others.
+ * Copyright (c) 2011 Composent, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,27 +8,16 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
-
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.remoteservice.identity;
 
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.identity.StringID;
 
-/**
- *
- */
-public class TrivialID extends StringID {
+public class RSExampleID extends StringID {
 
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = -3656862045346223983L;
 
-	/**
-	 * @param n
-	 * @param s
-	 */
-	protected TrivialID(Namespace n, String s) {
+	protected RSExampleID(Namespace n, String s) {
 		super(n, s);
 	}
 
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleNamespace.java
old mode 100755
new mode 100644
similarity index 79%
copy from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleNamespace.java
index 2898a5f..e2c6df9
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/examples/provider/remoteservice/identity/RSExampleNamespace.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2004 Composent, Inc. and others.
+ * Copyright (c) 2011 Composent, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,21 +8,17 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
-
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.remoteservice.identity;
 
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
 import org.eclipse.ecf.core.identity.Namespace;
 
-/**
- *
- */
-public class TrivialNamespace extends Namespace {
+public class RSExampleNamespace extends Namespace {
 
 	private static final long serialVersionUID = 1235788855435011811L;
-	public static final String SCHEME = "trivial";
-	public static final String NAME = "ecf.namespace.trivial";
+	public static final String SCHEME = "example";
+	public static final String NAME = "ecf.namespace.example.rs";
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
@@ -34,7 +30,7 @@
 			throw new IDCreateException("parameters not of correct size");
 		if (!(parameters[0] instanceof String))
 			throw new IDCreateException("parameter not of String type");
-		return new TrivialID(this, (String) parameters[0]);
+		return new RSExampleID(this, (String) parameters[0]);
 	}
 
 	/* (non-Javadoc)
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainer.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainer.java
new file mode 100644
index 0000000..79178fb
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainer.java
@@ -0,0 +1,281 @@
+/****************************************************************************
+ * Copyright (c) 2011 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.internal.examples.provider.remoteservice.container;
+
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ecf.core.AbstractContainer;
+import org.eclipse.ecf.core.ContainerConnectException;
+import org.eclipse.ecf.core.events.ContainerConnectedEvent;
+import org.eclipse.ecf.core.events.ContainerConnectingEvent;
+import org.eclipse.ecf.core.events.ContainerDisconnectedEvent;
+import org.eclipse.ecf.core.events.ContainerDisconnectingEvent;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace;
+import org.eclipse.ecf.remoteservice.IOSGiRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteFilter;
+import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.IRemoteServiceCallPolicy;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.IRemoteServiceID;
+import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
+import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
+import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
+import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
+import org.eclipse.ecf.remoteservice.util.RemoteFilterImpl;
+import org.eclipse.equinox.concurrent.future.IFuture;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Trivial container implementation. Note that container adapter implementations can be
+ * provided by the container class to expose appropriate adapters.
+ */
+@SuppressWarnings("restriction")
+public class RSExampleContainer extends AbstractContainer implements IRemoteServiceContainerAdapter, IOSGiRemoteServiceContainerAdapter {
+
+	/*
+	 * The targetID.  This value is set on 'connect' and unset in 'disconnect'.
+	 * This represents the other process that this container is connected to.
+	 * Value is returned via getConnectedID()
+	 */
+	private ID targetID = null;
+	/*
+	 * This is the ID for this container.  Returned via getID().
+	 */
+	private ID containerID = null;
+
+	public RSExampleContainer() throws IDCreateException {
+		super();
+		this.containerID = IDFactory.getDefault().createGUID();
+	}
+
+	public RSExampleContainer(ID id) {
+		super();
+		Assert.isNotNull(id);
+		this.containerID = id;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#connect(org.eclipse.ecf.core.identity.ID,
+	 *      org.eclipse.ecf.core.security.IConnectContext)
+	 */
+	public void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException {
+		if (!targetID.getNamespace().getName().equals(getConnectNamespace().getName()))
+			throw new ContainerConnectException("targetID not of appropriate Namespace");
+
+		fireContainerEvent(new ContainerConnectingEvent(getID(), targetID));
+
+		// XXX connect to remote service here
+
+		this.targetID = targetID;
+		fireContainerEvent(new ContainerConnectedEvent(getID(), targetID));
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#disconnect()
+	 */
+	public void disconnect() {
+		fireContainerEvent(new ContainerDisconnectingEvent(getID(), targetID));
+
+		final ID oldID = targetID;
+
+		// XXX disconnect here
+
+		fireContainerEvent(new ContainerDisconnectedEvent(getID(), oldID));
+	}
+
+	public void dispose() {
+		disconnect();
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.clear();
+		}
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#getConnectNamespace()
+	 */
+	public Namespace getConnectNamespace() {
+		return IDFactory.getDefault().getNamespaceByName(TrivialNamespace.NAME);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.IContainer#getConnectedID()
+	 */
+	public ID getConnectedID() {
+		return targetID;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.identity.IIdentifiable#getID()
+	 */
+	public ID getID() {
+		return containerID;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.core.AbstractContainer#getAdapter(java.lang.Class)
+	 */
+	public Object getAdapter(@SuppressWarnings("rawtypes") Class serviceType) {
+		/*
+		 * See AbstractContainer.getAdapter() implementation.
+		 */
+		return super.getAdapter(serviceType);
+	}
+
+	// IOSGiRemoteServiceContainerAdapter impl.  This supercedes the implementation of 
+	// IRemoteServiceContainerAdapter.registerRemoteService
+	public IRemoteServiceRegistration registerRemoteService(String[] clazzes,
+			@SuppressWarnings("rawtypes") ServiceReference aServiceReference, @SuppressWarnings("rawtypes") Dictionary properties) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	// IRemoteServiceContainerAdapter impl
+	private List<IRemoteServiceListener> remoteServiceListeners = new ArrayList<IRemoteServiceListener>();
+	
+	void fireRemoteServiceEvent(IRemoteServiceEvent event) {
+		List<IRemoteServiceListener> toNotify = null;
+		// Copy array
+		synchronized (remoteServiceListeners) {
+			toNotify = new ArrayList<IRemoteServiceListener>(remoteServiceListeners);
+		}
+		for (IRemoteServiceListener i: toNotify) {
+			i.handleServiceEvent(event);
+		}
+	}
+
+	public void addRemoteServiceListener(IRemoteServiceListener listener) {
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.add(listener);
+		}
+	}
+
+	public void removeRemoteServiceListener(IRemoteServiceListener listener) {
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.remove(listener);
+		}
+	}
+
+	public IRemoteServiceRegistration registerRemoteService(String[] clazzes,
+			Object service, @SuppressWarnings("rawtypes") Dictionary properties) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
+			ID[] idFilter, String clazz, String filter)
+			throws InvalidSyntaxException, ContainerConnectException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IFuture asyncGetRemoteServiceReferences(ID target, ID[] idFilter,
+			String clazz, String filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID[] idFilter,
+			String clazz, String filter) throws InvalidSyntaxException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
+			String clazz, String filter) throws InvalidSyntaxException,
+			ContainerConnectException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IFuture asyncGetRemoteServiceReferences(ID[] idFilter, String clazz,
+			String filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IFuture asyncGetRemoteServiceReferences(ID target, String clazz,
+			String filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference[] getAllRemoteServiceReferences(
+			String clazz, String filter) throws InvalidSyntaxException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Namespace getRemoteServiceNamespace() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceID getRemoteServiceID(ID containerID,
+			long containerRelativeID) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteServiceReference getRemoteServiceReference(
+			IRemoteServiceID serviceID) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public IRemoteService getRemoteService(IRemoteServiceReference reference) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public boolean ungetRemoteService(IRemoteServiceReference reference) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public IRemoteFilter createRemoteFilter(String filter)
+			throws InvalidSyntaxException {
+		return new RemoteFilterImpl(filter);
+	}
+
+	public void setConnectContextForAuthentication(
+			IConnectContext connectContext) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+	
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainerInstantiator.java b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainerInstantiator.java
new file mode 100644
index 0000000..3f0c6be
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/src/org/eclipse/ecf/internal/examples/provider/remoteservice/container/RSExampleContainerInstantiator.java
@@ -0,0 +1,47 @@
+/****************************************************************************
+ * Copyright (c) 2011 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.internal.examples.provider.remoteservice.container;
+
+import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.provider.BaseRemoteServiceContainerInstantiator;
+
+public class RSExampleContainerInstantiator extends BaseRemoteServiceContainerInstantiator {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.core.provider.BaseContainerInstantiator#createInstance(org.eclipse.ecf.core.ContainerTypeDescription, java.lang.Object[])
+	 */
+	public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException {
+		try {
+			if (parameters != null && parameters.length > 0) {
+				if (parameters[0] instanceof ID)
+					return new RSExampleContainer((ID) parameters[0]);
+				if (parameters[0] instanceof String)
+					return new RSExampleContainer(IDFactory.getDefault().createStringID((String) parameters[0]));
+			}
+			return new RSExampleContainer();
+		} catch (final IDCreateException e) {
+			throw new ContainerCreateException("Exception creating ID for trivial container", e);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.core.provider.BaseContainerInstantiator#getSupportedAdapterTypes(org.eclipse.ecf.core.ContainerTypeDescription)
+	 */
+	public String[] getSupportedAdapterTypes(ContainerTypeDescription description) {
+		// TODO Return String [] with adapter types supported for the given description
+		return super.getSupportedAdapterTypes(description);
+	}
+}
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
index 046d8cb..be99f72
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/META-INF/MANIFEST.MF
@@ -1,13 +1,18 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: ECF Trivial Provider
+Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.examples.provider.trivial;singleton:=true
 Bundle-Version: 1.0.200.provider
 Bundle-Activator: org.eclipse.ecf.internal.examples.provider.trivial.Activator
-Bundle-Vendor: Eclipse.org
+Bundle-Vendor: %bundle.provider
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.ecf
 Eclipse-LazyStart: true
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
+Export-Package: org.eclipse.ecf.examples.provider.trivial,
+ org.eclipse.ecf.examples.provider.trivial.identity,
+ org.eclipse.ecf.internal.examples.provider.trivial;x-internal:=true,
+ org.eclipse.ecf.internal.examples.provider.trivial.container;x-internal:=true
+Bundle-Localization: bundle
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties
old mode 100755
new mode 100644
index 233c275..473c7b3
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/build.properties
@@ -3,6 +3,7 @@
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               products/
+               products/,\
+               bundle.properties
 jre.compilation.profile = J2SE-1.4
 src.includes = products/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/bundle.properties
similarity index 62%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
rename to examples/bundles/org.eclipse.ecf.examples.provider.trivial/bundle.properties
index e649bf6..3071af4 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/bundle.properties
@@ -1,11 +1,12 @@
-############################################################################
-# Copyright (c) 2010 Composent and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-############################################################################
-plugin.name=ECF Distribution Tests LocalDiscovery
-plugin.provider=Eclipse.org - ECF
-
+################################################################################

+# Copyright (c) 2011 Composent, Inc. and others.

+# All rights reserved. This program and the accompanying materials

+# are made available under the terms of the Eclipse Public License v1.0

+# which accompanies this distribution, and is available at

+# http://www.eclipse.org/legal/epl-v10.html

+# 

+# Contributors:

+#     Composent, Inc. - initial API and implementation

+################################################################################

+bundle.name=ECF Trivial Provider

+bundle.provider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
old mode 100755
new mode 100644
index 32aa674..7ace60c
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/plugin.xml
@@ -4,7 +4,7 @@
    <extension
          point="org.eclipse.ecf.identity.namespace">
       <namespace
-            class="org.eclipse.ecf.internal.examples.provider.trivial.identity.TrivialNamespace"
+            class="org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace"
             description="ECF Trivial Container Namespace"
             name="ecf.namespace.trivial">
       </namespace>
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialID.java
old mode 100755
new mode 100644
similarity index 85%
rename from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
rename to examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialID.java
index 0d10a27..859d249
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialID.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialID.java
@@ -9,25 +9,15 @@
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
 
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.trivial.identity;
 
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.identity.StringID;
 
-/**
- *
- */
 public class TrivialID extends StringID {
 
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = -3656862045346223983L;
 
-	/**
-	 * @param n
-	 * @param s
-	 */
 	protected TrivialID(Namespace n, String s) {
 		super(n, s);
 	}
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
old mode 100755
new mode 100644
similarity index 95%
rename from examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
rename to examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
index 2898a5f..3b7ab14
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/identity/TrivialNamespace.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/examples/provider/trivial/identity/TrivialNamespace.java
@@ -9,15 +9,12 @@
  *    Composent, Inc. - initial API and implementation
  *****************************************************************************/
 
-package org.eclipse.ecf.internal.examples.provider.trivial.identity;
+package org.eclipse.ecf.examples.provider.trivial.identity;
 
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
 import org.eclipse.ecf.core.identity.Namespace;
 
-/**
- *
- */
 public class TrivialNamespace extends Namespace {
 
 	private static final long serialVersionUID = 1235788855435011811L;
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java
old mode 100755
new mode 100644
index 8888164..6b68fdd
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainer.java
@@ -23,7 +23,7 @@
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.internal.examples.provider.trivial.identity.TrivialNamespace;
+import org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace;
 
 /**
  * Trivial container implementation. Note that container adapter implementations can be
diff --git a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java
old mode 100755
new mode 100644
index 4cce5e6..c678294
--- a/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.trivial/src/org/eclipse/ecf/internal/examples/provider/trivial/container/TrivialContainerInstantiator.java
@@ -19,9 +19,6 @@
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.provider.BaseContainerInstantiator;
 
-/**
- *
- */
 public class TrivialContainerInstantiator extends BaseContainerInstantiator {
 
 	/* (non-Javadoc)
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
index d193831..6fe7d65 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
@@ -3,12 +3,12 @@
   <endpoint-description>

     <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>

     <property name="endpoint.framework.uuid" value-type="String" value="70cd3d4b-4931-0010-1b63-d64101cefd5e"/>

-    <property name="endpoint.id" value-type="String" value="ecftcp://VAIO:3282/server"/>

-    <property name="endpoint.package.version.org.eclipse.ecf.tests.remoteservice" value-type="String" value="2.0.0"/>

-    <property name="endpoint.service.id" value-type="Long" value="1"/>

+    <property name="endpoint.id" value-type="String" value="ecftcp://localhost:3787/server"/>

+    <property name="endpoint.service.id" value-type="Long" value="0"/>

+	<property name="endpoint.package.version.org.eclipse.ecf.examples.remoteservices.hello" value-type="String" value="3.0.0"/>

     <property name="objectClass" value-type="String">

       <array>

-        <value>org.eclipse.ecf.tests.remoteservice.IConcatService</value>

+        <value>org.eclipse.ecf.examples.remoteservices.hello.IHello</value>

       </array>

     </property>

     <property name="remote.configs.supported" value-type="String">

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product
index f329f1a..a5b48ad 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product
@@ -1,46 +1,47 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>
-      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <plugins>
-      <plugin id="ch.ethz.iks.r_osgi.remote"/>
-      <plugin id="org.eclipse.core.contenttype"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.provider"/>
-      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
-      <plugin id="org.eclipse.ecf.sharedobject"/>
-      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
-      <plugin id="org.eclipse.equinox.app"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.concurrent"/>
-      <plugin id="org.eclipse.equinox.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-   <configurations>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<product version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>

+      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>

+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>

+   </launcherArgs>

+

+   <plugins>

+      <plugin id="ch.ethz.iks.r_osgi.remote"/>

+      <plugin id="org.eclipse.core.contenttype"/>

+      <plugin id="org.eclipse.core.jobs"/>

+      <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>

+      <plugin id="org.eclipse.ecf"/>

+      <plugin id="org.eclipse.ecf.discovery"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs"/>

+      <plugin id="org.eclipse.ecf.identity"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

+      <plugin id="org.eclipse.ecf.provider"/>

+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>

+      <plugin id="org.eclipse.ecf.remoteservice"/>

+      <plugin id="org.eclipse.ecf.sharedobject"/>

+      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>

+      <plugin id="org.eclipse.equinox.app"/>

+      <plugin id="org.eclipse.equinox.common"/>

+      <plugin id="org.eclipse.equinox.concurrent"/>

+      <plugin id="org.eclipse.equinox.preferences"/>

+      <plugin id="org.eclipse.equinox.registry"/>

+      <plugin id="org.eclipse.osgi"/>

+      <plugin id="org.eclipse.osgi.services"/>

+      <plugin id="org.objectweb.asm"/>

+   </plugins>

+

+   <configurations>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.rs" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />

+   </configurations>

+

+</product>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
similarity index 74%
rename from "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
rename to "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
index b335ebb..61983c8 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050edef,generic\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.generichelloconsumer.local" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">

+<product name="Generic Hello Consumer EDEF Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef.generic" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.1.qualifier" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -31,9 +31,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <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"/>

@@ -48,5 +48,9 @@
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>

    </plugins>

 

+   <configurations>

+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />

+   </configurations>

 

 </product>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product"
index 721e9de..916a78a 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,generic\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.generichelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="Generic Hello Consumer Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zeroconf.generic" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -30,9 +30,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

       <plugin id="org.eclipse.ecf.provider"/>

       <plugin id="org.eclipse.ecf.provider.jmdns"/>

       <plugin id="org.eclipse.ecf.provider.remoteservice"/>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product"
index 972935f..87026b8 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zeroconf,r-osgi\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="R-OSGi Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.rosgihelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="R-OSGi Hello Consumer Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zeroconf.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -32,9 +32,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

       <plugin id="org.eclipse.ecf.provider"/>

       <plugin id="org.eclipse.ecf.provider.jmdns"/>

       <plugin id="org.eclipse.ecf.provider.jslp"/>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product"
index 7ebd524..c09306f 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,generic\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.zoogenerichelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="Generic Hello Consumer Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zookeeper.generic" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -40,9 +40,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <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.provider.zookeeper"/>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product"
index 02cb790..d910b78 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050zookeeper,r-osgi\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="R-OSGi Zookeeper Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.rosgizookeeperhelloconsumer" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="R-OSGi Hello Consumer Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.consumer.zookeeper.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -39,9 +39,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

       <plugin id="org.eclipse.ecf.provider"/>

       <plugin id="org.eclipse.ecf.provider.r_osgi"/>

       <plugin id="org.eclipse.ecf.provider.zookeeper"/>

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java
index 8dcb26e..bc8fe36 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/src/org/eclipse/ecf/internal/examples/remoteservices/hello/consumer/HelloConsumerApplication.java
@@ -64,7 +64,7 @@
 		// property set (as defined by OSGi 4.2 remote services spec).
 		helloServiceTracker = new ServiceTracker(bundleContext,
 				createRemoteFilter(), this);
-		helloServiceTracker.open(true);
+		helloServiceTracker.open();
 
 		waitForDone();
 
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product"
index 2b7f2f3..f32aa23 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS \050zeroconf,generic\051.product"
@@ -1,59 +1,67 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product name="ECF Remote Services Example Hello DS" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.HelloConsumerDS" version="1.0.0" useFeatures="false" includeLaunchers="true">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog</programArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <launcher>
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-      <plugin id="org.eclipse.core.contenttype"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.runtime"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
-      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
-      <plugin id="org.eclipse.ecf.provider"/>
-      <plugin id="org.eclipse.ecf.provider.jmdns"/>
-      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
-      <plugin id="org.eclipse.ecf.sharedobject"/>
-      <plugin id="org.eclipse.equinox.app"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.concurrent"/>
-      <plugin id="org.eclipse.equinox.ds"/>
-      <plugin id="org.eclipse.equinox.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.equinox.util"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </plugins>
-
-   <configurations>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="3" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<product name="ECF Remote Services Example Hello DS" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer.HelloConsumerDS" version="3.0.0.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-console -consoleLog</programArgs>

+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>

+   </launcherArgs>

+

+   <launcher>

+      <solaris/>

+      <win useIco="false">

+         <bmp/>

+      </win>

+   </launcher>

+

+   <vm>

+   </vm>

+

+   <plugins>

+      <plugin id="org.eclipse.core.contenttype"/>

+      <plugin id="org.eclipse.core.jobs"/>

+      <plugin id="org.eclipse.core.runtime"/>

+      <plugin id="org.eclipse.ecf"/>

+      <plugin id="org.eclipse.ecf.discovery"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer"/>

+      <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.proxy"/>

+      <plugin id="org.eclipse.ecf.provider"/>

+      <plugin id="org.eclipse.ecf.provider.jmdns"/>

+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>

+      <plugin id="org.eclipse.ecf.remoteservice"/>

+      <plugin id="org.eclipse.ecf.sharedobject"/>

+      <plugin id="org.eclipse.equinox.app"/>

+      <plugin id="org.eclipse.equinox.common"/>

+      <plugin id="org.eclipse.equinox.concurrent"/>

+      <plugin id="org.eclipse.equinox.ds"/>

+      <plugin id="org.eclipse.equinox.preferences"/>

+      <plugin id="org.eclipse.equinox.registry"/>

+      <plugin id="org.eclipse.equinox.util"/>

+      <plugin id="org.eclipse.osgi"/>

+      <plugin id="org.eclipse.osgi.services"/>

+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>

+   </plugins>

+

+   <configurations>

+      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer" 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.proxy" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.ecf.provider" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.ecf.provider.jmdns" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.equinox.app" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />

+   </configurations>

+

+</product>

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF
index 338236e..2e9073a 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.ds.host;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
  CDC-1.1/Foundation-1.1
-Import-Package: org.eclipse.ecf.core;version="3.0.0",
- org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
- org.eclipse.equinox.app;version="1.0.0"
+Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
+ org.eclipse.equinox.app;version="1.1.0"
 Service-Component: OSGI-INF/hello.xml
 Bundle-Localization: bundle
-Export-Package: org.eclipse.ecf.examples.internal.remoteservices.hello.ds.host
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml
index ad44a49..81a1286 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/OSGI-INF/hello.xml
@@ -3,9 +3,8 @@
    <implementation class="org.eclipse.ecf.examples.internal.remoteservices.hello.ds.host.HelloComponent"/>
    <property name="service.exported.interfaces" type="String" value="*"/>
    <property name="service.exported.configs" type="String" value="ecf.generic.server"/>
-   <property name="org.eclipse.ecf.containerFactoryArgs" type="String" value="ecftcp://localhost:30001/server"/>
+   <property name="ecf.exported.containerfactoryargs" type="String" value="ecftcp://localhost:3787/server"/>
    <service>
       <provide interface="org.eclipse.ecf.examples.remoteservices.hello.IHello"/>
    </service>
-   <reference cardinality="1..1" interface="org.eclipse.ecf.core.IContainerFactory" name="IContainerFactory" policy="static"/>
 </scr:component>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties
index f1d5c84..4402b98 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/build.properties
@@ -2,16 +2,14 @@
 bin.includes = META-INF/,\
                .,\
                OSGI-INF/hello.xml,\
-               plugin.xml,\
                about.html,\
                bundle.properties,\
                products/,\
-               OSGI-INF/
+               OSGI-INF/,\
+               plugin.xml
 source.. = src/
 src.includes = bundle.properties,\
                about.html,\
                products/
-jre.compilation.profile = J2SE-1.4
-javacTarget=jsr14
-javacSource=1.5
+jre.compilation.profile = J2SE-1.5
                
\ No newline at end of file
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product"
index 2123f0b..98efe93 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host \050zeroconf,generic\051.product"
@@ -1,58 +1,66 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product name="ECF Remote Service Example DS Host" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.host.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.host.HelloHostDS" version="1.0.0" useFeatures="false" includeLaunchers="true">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog</programArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <launcher>
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-      <plugin id="org.eclipse.core.contenttype"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.core.runtime"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.host"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
-      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
-      <plugin id="org.eclipse.ecf.provider"/>
-      <plugin id="org.eclipse.ecf.provider.jmdns"/>
-      <plugin id="org.eclipse.ecf.provider.remoteservice"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
-      <plugin id="org.eclipse.ecf.sharedobject"/>
-      <plugin id="org.eclipse.equinox.app"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.concurrent"/>
-      <plugin id="org.eclipse.equinox.ds"/>
-      <plugin id="org.eclipse.equinox.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.equinox.util"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </plugins>
-
-   <configurations>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.host" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<product name="ECF Remote Service Example DS Host" uid="org.eclipse.ecf.examples.remoteservices.hello.ds.host.product" application="org.eclipse.ecf.examples.remoteservices.hello.ds.host.HelloHostDS" version="2.0.0.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-console -consoleLog</programArgs>

+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>

+   </launcherArgs>

+

+   <windowImages/>

+

+   <launcher>

+      <solaris/>

+      <win useIco="false">

+         <bmp/>

+      </win>

+   </launcher>

+

+   <vm>

+   </vm>

+

+   <plugins>

+      <plugin id="org.eclipse.core.contenttype"/>

+      <plugin id="org.eclipse.core.jobs"/>

+      <plugin id="org.eclipse.core.runtime"/>

+      <plugin id="org.eclipse.ecf"/>

+      <plugin id="org.eclipse.ecf.discovery"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.ds.host"/>

+      <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.proxy"/>

+      <plugin id="org.eclipse.ecf.provider"/>

+      <plugin id="org.eclipse.ecf.provider.jmdns"/>

+      <plugin id="org.eclipse.ecf.provider.remoteservice"/>

+      <plugin id="org.eclipse.ecf.remoteservice"/>

+      <plugin id="org.eclipse.ecf.sharedobject"/>

+      <plugin id="org.eclipse.equinox.app"/>

+      <plugin id="org.eclipse.equinox.common"/>

+      <plugin id="org.eclipse.equinox.concurrent"/>

+      <plugin id="org.eclipse.equinox.ds"/>

+      <plugin id="org.eclipse.equinox.preferences"/>

+      <plugin id="org.eclipse.equinox.registry"/>

+      <plugin id="org.eclipse.equinox.util"/>

+      <plugin id="org.eclipse.osgi"/>

+      <plugin id="org.eclipse.osgi.services"/>

+      <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>

+   </plugins>

+

+   <configurations>

+      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.ecf" autoStart="true" startLevel="1" />

+      <plugin id="org.eclipse.ecf.osgi.services.distribution" autoStart="true" startLevel="1" />

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="1" />

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" autoStart="true" startLevel="1" />

+      <plugin id="org.eclipse.equinox.app" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />

+   </configurations>

+

+</product>

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java
index 08567f8..ca1158e 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/src/org/eclipse/ecf/examples/internal/remoteservices/hello/ds/host/HelloComponent.java
@@ -25,4 +25,5 @@
 		System.out.println("received HelloMessage="+message);
 		return "Server says 'Hi' back to "+message.getFrom();
 	}
+	
 }
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product
index 18982db..85ca81b 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product
@@ -1,42 +1,43 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?>
-
-<product application="org.eclipse.ui.ide.workbench" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>
-      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <plugins>
-      <plugin id="ch.ethz.iks.r_osgi.remote"/>
-      <plugin id="org.eclipse.core.jobs"/>
-      <plugin id="org.eclipse.ecf"/>
-      <plugin id="org.eclipse.ecf.discovery"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.provider"/>
-      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <plugin id="org.eclipse.ecf.remoteservice"/>
-      <plugin id="org.eclipse.ecf.sharedobject"/>
-      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
-      <plugin id="org.eclipse.equinox.common"/>
-      <plugin id="org.eclipse.equinox.concurrent"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-   <configurations>
-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs" autoStart="true" startLevel="0" />
-      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
-      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
-   </configurations>
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<product application="org.eclipse.ui.ide.workbench" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -console</programArgs>

+      <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true</vmArgs>

+      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>

+   </launcherArgs>

+

+   <plugins>

+      <plugin id="ch.ethz.iks.r_osgi.remote"/>

+      <plugin id="org.eclipse.core.jobs"/>

+      <plugin id="org.eclipse.ecf"/>

+      <plugin id="org.eclipse.ecf.discovery"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs"/>

+      <plugin id="org.eclipse.ecf.identity"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

+      <plugin id="org.eclipse.ecf.provider"/>

+      <plugin id="org.eclipse.ecf.provider.r_osgi"/>

+      <plugin id="org.eclipse.ecf.remoteservice"/>

+      <plugin id="org.eclipse.ecf.sharedobject"/>

+      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>

+      <plugin id="org.eclipse.equinox.common"/>

+      <plugin id="org.eclipse.equinox.concurrent"/>

+      <plugin id="org.eclipse.equinox.registry"/>

+      <plugin id="org.eclipse.osgi"/>

+      <plugin id="org.eclipse.osgi.services"/>

+      <plugin id="org.objectweb.asm"/>

+   </plugins>

+

+   <configurations>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host.rs" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />

+   </configurations>

+

+</product>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
similarity index 68%
copy from "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
copy to "examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
index b335ebb..e0761ff 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer \050localfile,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
@@ -1,13 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="Generic Hello Consumer" uid="org.eclipse.ecf.examples.remoteservices.generichelloconsumer.local" application="org.eclipse.ecf.examples.remoteservices.hello.consumer.HelloConsumer" version="1.0.0" useFeatures="false" includeLaunchers="false">

+<product name="Generic Hello Host EDEF Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.edef.generic" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

 

    <launcherArgs>

-      <programArgs>-console -consoleLog -containerType ecf.generic.client</programArgs>

+      <programArgs>-containerType ecf.generic.server
+-containerId ecftcp://localhost:3787/server
+-console
+-consoleLog</programArgs>

       <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>

    </launcherArgs>

 

@@ -28,12 +31,11 @@
       <plugin id="org.eclipse.ecf"/>

       <plugin id="org.eclipse.ecf.discovery"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer"/>

-      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef"/>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <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"/>

@@ -48,5 +50,10 @@
       <plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>

    </plugins>

 

+   <configurations>

+      <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host" autoStart="true" startLevel="0" />

+      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />

+      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />

+   </configurations>

 

 </product>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product"
index 3b7b8dc..bb54de1 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,generic\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="Generic Hello Host" uid="org.eclipse.ecf.examples.remoteservices.generichellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="Generic Hello Host Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zeroconf.generic" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -33,9 +33,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

       <plugin id="org.eclipse.ecf.provider"/>

       <plugin id="org.eclipse.ecf.provider.jmdns"/>

       <plugin id="org.eclipse.ecf.provider.remoteservice"/>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
index 4ee20b3..3309270 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="R-OSGI Hello Host" uid="org.eclipse.ecf.examples.remoteservices.rosgihellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="R-OSGI Hello Host Zeroconf Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zeroconf.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -32,9 +32,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

       <plugin id="org.eclipse.ecf.provider"/>

       <plugin id="org.eclipse.ecf.provider.jmdns"/>

       <plugin id="org.eclipse.ecf.provider.r_osgi"/>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product"
index b8d2e4a..7bc633d 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,generic\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="Generic Zookeeper Hello Host" uid="org.eclipse.ecf.examples.remoteservices.genericzookeeperhellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="Generic Hello Host Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zookeeper.generic" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -10,7 +10,7 @@
       <programArgs>-console 
 -consoleLog
 -containerType ecf.generic.server
--containerId ecftcp://localhost:5782/server</programArgs>

+-containerId ecftcp://localhost:3787/server</programArgs>

       <vmArgs>-Dzoodiscovery.dataDir=zookeeperdata2
 -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:2002;clientPort=2001
 -Xms40m
@@ -41,9 +41,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <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.provider.zookeeper"/>

diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
index fb66985..08f0205 100644
--- "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <?pde version="3.5"?>

 

-<product name="R-OSGI Zookeeper Hello Host" uid="org.eclipse.ecf.examples.remoteservices.rosgizookeeperhellohost" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="2.0.0" useFeatures="false" includeLaunchers="false">

+<product name="R-OSGI Hello Host Zookeeper Discovery" uid="org.eclipse.ecf.examples.remoteservices.hello.host.zookeeper.rosgi" application="org.eclipse.ecf.examples.remoteservices.hello.host.HelloHost" version="1.0.0" useFeatures="false" includeLaunchers="false">

 

    <configIni use="default">

    </configIni>

@@ -39,9 +39,9 @@
       <plugin id="org.eclipse.ecf.examples.remoteservices.hello"/>

       <plugin id="org.eclipse.ecf.examples.remoteservices.hello.host"/>

       <plugin id="org.eclipse.ecf.identity"/>

-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>

       <plugin id="org.eclipse.ecf.osgi.services.distribution"/>

       <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin"/>

+      <plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"/>

       <plugin id="org.eclipse.ecf.provider"/>

       <plugin id="org.eclipse.ecf.provider.r_osgi"/>

       <plugin id="org.eclipse.ecf.provider.zookeeper"/>

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF
index f4fe9e5..e131411 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello
-Bundle-Version: 3.0.0.qualifier
+Bundle-Version: 3.0.100.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
@@ -12,3 +12,4 @@
 Bundle-Localization: bundle
 Import-Package: org.eclipse.ecf.remoteservice,
  org.eclipse.equinox.concurrent.future;version="1.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF
index 87a1594..f24ba90 100644
--- a/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.console/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.3
-Import-Package: org.eclipse.ecf.core;version="3.0.0",
- org.eclipse.ecf.core.identity;version="3.0.0",
+Import-Package: org.eclipse.ecf.core,
+ org.eclipse.ecf.core.identity,
  org.eclipse.ecf.core.util,
  org.eclipse.osgi.framework.console;version="1.0.0",
  org.osgi.framework;version="1.3.0",
diff --git a/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
index 331f2bb..66ee459 100644
--- a/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.identity/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.identity;singleton:=true
-Bundle-Version: 3.1.100.qualifier
+Bundle-Version: 3.1.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.identity.Activator
 Bundle-Localization: plugin
 Bundle-Vendor: %plugin.provider
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java
index c040aed..7bbadf3 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/IDFactory.java
@@ -36,6 +36,7 @@
 		addNamespace0(new StringID.StringIDNamespace());
 		addNamespace0(new GUID.GUIDNamespace());
 		addNamespace0(new LongID.LongNamespace());
+		addNamespace0(new URIID.URIIDNamespace());
 	}
 
 	private synchronized static void initialize() {
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java
index 5c76c2e..661fbc7 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/identity/URIID.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+ * Copyright (c) 2011 Composent and others. All rights reserved. This
  * program and the accompanying materials are made available under the terms of
  * the Eclipse Public License v1.0 which accompanies this distribution, and is
  * available at http://www.eclipse.org/legal/epl-v10.html
@@ -19,6 +19,49 @@
  */
 public class URIID extends BaseID implements IResourceID {
 
+	static class URIIDNamespace extends Namespace {
+
+		private static final long serialVersionUID = 115165512542491014L;
+
+		public URIIDNamespace(String name, String desc) {
+			super(name, desc);
+		}
+
+		public URIIDNamespace() {
+			super(URIID.class.getName(), "URIID Namespace"); //$NON-NLS-1$
+		}
+
+		public ID createInstance(Object[] parameters) throws IDCreateException {
+			try {
+				String init = getInitStringFromExternalForm(parameters);
+				if (init != null)
+					return new URIID(this, new URI(init));
+				if (parameters[0] instanceof URI)
+					return new URIID(this, (URI) parameters[0]);
+				if (parameters[0] instanceof String)
+					return new URIID(this, new URI((String) parameters[0]));
+				throw new IDCreateException("Cannot create URIID");
+			} catch (Exception e) {
+				throw new IDCreateException(URIIDNamespace.this.getName()
+						+ " createInstance()", e); //$NON-NLS-1$
+			}
+		}
+
+		public String getScheme() {
+			return "uri";
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @seeorg.eclipse.ecf.core.identity.Namespace#
+		 * getSupportedParameterTypesForCreateInstance()
+		 */
+		public Class[][] getSupportedParameterTypes() {
+			return new Class[][] { { String.class }, { URI.class } };
+		}
+	}
+
 	private static final long serialVersionUID = 7328962407044918278L;
 	private final URI uri;
 
@@ -56,4 +99,8 @@
 		return uri;
 	}
 
+	public String toString() {
+		return "URIID [uri=" + uri + "]";
+	}
+
 }
diff --git a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java
index 2692b72..8de74db 100644
--- a/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java
+++ b/framework/bundles/org.eclipse.ecf.identity/src/org/eclipse/ecf/core/util/Trace.java
@@ -400,7 +400,11 @@
 
 		if (shouldTrace(pluginId, option)) {
 			StringBuffer buf = new StringBuffer(PREFIX_CATCHING);
-			buf.append(throwable.getMessage()).append(SEPARATOR_SPACE);
+			if (throwable != null) {
+				String message = throwable.getMessage();
+				if (message != null)
+					buf.append(message).append(SEPARATOR_SPACE);
+			}
 			buf.append(PARENTHESIS_OPEN).append(clazz.getName())
 					.append(SEPARATOR_METHOD);
 			buf.append(methodName).append(PARENTHESIS_CLOSE);
@@ -431,7 +435,11 @@
 
 		if (shouldTrace(pluginId, option)) {
 			StringBuffer buf = new StringBuffer(PREFIX_THROWING);
-			buf.append(throwable.getMessage()).append(SEPARATOR_SPACE);
+			if (throwable != null) {
+				String message = throwable.getMessage();
+				if (message != null)
+					buf.append(message).append(SEPARATOR_SPACE);
+			}
 			buf.append(PARENTHESIS_OPEN).append(clazz.getName())
 					.append(SEPARATOR_METHOD);
 			buf.append(methodName).append(PARENTHESIS_CLOSE);
diff --git a/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs
index e50b971..b686d15 100644
--- a/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.presence/.settings/org.eclipse.jdt.core.prefs
@@ -1,351 +1,358 @@
-#Mon May 04 17:44:35 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:23:05 PDT 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.3

+org.eclipse.jdt.core.compiler.debug.lineNumber=generate

+org.eclipse.jdt.core.compiler.debug.localVariable=generate

+org.eclipse.jdt.core.compiler.debug.sourceFile=generate

+org.eclipse.jdt.core.compiler.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000

+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

+org.eclipse.jdt.core.compiler.problem.deadCode=warning

+org.eclipse.jdt.core.compiler.problem.deprecation=warning

+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=error

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning

+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning

+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.unusedImport=error

+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.3

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_assignment=0

+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80

+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_after_package=1

+org.eclipse.jdt.core.formatter.blank_lines_before_field=0

+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

+org.eclipse.jdt.core.formatter.blank_lines_before_method=1

+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

+org.eclipse.jdt.core.formatter.blank_lines_before_package=0

+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=false

+org.eclipse.jdt.core.formatter.comment.format_header=false

+org.eclipse.jdt.core.formatter.comment.format_html=true

+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false

+org.eclipse.jdt.core.formatter.comment.format_line_comments=false

+org.eclipse.jdt.core.formatter.comment.format_source_code=true

+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false

+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false

+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert

+org.eclipse.jdt.core.formatter.comment.line_length=80

+org.eclipse.jdt.core.formatter.compact_else_if=true

+org.eclipse.jdt.core.formatter.continuation_indentation=2

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_empty_lines=false

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true

+org.eclipse.jdt.core.formatter.indentation.size=4

+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.lineSplit=800

+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false

+org.eclipse.jdt.core.formatter.tabulation.char=tab

+org.eclipse.jdt.core.formatter.tabulation.size=4

+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs
index ac57995..36fe1ba 100644
--- a/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.provider/.settings/org.eclipse.jdt.core.prefs
@@ -1,347 +1,354 @@
-#Mon May 04 17:44:36 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:25:22 PDT 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.4

+org.eclipse.jdt.core.compiler.debug.lineNumber=generate

+org.eclipse.jdt.core.compiler.debug.localVariable=generate

+org.eclipse.jdt.core.compiler.debug.sourceFile=generate

+org.eclipse.jdt.core.compiler.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000

+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

+org.eclipse.jdt.core.compiler.problem.deadCode=warning

+org.eclipse.jdt.core.compiler.problem.deprecation=warning

+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning

+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning

+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.unusedImport=error

+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.3

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_assignment=0

+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80

+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_after_package=1

+org.eclipse.jdt.core.formatter.blank_lines_before_field=0

+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

+org.eclipse.jdt.core.formatter.blank_lines_before_method=1

+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

+org.eclipse.jdt.core.formatter.blank_lines_before_package=0

+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=false

+org.eclipse.jdt.core.formatter.comment.format_header=false

+org.eclipse.jdt.core.formatter.comment.format_html=true

+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false

+org.eclipse.jdt.core.formatter.comment.format_line_comments=false

+org.eclipse.jdt.core.formatter.comment.format_source_code=true

+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false

+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false

+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert

+org.eclipse.jdt.core.formatter.comment.line_length=80

+org.eclipse.jdt.core.formatter.compact_else_if=true

+org.eclipse.jdt.core.formatter.continuation_indentation=2

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_empty_lines=false

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true

+org.eclipse.jdt.core.formatter.indentation.size=4

+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.lineSplit=800

+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false

+org.eclipse.jdt.core.formatter.tabulation.char=tab

+org.eclipse.jdt.core.formatter.tabulation.size=4

+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF
index d59a513..05257a6 100644
--- a/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
 Manifest-Version: 1.0
 Bundle-SymbolicName: org.eclipse.ecf.provider;singleton:=true
-Bundle-Version: 4.1.0.qualifier
+Bundle-Version: 4.2.100.qualifier
 Bundle-Name: %plugin.name
 Bundle-Vendor: %plugin.provider
 Bundle-Activator: org.eclipse.ecf.internal.provider.ProviderPlugin
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java
index cfc4ddc..49bf76f 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/tcp/Client.java
@@ -109,12 +109,12 @@
 		setupThreads();
 	}
 
-	public Client(ISynchAsynchEventHandler handler, int maxmsgs) {
+	public Client(ISynchAsynchEventHandler handler, int keepAlive) {
 		if (handler == null)
 			throw new NullPointerException("event handler cannot be null"); //$NON-NLS-1$
 		this.handler = handler;
+		this.keepAlive = keepAlive;
 		containerID = handler.getEventHandlerID();
-		maxMsg = maxmsgs;
 		this.properties = new HashMap();
 	}
 
@@ -179,8 +179,7 @@
 			fact = SocketFactory.getDefaultSocketFactory();
 		ConnectResultMessage res = null;
 		try {
-			keepAlive = timeout;
-			final Socket s = fact.createSocket(anURI.getHost(), anURI.getPort(), keepAlive);
+			final Socket s = fact.createSocket(anURI.getHost(), anURI.getPort(), timeout);
 			// Set socket options
 			setSocketOptions(s);
 			// Now we've got a connection so set our socket
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java
index 4f68a7d..1d088cf 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java
@@ -10,6 +10,9 @@
  ******************************************************************************/
 package org.eclipse.ecf.provider.generic;
 
+import java.io.IOException;
+import java.net.BindException;
+import java.net.ServerSocket;
 import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.ecf.core.*;
@@ -33,6 +36,10 @@
 
 	private static final int CREATE_INSTANCE_ERROR_CODE = 4441;
 
+	private static final String ID_PROP = "id"; //$NON-NLS-1$
+
+	private static final String KEEPALIVE_PROP = "keepAlive"; //$NON-NLS-1$
+
 	public GenericContainerInstantiator() {
 		super();
 	}
@@ -95,7 +102,14 @@
 		ID newID = null;
 		Integer ka = null;
 		if (args != null && args.length > 0) {
-			if (args.length > 1) {
+			if (args[0] instanceof Map) {
+				Map map = (Map) args[0];
+				Object idVal = map.get(ID_PROP);
+				if (idVal == null)
+					throw new IDCreateException("Cannot create ID.  No property with key=" + ID_PROP + " found in configuration=" + map); //$NON-NLS-1$ //$NON-NLS-2$
+				newID = getIDFromArg(idVal);
+				ka = getIntegerFromArg(map.get(KEEPALIVE_PROP));
+			} else if (args.length > 1) {
 				if (args[0] instanceof String || args[0] instanceof ID)
 					newID = getIDFromArg(args[0]);
 				if (args[1] instanceof String || args[1] instanceof Integer)
@@ -123,7 +137,14 @@
 		ID newID = null;
 		Integer ka = null;
 		if (args != null && args.length > 0) {
-			if (args.length > 1) {
+			if (args[0] instanceof Map) {
+				Map map = (Map) args[0];
+				Object idVal = map.get(ID_PROP);
+				if (idVal == null)
+					throw new IDCreateException("Cannot create ID.  No property with key=" + ID_PROP + " found in configuration=" + map); //$NON-NLS-1$ //$NON-NLS-2$
+				newID = getIDFromArg(idVal);
+				ka = getIntegerFromArg(map.get(KEEPALIVE_PROP));
+			} else if (args.length > 1) {
 				if (args[0] instanceof String || args[0] instanceof ID)
 					newID = getIDFromArg(args[0]);
 				if (args[1] instanceof String || args[1] instanceof Integer)
@@ -131,31 +152,76 @@
 			} else
 				newID = getIDFromArg(args[0]);
 		}
-		if (newID == null)
-			newID = IDFactory.getDefault().createStringID(TCPServerSOContainer.DEFAULT_PROTOCOL + "://" + TCPServerSOContainer.DEFAULT_HOST + ":" + TCPServerSOContainer.DEFAULT_PORT + TCPServerSOContainer.DEFAULT_NAME); //$NON-NLS-1$ //$NON-NLS-2$
+		if (newID == null) {
+			int port = -1;
+			if (TCPServerSOContainer.DEFAULT_FALLBACK_PORT) {
+				port = getFreePort();
+			} else if (portIsFree(TCPServerSOContainer.DEFAULT_PORT)) {
+				port = TCPServerSOContainer.DEFAULT_PORT;
+			}
+			if (port < 0)
+				throw new IDCreateException("No server port is available for generic server creation.  org.eclipse.ecf.provider.generic.port.fallback=" + TCPServerSOContainer.DEFAULT_FALLBACK_PORT + " and org.eclipse.ecf.provider.generic.port=" + TCPServerSOContainer.DEFAULT_PORT); //$NON-NLS-1$ //$NON-NLS-2$
+			newID = IDFactory.getDefault().createStringID(TCPServerSOContainer.DEFAULT_PROTOCOL + "://" + TCPServerSOContainer.DEFAULT_HOST + ":" + port + TCPServerSOContainer.DEFAULT_NAME);//$NON-NLS-1$ //$NON-NLS-2$
+		}
 		if (ka == null)
 			ka = new Integer(TCPServerSOContainer.DEFAULT_KEEPALIVE);
 		return new GenericContainerArgs(newID, ka);
 	}
 
+	private boolean portIsFree(int port) {
+		ServerSocket ss = null;
+		try {
+			ss = new ServerSocket(port);
+			ss.close();
+		} catch (BindException e) {
+			return false;
+		} catch (IOException e) {
+			return false;
+		} finally {
+			if (ss != null)
+				try {
+					ss.close();
+				} catch (IOException e) {
+					throw new IDCreateException(e);
+				}
+		}
+		return true;
+	}
+
+	/**
+	 * @return a free socket port
+	 */
+	private int getFreePort() {
+		int port = -1;
+		try {
+			ServerSocket ss = new ServerSocket(0);
+			port = ss.getLocalPort();
+			ss.close();
+		} catch (IOException e) {
+			return -1;
+		}
+		return port;
+	}
+
 	public IContainer createInstance(ContainerTypeDescription description, Object[] args) throws ContainerCreateException {
 		boolean isClient = isClient(description);
 		try {
 			GenericContainerArgs gcargs = null;
-			if (isClient)
-				gcargs = getClientArgs(args);
-			else
-				gcargs = getServerArgs(args);
-			// new ID must not be null
 			if (isClient) {
+				gcargs = getClientArgs(args);
 				return new TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
 			}
-			return new TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+			// This synchronized block is to prevent issues with
+			// multithreaded access to ServerPort (to find available port)
+			synchronized (this) {
+				gcargs = getServerArgs(args);
+				return new TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+			}
 		} catch (Exception e) {
 			Trace.catching(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "createInstance", e); //$NON-NLS-1$
 			ProviderPlugin.getDefault().log(new Status(IStatus.ERROR, ProviderPlugin.PLUGIN_ID, CREATE_INSTANCE_ERROR_CODE, "createInstance", e)); //$NON-NLS-1$
 			Trace.throwing(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_THROWING, this.getClass(), "createInstance", e); //$NON-NLS-1$
-			throw new ContainerCreateException("createInstance", e); //$NON-NLS-1$
+			throw new ContainerCreateException("Create of containerType=" + description.getName() + " failed.", e); //$NON-NLS-1$ //$NON-NLS-2$
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java
index 7f9f4b0..6ba35c6 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/TCPServerSOContainer.java
@@ -29,6 +29,11 @@
 
 	public static String DEFAULT_HOST = System.getProperty("org.eclipse.ecf.provider.generic.host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$
 
+	/**
+	 * @since 4.2
+	 */
+	public static final boolean DEFAULT_FALLBACK_PORT = Boolean.valueOf(System.getProperty("org.eclipse.ecf.provider.generic.port.fallback", "true")).booleanValue(); //$NON-NLS-1$//$NON-NLS-2$
+
 	static {
 		final Boolean useHostname = Boolean.valueOf(System.getProperty("org.eclipse.ecf.provider.generic.host.useHostName", "true")); //$NON-NLS-1$ //$NON-NLS-2$
 		if (useHostname.booleanValue()) {
@@ -65,7 +70,7 @@
 		// Make sure URI syntax is followed.
 		URI actualURI = new URI(getID().getName());
 		int urlPort = actualURI.getPort();
-		if (group == null) {
+		if (grp == null) {
 			isSingle = true;
 			this.group = new TCPServerSOContainerGroup(urlPort);
 			this.group.putOnTheAir();
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF
index 1c84bdd..3ce331d 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF
@@ -8,7 +8,6 @@
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Import-Package: com.sun.syndication.feed;version="0.9.0",
  com.sun.syndication.io;version="0.9.0",
- org.eclipse.core.runtime;version="3.4.0",
  org.eclipse.ecf.core.util,
  org.eclipse.ecf.remoteservice,
  org.eclipse.ecf.remoteservice.client,
@@ -16,6 +15,7 @@
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.4.0"
 Bundle-ActivationPolicy: lazy
-Require-Bundle: org.jdom;bundle-version="1.0.0"
+Require-Bundle: org.jdom;bundle-version="1.0.0",
+ org.eclipse.equinox.common;bundle-version="3.6.0"
 Export-Package: org.eclipse.ecf.remoteservice.rest.synd
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF
index 668eba2..6d3f352 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %plugin.name
 Bundle-Vendor: %plugin.provider
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.rest;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 2.2.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rest.Activator
 Bundle-ActivationPolicy: lazy
 Eclipse-BuddyPolicy: global
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java
index 14e1687..a90471a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/RestException.java
@@ -16,6 +16,7 @@
 
 	private static final long serialVersionUID = -6565657473114300609L;
 	private int errorCode = -1;
+	private String response = null;
 
 	public RestException(IStatus status) {
 		super(status);
@@ -57,7 +58,17 @@
 		this.errorCode = errorCode;
 	}
 
+	public RestException(String message, Throwable cause, int errorCode, String response) {
+		super(message, cause);
+		this.errorCode = errorCode;
+		this.response = response;
+	}
+
 	public int getErrorCode() {
 		return errorCode;
 	}
+
+	public String getResponseBody() {
+		return response;
+	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java
index ad64400..118ec23 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientService.java
@@ -48,6 +48,11 @@
 		this.httpClient = new HttpClient();
 	}
 
+	private boolean isResponseOk(int httpResponseCode) {
+		int isOkCode = httpResponseCode - 200;
+		return (isOkCode >= 0 && isOkCode < 100);
+	}
+
 	/**
 	 * Calls the Rest service with given URL of IRestCall. The returned value is
 	 * the response body as an InputStream.
@@ -67,18 +72,17 @@
 		int responseCode = -1;
 		try {
 			responseCode = httpClient.executeMethod(httpMethod);
-			if (responseCode == HttpStatus.SC_OK) {
-				// Get response bytes
-				byte[] responseBytes = httpMethod.getResponseBody();
-				String responseCharSet = null;
-				if (httpMethod instanceof HttpMethodBase) {
-					HttpMethodBase methodBase = (HttpMethodBase) httpMethod;
-					responseCharSet = methodBase.getRequestCharSet();
-				}
+			if (isResponseOk(responseCode)) {
 				// Get responseBody as String
-				responseBody = getResponseAsString(responseBytes, responseCharSet);
-			} else
-				handleException("Http response not OK.  URL=" + uri + " responseCode=" + new Integer(responseCode), null, responseCode); //$NON-NLS-1$ //$NON-NLS-2$
+				responseBody = getResponseAsString(httpMethod);
+			} else {
+				// If this method returns true, we should retrieve the response body
+				if (retrieveErrorResponseBody(responseCode)) {
+					responseBody = getResponseAsString(httpMethod);
+				}
+				// Now pass to the exception handler
+				handleException("Http response not OK.  URL=" + uri + " responseCode=" + new Integer(responseCode), null, responseCode, responseBody); //$NON-NLS-1$ //$NON-NLS-2$
+			}
 		} catch (HttpException e) {
 			handleException("Transport HttpException", e, responseCode); //$NON-NLS-1$
 		} catch (IOException e) {
@@ -93,15 +97,35 @@
 		return result;
 	}
 
+	protected boolean retrieveErrorResponseBody(int responseCode) {
+		// XXX this needs to be defined differently for 
+		return false;
+	}
+
+	protected String getResponseAsString(HttpMethod httpMethod) throws IOException {
+		// Get response bytes
+		byte[] responseBytes = httpMethod.getResponseBody();
+		String responseCharSet = null;
+		if (httpMethod instanceof HttpMethodBase) {
+			HttpMethodBase methodBase = (HttpMethodBase) httpMethod;
+			responseCharSet = methodBase.getRequestCharSet();
+		}
+		return getResponseAsString(responseBytes, responseCharSet);
+	}
+
 	protected String getResponseAsString(byte[] bytes, String responseCharSet) {
 		if (bytes == null)
 			return null;
 		return EncodingUtil.getString(bytes, responseCharSet);
 	}
 
-	protected void handleException(String message, Throwable e, int responseCode) throws RestException {
+	protected void handleException(String message, Throwable e, int responseCode, String responseBody) throws RestException {
 		logException(message, e);
-		throw new RestException(message, e, responseCode);
+		throw new RestException(message, e, responseCode, responseBody);
+	}
+
+	protected void handleException(String message, Throwable e, int responseCode) throws RestException {
+		handleException(message, e, responseCode, null);
 	}
 
 	protected void setupTimeouts(HttpClient httpClient, IRemoteCall call, IRemoteCallable callable) {
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
index c640ead..c82d04e 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
@@ -5,11 +5,13 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rpc.Activator
 Bundle-Vendor: %plugin.provider
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ecf
+Require-Bundle: org.eclipse.ecf,
+ org.eclipse.equinox.common;bundle-version="3.6.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
-Import-Package: org.apache.commons.httpclient;version="3.1.0",
+Import-Package: org.osgi.framework, 
+ org.osgi.util.tracker,
+ org.apache.commons.httpclient;version="3.1.0",
  org.apache.commons.httpclient.auth;version="3.1.0",
  org.apache.commons.httpclient.methods;version="3.1.0",
  org.apache.commons.httpclient.params;version="3.1.0",
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java
deleted file mode 100644
index d61c69c..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/******************************************************************************* 
- * Copyright (c) 2010-2011 Naumen. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Pavel Samolisov - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ecf.internal.remoteservice.rpc;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-
-	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.remoteservice.rpc.messages"; //$NON-NLS-1$
-
-	public static String RPC_INVALID_PARAMETERS_TO_ID_CREATION;
-	public static String RPC_COULD_NOT_CREATE_ID;
-	public static String RPC_COULD_NOT_CREATE_CONTAINER;
-	public static String RPC_EXCEPTION_WHILE_EXECUTION_METHOD;
-
-	static {
-		// initialize resource bundle
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-
-	private Messages() {
-		// empty constructor
-	}
-}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java
index cb028b3..248b63a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/RpcClientContainerInstantiator.java
@@ -33,7 +33,7 @@
 				ID = (RpcId) IDFactory.getDefault().createID(RpcNamespace.NAME, parameters);
 			return new RpcClientContainer(ID);
 		} catch (Exception e) {
-			throw new ContainerCreateException(Messages.RPC_COULD_NOT_CREATE_CONTAINER, e);
+			throw new ContainerCreateException("Could not create RPCClientContainer", e); //$NON-NLS-1$
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties
deleted file mode 100644
index 1c4048f..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-############################################################################
-# Copyright (c) 2010-2011 Naumen, IBM Corp, and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-############################################################################
-RPC_INVALID_PARAMETERS_TO_ID_CREATION = Invalid parameters to RPCID creation
-RPC_COULD_NOT_CREATE_ID = Could not create RPC ID
-RPC_COULD_NOT_CREATE_CONTAINER = Could not create RPCClientContainer
-RPC_EXCEPTION_WHILE_EXECUTION_METHOD = Exception while execution method:
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
index 95cb2f7..b8b41a0 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
@@ -17,7 +17,6 @@
 import org.eclipse.core.runtime.Status;

 import org.eclipse.ecf.core.util.ECFException;

 import org.eclipse.ecf.internal.remoteservice.rpc.Activator;

-import org.eclipse.ecf.internal.remoteservice.rpc.Messages;

 import org.eclipse.ecf.remoteservice.IRemoteCall;

 import org.eclipse.ecf.remoteservice.client.*;

 import org.eclipse.ecf.remoteservice.rpc.RpcException;

@@ -96,7 +95,7 @@
 		try {

 			result = client.execute(operation, toObjectsArray(operation, call, callable));

 		} catch (Exception e) {

-			handleException(Messages.RPC_EXCEPTION_WHILE_EXECUTION_METHOD + operation, e);

+			handleException("Exception while executing method:" + operation, e); //$NON-NLS-1$

 		}

 

 		return result;

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java
index b42a2d9..01720e6 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcNamespace.java
@@ -13,7 +13,6 @@
 import java.net.URL;
 import java.util.*;
 import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.internal.remoteservice.rpc.Messages;
 import org.eclipse.ecf.remoteservice.rpc.client.RpcClientContainer;
 
 /**
@@ -80,9 +79,9 @@
 				else if (parameters[0] instanceof RpcId)
 					return (ID) parameters[0];
 			}
-			throw new IllegalArgumentException(Messages.RPC_INVALID_PARAMETERS_TO_ID_CREATION);
+			throw new IllegalArgumentException("Invalid parameters to RPCID creation"); //$NON-NLS-1$
 		} catch (Exception e) {
-			throw new IDCreateException(Messages.RPC_COULD_NOT_CREATE_ID, e);
+			throw new IDCreateException("Could not create RPC ID", e); //$NON-NLS-1$
 		}
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF
index f8f2c8a..4010c7a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@
 Fragment-Host: org.eclipse.ecf.remoteservice.ui;bundle-version="[3.0.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-Localization: plugin
-Import-Package: org.eclipse.ecf.osgi.services.discovery;version="1.0.0",
- org.eclipse.ecf.osgi.services.distribution;version="1.0.0"
+Import-Package: org.eclipse.ecf.osgi.services.distribution;version="2.0.0",
+ org.eclipse.ecf.osgi.services.remoteserviceadmin;version="1.0.0"
 DynamicImport-Package: *
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml
index 7de9bc7..9482e1e 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/fragment.xml
@@ -23,7 +23,7 @@
                         ifEmpty="false"
                         operator="and">
                         <test
-                              args="osgiservices"
+                              args="ecf.osgirsvc"
                               property="org.eclipse.ecf.discovery.isServiceType"
                               value="true">
                         </test>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java
index 0014a3c..15f00b3 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui.dosgi/src/org/eclipse/ecf/remoteservice/ui/dosgi/handlers/DOSGiReflectiveRemoteServiceHandler.java
@@ -17,9 +17,8 @@
 import org.eclipse.ecf.discovery.ui.DiscoveryHandlerUtil;
 import org.eclipse.ecf.internal.remoteservices.ui.Activator;
 import org.eclipse.ecf.internal.remoteservices.ui.handlers.ReflectiveRemoteServiceHandler;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
+import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;
 import org.eclipse.ecf.remoteservice.IRemoteService;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.osgi.util.NLS;
@@ -46,13 +45,13 @@
 				.getServiceProperties();
 
 		final String clazz = serviceProperties
-				.getPropertyString(ServicePublication.SERVICE_INTERFACE_NAME);
+				.getPropertyString(Constants.OBJECTCLASS);
 		final String serviceId = new String(
 				serviceProperties
-						.getPropertyBytes(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));
+						.getPropertyString(RemoteConstants.SERVICE_IMPORTED_ENDPOINT_SERVICE_ID));
 		final String containerId = new String(
 				serviceProperties
-						.getPropertyBytes(RemoteServicePublication.ENDPOINT_CONTAINERID));
+						.getPropertyString(RemoteConstants.SERVICE_IMPORTED_ENDPOINT_ID));
 
 		// get the service via the osgi service registry
 		final BundleContext context = Activator.getDefault().getBundle()
@@ -61,8 +60,8 @@
 		try {
 			filter = context.createFilter("(&(" + Constants.OBJECTCLASS + "=" //$NON-NLS-1$ //$NON-NLS-2$
 					+ clazz + ")" + "(" + IDistributionConstants.SERVICE_IMPORTED + "=*" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					+ ")" + "(" + ServicePublication.ENDPOINT_ID + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					+ containerId + "#" + serviceId + "))"); //$NON-NLS-1$ //$NON-NLS-2$
+					+ ")" + "(" + RemoteConstants.SERVICE_IMPORTED_ENDPOINT_ID + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					+ containerId + ")(" + RemoteConstants.SERVICE_IMPORTED_ENDPOINT_SERVICE_ID + "=" + serviceId + "))"); //$NON-NLS-1$ //$NON-NLS-2$
 		} catch (InvalidSyntaxException e1) {
 			MessageDialog.openError(null, Messages.DOSGiReflectiveRemoteServiceHandler_HandlerInvocationFailed,
 					NLS.bind(Messages.DOSGiReflectiveRemoteServiceHandler_FilterCreationFailed, e1.getMessage()));
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch b/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch
index 8b18fe6..029def8 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/launch/ECF Discovery and Remote Service UI.launch
@@ -1,32 +1,33 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Discovery and Remote Service UI"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-New_configuration"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consolelog -console -clean"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dnet.slp.port=65427&#10;-Dnet.mdns.port=65353&#10;&#10;-Dnet.slp.failercount=3&#13;&#10;-Dnet.slp.multicastTimeouts=10,25,50,100,250,500,1000&#13;&#10;-Dnet.slp.multicastMaximumWait=2000"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="restart" value="false"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.jobs@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.core.databinding@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.resources@default:default,org.eclipse.equinox.common@default:default,org.eclipse.core.variables@default:default,org.eclipse.ant.core@default:default,org.eclipse.osgi.services@default:default,org.eclipse.compare.core@default:default,org.eclipse.ui.views@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.core.commands@default:default,org.apache.lucene.analysis@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ecf.ssl@default:false,org.eclipse.ui@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.net@default:default,org.eclipse.ui.ide@default:default,org.eclipse.help.base@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.osgi@:,org.eclipse.core.resources.compatibility@default:false,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.platform@default:default,org.eclipse.core.databinding.property@default:default,org.apache.lucene@default:default,org.eclipse.ui.browser@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.ui.forms@default:default,org.eclipse.swt@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.jface@default:default,com.ibm.icu@default:default,org.eclipse.core.expressions@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.text@default:default,org.eclipse.ui.navigator@default:default,org.objectweb.asm@default:default,org.eclipse.ui.intro@default:default,org.eclipse.equinox.app@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.discovery.ui.browser@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.osgi.services@default:default,org.eclipse.ecf.remoteservice.ui@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,ch.ethz.iks.r_osgi.remote@default:default,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.examples.remoteservices.client@default:false,ch.ethz.iks.slp@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.ecf.provider.r_osgi@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.provider.jslp@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.osgi.services.distribution@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">

+<booleanAttribute key="append.args" value="true"/>

+<booleanAttribute key="askclear" value="true"/>

+<booleanAttribute key="automaticAdd" value="false"/>

+<booleanAttribute key="automaticValidate" value="false"/>

+<stringAttribute key="bootstrap" value=""/>

+<stringAttribute key="checked" value="[NONE]"/>

+<booleanAttribute key="clearConfig" value="false"/>

+<booleanAttribute key="clearws" value="false"/>

+<booleanAttribute key="clearwslog" value="false"/>

+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Discovery and Remote Service UI"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-New_configuration"/>

+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consolelog -console -clean"/>

+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dnet.slp.port=65427&#13;&#10;-Dnet.mdns.port=65353&#13;&#10;&#13;&#10;-Dnet.slp.failercount=3&#13;&#13;&#10;-Dnet.slp.multicastTimeouts=10,25,50,100,250,500,1000&#13;&#13;&#10;-Dnet.slp.multicastMaximumWait=2000"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.platform.ide"/>

+<booleanAttribute key="restart" value="false"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security@default:default,org.eclipse.help.base@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.osgi,org.eclipse.osgi.services@default:default,org.eclipse.platform@default:default,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.objectweb.asm@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="ch.ethz.iks.r_osgi.remote@default:default,ch.ethz.iks.slp@default:default,org.eclipse.ecf.discovery.ui.browser@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.jslp@default:default,org.eclipse.ecf.provider.r_osgi@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice.ui@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>

+<booleanAttribute key="tracing" value="false"/>

+<booleanAttribute key="useCustomFeatures" value="false"/>

+<booleanAttribute key="useDefaultConfig" value="true"/>

+<booleanAttribute key="useDefaultConfigArea" value="true"/>

+<booleanAttribute key="useProduct" value="true"/>

+<booleanAttribute key="usefeatures" value="false"/>

+</launchConfiguration>

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
index ccbc33c..7b6ead6 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
@@ -1,5 +1,24 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>

 <component id="org.eclipse.ecf.remoteservice" version="2">

+    <resource path="src/org/eclipse/ecf/remoteservice/Constants.java" type="org.eclipse.ecf.remoteservice.Constants">

+        <filter comment="Added SERVICE_ASYNC_RSPROXY_CLASS constant" id="403767336">

+            <message_arguments>

+                <message_argument value="org.eclipse.ecf.remoteservice.Constants"/>

+                <message_argument value="SERVICE_ASYNC_RSPROXY_CLASS_"/>

+            </message_arguments>

+        </filter>

+        <filter id="405864542">

+            <message_arguments>

+                <message_argument value="org.eclipse.ecf.remoteservice.Constants"/>

+                <message_argument value="SERVICE_ASYNC_PROXY"/>

+            </message_arguments>

+        </filter>

+        <filter id="1211105284">

+            <message_arguments>

+                <message_argument value="SERVICE_ASYNC_RSPROXY_CLASS_"/>

+            </message_arguments>

+        </filter>

+    </resource>

     <resource path="src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java" type="org.eclipse.ecf.remoteservice.util.RemoteFilterImpl">

         <filter comment="remote service filter can implement osgi Filter" id="574660632">

             <message_arguments>

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
index 85f7e9e..1572038 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice;singleton:=true
-Bundle-Version: 6.0.0.qualifier
+Bundle-Version: 6.0.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
index eda6bbc..202ce16 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
@@ -170,8 +170,8 @@
 		String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
 		try {
 			return Class.forName(proxyClassName);
-		} catch (Exception e) {
-			logWarning("No async remote service interface found with name=" + proxyClassName + " for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
+		} catch (ClassNotFoundException e) {
+			logInfo("No async remote service interface found with name=" + proxyClassName + " for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
 			return null;
 		} catch (NoClassDefFoundError e) {
 			logWarning("Async remote service interface with name=" + proxyClassName + " could not be loaded for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
@@ -186,8 +186,8 @@
 		String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
 		try {
 			return Class.forName(proxyClassName, true, cl);
-		} catch (Exception e) {
-			logWarning("No async remote service interface found with name=" + proxyClassName + " for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
+		} catch (ClassNotFoundException e) {
+			//logInfo("No async remote service interface found with name=" + proxyClassName + " for remote service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
 			return null;
 		} catch (NoClassDefFoundError e) {
 			logWarning("Async remote service interface with name=" + proxyClassName + " could not be loaded for proxy service class=" + c.getName(), e); //$NON-NLS-1$ //$NON-NLS-2$
@@ -196,6 +196,12 @@
 	}
 
 	protected String convertInterfaceNameToAsyncInterfaceName(String interfaceName) {
+		if (interfaceName == null)
+			return null;
+		String asyncProxyName = (String) getRemoteServiceReference().getProperty(Constants.SERVICE_ASYNC_RSPROXY_CLASS_ + interfaceName);
+		if (asyncProxyName != null)
+			return asyncProxyName;
+		// If a value has been specified by the ServiceProperty
 		return interfaceName + IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX;
 	}
 
@@ -367,9 +373,15 @@
 		return methodName.endsWith(IAsyncRemoteServiceProxy.ASYNC_METHOD_SUFFIX) ? methodName.substring(0, methodName.length() - IAsyncRemoteServiceProxy.ASYNC_METHOD_SUFFIX.length()) : methodName;
 	}
 
+	private void logInfo(String message, Throwable e) {
+		Activator a = Activator.getDefault();
+		if (a != null)
+			a.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, message, e));
+	}
+
 	protected void logWarning(String string, Throwable e) {
 		Activator a = Activator.getDefault();
 		if (a != null)
-			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, string));
+			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, string, e));
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java
index 2319652..2ac0a3d 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java
@@ -112,6 +112,55 @@
 	public static final String SERVICE_PREVENT_RSPROXY = "ecf.rsvc.norsproxy"; //$NON-NLS-1$
 
 	/**
+	 * This constant allows the fully qualified async remote service proxy to be specified
+	 * as a service property.  For example, if the remote service interface is as so:
+	 * <pre>
+	 * package foo;
+	 * 
+	 * public interface Bar {
+	 *    String doStuff();
+	 * }
+	 * </pre>
+	 * then by default, the async remote service proxy interface class would be expected 
+	 * to be the following:
+	 * <pre>
+	 * package foo;
+	 * import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
+	 * import org.eclipse.equinox.concurrent.future.IFuture;
+	 *
+	 * public interface BarAsync extends IAsyncRemoteServiceProxy {
+	 *    IFuture doStuffAsync();
+	 * }
+	 * </pre>
+	 * This property allows a new class to be associated with the
+	 * original service interface, so that rather than looking for the foo.BarAsync class
+	 * when a proxy is created, the class specified by the value of the property will
+	 * be used instead.  For example, assume the existance of another async
+	 * remote service interface:
+	 * <pre>
+	 * package gogo;
+	 * import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
+	 * import org.eclipse.equinox.concurrent.future.IFuture;
+	 * 
+	 * public interface MyBar extends IAsyncRemoteServiceProxy {
+	 *    IFuture doStuffAsync();
+	 * }
+	 * </pre>
+	 * Further assume that when the remote service was registered, that a service property 
+	 * was specified:
+	 * <pre>
+	 * serviceProps.put("ecf.rsvc.async.proxy_&lt;fq classname&gt;","&lt;fq substitute&gt;");
+	 * </pre>
+	 * <pre>
+	 * serviceProps.put("ecf.rsvc.async.proxy_foo.Bar","gogo.MyBar");
+	 * </pre>
+	 * Then, when a Bar proxy is created, if the 'gogo.MyBar' interface is available on 
+	 * the client, an async remote service proxy will be added to the proxy, and
+	 * client will be able to asynchronously call MyBar.doStuffAsync() on the proxy.
+	 */
+	public static final String SERVICE_ASYNC_RSPROXY_CLASS_ = "ecf.rsvc.async.proxy_"; //$NON-NLS-1$
+
+	/**
 	 * @deprecated
 	 */
 	public static final String SERVICE_CONNECT_ID = "ecf.rsvc.cnct.id"; //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java
index 99837a7..50580f1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/AbstractClientContainer.java
@@ -10,7 +10,6 @@
 package org.eclipse.ecf.remoteservice.client;
 
 import java.io.NotSerializableException;
-import java.lang.reflect.Method;
 import java.util.*;
 import org.eclipse.core.runtime.*;
 import org.eclipse.ecf.core.AbstractContainer;
@@ -125,7 +124,9 @@
 	}
 
 	public void addRemoteServiceListener(IRemoteServiceListener listener) {
-		remoteServiceListeners.add(listener);
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.add(listener);
+		}
 	}
 
 	public IFuture asyncGetRemoteServiceReferences(final ID[] idFilter, final String clazz, final String filter) {
@@ -206,16 +207,13 @@
 	}
 
 	public IRemoteServiceRegistration registerRemoteService(final String[] clazzes, Object service, Dictionary properties) {
-		if (service instanceof List) {
-			return registerRemoteCallables(clazzes, (List) service, properties);
-		} else if (service instanceof IRemoteCallable[][]) {
-			return registerCallables(clazzes, (IRemoteCallable[][]) service, properties);
-		}
 		throw new RuntimeException("registerRemoteService cannot be used with client container"); //$NON-NLS-1$
 	}
 
 	public void removeRemoteServiceListener(IRemoteServiceListener listener) {
-		remoteServiceListeners.remove(listener);
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.remove(listener);
+		}
 	}
 
 	public boolean ungetRemoteService(final IRemoteServiceReference reference) {
@@ -246,6 +244,7 @@
 	public IRemoteServiceRegistration registerCallables(IRemoteCallable[] callables, Dictionary properties) {
 		Assert.isNotNull(callables);
 		final RemoteServiceClientRegistration registration = createRestServiceRegistration(callables, properties);
+		this.registry.registerRegistration(registration);
 		// notify
 		fireRemoteServiceEvent(new IRemoteServiceRegisteredEvent() {
 
@@ -265,12 +264,12 @@
 				return registration.getClazzes();
 			}
 		});
-		this.registry.registerRegistration(registration);
 		return registration;
 	}
 
 	public IRemoteServiceRegistration registerCallables(String[] clazzes, IRemoteCallable[][] callables, Dictionary properties) {
 		final RemoteServiceClientRegistration registration = createRestServiceRegistration(clazzes, callables, properties);
+		this.registry.registerRegistration(registration);
 		// notify
 		fireRemoteServiceEvent(new IRemoteServiceRegisteredEvent() {
 
@@ -290,102 +289,9 @@
 				return registration.getClazzes();
 			}
 		});
-		this.registry.registerRegistration(registration);
 		return registration;
 	}
 
-	public IRemoteServiceRegistration registerRemoteCallables(Class[] clazzes, List callablesList, Dictionary properties) {
-		Assert.isNotNull(clazzes);
-		IRemoteCallable[][] callables = createCallablesFromClasses(clazzes, callablesList);
-		Assert.isNotNull(callables);
-		Assert.isTrue(callables.length > 0);
-		final String[] classNames = new String[clazzes.length];
-		for (int i = 0; i < clazzes.length; i++) {
-			classNames[i] = clazzes[i].getName();
-		}
-		return registerCallables(classNames, callables, properties);
-	}
-
-	public IRemoteServiceRegistration registerRemoteCallables(String[] clazzes, List callables, Dictionary properties) {
-		Assert.isNotNull(clazzes);
-		Assert.isNotNull(callables);
-		return registerRemoteCallables(getClazzesFromStrings(clazzes), callables, properties);
-	}
-
-	public IRemoteCallable[][] createCallablesFromClasses(Class[] cls, List callables) {
-		Assert.isNotNull(cls);
-		Assert.isTrue(cls.length > 0);
-		// First create result list to hold IRestCallable[]...for each Class
-		List results = new ArrayList();
-		for (int i = 0; i < cls.length; i++) {
-			Method[] methods = getMethodsForClass(cls[i]);
-			IRemoteCallable[] methodCallables = getCallablesForMethods(methods, callables);
-			if (methodCallables != null && methodCallables.length > 0)
-				results.add(methodCallables);
-		}
-		return (IRemoteCallable[][]) results.toArray(new IRemoteCallable[][] {});
-	}
-
-	protected IRemoteCallable[] getCallablesForMethods(Method[] methods, List callables) {
-		Assert.isNotNull(methods);
-		Assert.isTrue(methods.length > 0);
-		List results = new ArrayList();
-		for (int i = 0; i < methods.length; i++) {
-			IRemoteCallable callable = findCallableForName(methods[i].getName(), callables);
-			if (callable != null)
-				results.add(callable);
-		}
-		return (IRemoteCallable[]) results.toArray(new IRemoteCallable[] {});
-	}
-
-	protected IRemoteCallable findCallableForName(String fqMethodName, List callables) {
-		if (callables == null || callables.isEmpty())
-			return null;
-		for (Iterator i = callables.iterator(); i.hasNext();) {
-			IRemoteCallable callable = (IRemoteCallable) i.next();
-			if (callable != null && fqMethodName.equals(callable.getMethod()))
-				return callable;
-		}
-		return null;
-	}
-
-	private Method[] getMethodsForClass(Class class1) {
-		Method[] results = null;
-		try {
-			results = class1.getDeclaredMethods();
-		} catch (Exception e) {
-			logException("Could not get declared methods for class=" + class1.getName(), e); //$NON-NLS-1$
-			return null;
-		}
-		return results;
-	}
-
-	public Class[] getClazzesFromStrings(String[] clazzes) throws IllegalArgumentException {
-		List results = new ArrayList();
-		for (int i = 0; i < clazzes.length; i++) {
-			Class clazz = getClazzFromString(clazzes[i]);
-			if (clazz != null)
-				results.add(clazz);
-		}
-		return (Class[]) results.toArray(new Class[] {});
-	}
-
-	public Class getClazzFromString(String className) throws IllegalArgumentException {
-		Class result = null;
-		try {
-			result = Class.forName(className, true, this.getClass().getClassLoader());
-		} catch (Exception e) {
-			String errorMsg = "ClassNotFoundException for class with name=" + className; //$NON-NLS-1$
-			logException(errorMsg, e);
-			throw new IllegalArgumentException(errorMsg);
-		} catch (NoClassDefFoundError e) {
-			String errorMsg = "NoClassDefFoundError for class with name=" + className; //$NON-NLS-1$
-			logException(errorMsg, e);
-			throw new IllegalArgumentException(errorMsg);
-		}
-		return result;
-	}
-
 	// IContainer implementation methods
 	public void connect(ID targetID, IConnectContext connectContext1) throws ContainerConnectException {
 		if (targetID == null)
@@ -429,7 +335,9 @@
 
 	public void dispose() {
 		disconnect();
-		remoteServiceListeners.clear();
+		synchronized (remoteServiceListeners) {
+			remoteServiceListeners.clear();
+		}
 		super.dispose();
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java
index 0b6f1fe..a9034c1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistry.java
@@ -28,7 +28,7 @@
 public class RemoteServiceClientRegistry implements Serializable {
 
 	private static final long serialVersionUID = -7002609161000008043L;
-	private static long nextServiceId = 0L;
+	private static long nextServiceId = 1L;
 	private ID containerId;
 	private List registrations;
 	private AbstractClientContainer container;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs
index c454319..8a32301 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Fri Oct 15 17:22:27 PDT 2010

+#Mon May 09 12:40:51 PDT 2011

 eclipse.preferences.version=1

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

@@ -34,6 +34,7 @@
 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

 org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

 org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

@@ -50,6 +51,7 @@
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

@@ -63,11 +65,15 @@
 org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore

 org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning

 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning

 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

@@ -81,11 +87,12 @@
 org.eclipse.jdt.core.compiler.problem.unusedImport=error

 org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

 org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

 org.eclipse.jdt.core.compiler.source=1.3

diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java
index dfd84e6..1942fc4 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/util/SimpleFIFOQueue.java
@@ -1,27 +1,30 @@
-/*******************************************************************************
- * Copyright (c) 2004 Composent, Inc. and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: Composent, Inc. - initial API and implementation
- ******************************************************************************/
+/****************************************************************************
+ * Copyright (c) 2007 Composent, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *****************************************************************************/
+
 package org.eclipse.ecf.core.sharedobject.util;
 
 import java.util.LinkedList;
 import java.util.List;
 
 public class SimpleFIFOQueue implements ISimpleFIFOQueue {
-	List list;
+	private final List list;
 
-	boolean stopped;
+	private boolean stopped;
 
 	public SimpleFIFOQueue() {
 		list = new LinkedList();
 		stopped = false;
 	}
 
-	public synchronized boolean enqueue(Object obj) {
+	public synchronized boolean enqueue(final Object obj) {
 		if (isStopped() || obj == null) {
 			return false;
 		}
@@ -35,7 +38,7 @@
 	}
 
 	public synchronized Object dequeue() {
-		Object val = peekQueue();
+		final Object val = peekQueue();
 		if (val != null) {
 			removeHead();
 		}
@@ -48,14 +51,14 @@
 				return null;
 			try {
 				wait();
-			} catch (Exception e) {
+			} catch (final Exception e) {
 				return null;
 			}
 		}
 		return list.get(0);
 	}
 
-	public synchronized Object peekQueue(long waitMS) {
+	public synchronized Object peekQueue(final long waitMS) {
 		if (waitMS == 0)
 			return peekQueue();
 		if (stopped) {
@@ -63,7 +66,7 @@
 		}
 		try {
 			wait(waitMS);
-		} catch (Exception e) {
+		} catch (final Exception e) {
 			return null;
 		}
 		if (isEmpty())
@@ -94,7 +97,7 @@
 	}
 
 	public synchronized Object[] flush() {
-		Object[] out = list.toArray();
+		final Object[] out = list.toArray();
 		list.clear();
 		close();
 		return out;
@@ -106,7 +109,7 @@
 	}
 
 	public String toString() {
-		StringBuffer sb = new StringBuffer("SimpleFIFOQueue["); //$NON-NLS-1$
+		final StringBuffer sb = new StringBuffer("SimpleFIFOQueue["); //$NON-NLS-1$
 		sb.append(list).append("]"); //$NON-NLS-1$
 		return sb.toString();
 	}
diff --git a/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs
index 1ca443a..2512a4c 100644
--- a/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.jdt.core.prefs
@@ -1,350 +1,357 @@
-#Mon May 04 17:44:33 PDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Mon May 09 12:21:42 PDT 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.builder.cleanOutputFolder=clean

+org.eclipse.jdt.core.builder.duplicateResourceTask=warning

+org.eclipse.jdt.core.builder.invalidClasspath=abort

+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch

+org.eclipse.jdt.core.circularClasspath=error

+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.4

+org.eclipse.jdt.core.compiler.debug.lineNumber=generate

+org.eclipse.jdt.core.compiler.debug.localVariable=generate

+org.eclipse.jdt.core.compiler.debug.sourceFile=generate

+org.eclipse.jdt.core.compiler.doc.comment.support=enabled

+org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000

+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning

+org.eclipse.jdt.core.compiler.problem.deadCode=warning

+org.eclipse.jdt.core.compiler.problem.deprecation=warning

+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore

+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore

+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled

+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning

+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled

+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning

+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled

+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning

+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning

+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag

+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled

+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

+org.eclipse.jdt.core.compiler.problem.nullReference=warning

+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore

+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore

+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning

+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore

+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning

+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning

+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning

+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled

+org.eclipse.jdt.core.compiler.problem.unusedImport=error

+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning

+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning

+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled

+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning

+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

+org.eclipse.jdt.core.compiler.source=1.3

+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_assignment=0

+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16

+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16

+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80

+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0

+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16

+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16

+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16

+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16

+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_after_package=1

+org.eclipse.jdt.core.formatter.blank_lines_before_field=0

+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0

+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1

+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1

+org.eclipse.jdt.core.formatter.blank_lines_before_method=1

+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1

+org.eclipse.jdt.core.formatter.blank_lines_before_package=0

+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1

+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1

+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line

+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false

+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false

+org.eclipse.jdt.core.formatter.comment.format_block_comments=false

+org.eclipse.jdt.core.formatter.comment.format_header=false

+org.eclipse.jdt.core.formatter.comment.format_html=true

+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false

+org.eclipse.jdt.core.formatter.comment.format_line_comments=false

+org.eclipse.jdt.core.formatter.comment.format_source_code=true

+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false

+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false

+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert

+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert

+org.eclipse.jdt.core.formatter.comment.line_length=80

+org.eclipse.jdt.core.formatter.compact_else_if=true

+org.eclipse.jdt.core.formatter.continuation_indentation=2

+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2

+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true

+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true

+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_empty_lines=false

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true

+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true

+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true

+org.eclipse.jdt.core.formatter.indentation.size=4

+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert

+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert

+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert

+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert

+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert

+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert

+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert

+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert

+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert

+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert

+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert

+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false

+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false

+org.eclipse.jdt.core.formatter.lineSplit=800

+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false

+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0

+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1

+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false

+org.eclipse.jdt.core.formatter.tabulation.char=tab

+org.eclipse.jdt.core.formatter.tabulation.size=4

+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false

+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

+org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
index 3864e4d..a891433 100644
--- a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Manifest-Version: 1.0
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf;singleton:=true
-Bundle-Version: 3.1.200.qualifier
+Bundle-Version: 3.1.300.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.core.ECFPlugin
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf/javadoc.xml b/framework/bundles/org.eclipse.ecf/javadoc.xml
index 9ed0af2..67d815e 100644
--- a/framework/bundles/org.eclipse.ecf/javadoc.xml
+++ b/framework/bundles/org.eclipse.ecf/javadoc.xml
@@ -15,7 +15,7 @@
         	author="false" 

         	classpathref="files.classpath" 

         	destdir="${output}" 

-        	doctitle="Eclipse Communication Framework (ECF) 3.5.0" 

+        	doctitle="Eclipse Communication Framework (ECF) 3.5.2" 

         	nodeprecated="false" 

         	nodeprecatedlist="false" 

         	noindex="false" 

@@ -28,9 +28,7 @@
         	

         	<fileset dir="${source}" defaultexcludes="true">

 	        	<include name="**/*.java"/>

-	        	<exclude name="**/util/**"/>

 	        	<exclude name="**/ui/**"/>

-	        	<exclude name="**/provider/**"/>

 	        	<exclude name="**/smack/**"/>

 	        	<exclude name="**/incubation/**"/>

 	        	<exclude name="**/internal/**"/>

@@ -41,6 +39,9 @@
 	        	<exclude name="**/tutorial/**"/>

 	        	<exclude name="**/twitter/**"/>

 	        	<exclude name="**/jivesoftware/**"/>

+	        	<exclude name="**/pubsub/**"/>

+	        	<exclude name="**/collab/**"/>

+	        	<exclude name="**/osgi/services/discovery/**"/>

         	</fileset>

     	</javadoc>

     </target>

diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
index 51aefc6..872b875 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/ContainerFactoryTracker.java
@@ -10,7 +10,6 @@
 package org.eclipse.ecf.core.util;
 
 import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.core.IContainerManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -22,7 +21,7 @@
 public class ContainerFactoryTracker extends ServiceTracker {
 
 	public ContainerFactoryTracker(BundleContext context) {
-		super(context, IContainerManager.class.getName(), null);
+		super(context, IContainerFactory.class.getName(), null);
 	}
 
 	public IContainerFactory getContainerFactory() {
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.classpath
similarity index 88%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.classpath
index 64c5e31..f6e5811 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.classpath
@@ -1,7 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
similarity index 89%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
index f9bafca..c508f9a 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.provider.discovery.local</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0a37305
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Tue Feb 22 13:16:41 PST 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

+org.eclipse.jdt.core.compiler.compliance=1.5

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.5

diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.pde.core.prefs
similarity index 74%
rename from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..d3f70c8 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,4 @@
-#Tue May 04 19:23:54 PDT 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
+#Tue Feb 22 13:16:42 PST 2011

+eclipse.preferences.version=1

+pluginProject.extensions=false

+resolve.requirebundle=false

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..46e42a4
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF Remote Service Admin Proxy
+Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: Eclipse.org - ECF
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/about.html
similarity index 100%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/about.html
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/build.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/build.properties
new file mode 100644
index 0000000..d5066ef
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/build.properties
@@ -0,0 +1,4 @@
+bin.includes = META-INF/,\

+               .,\

+               about.html

+src.includes = about.html

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
index 4272128..2ce11a0 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
index 542b8df..77378cc 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,12 @@
-#Sat Jan 22 17:14:11 PST 2011

+#Fri May 13 11:36:47 PDT 2011

 eclipse.preferences.version=1

 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

 org.eclipse.jdt.core.compiler.compliance=1.5

+org.eclipse.jdt.core.compiler.debug.lineNumber=generate

+org.eclipse.jdt.core.compiler.debug.localVariable=generate

+org.eclipse.jdt.core.compiler.debug.sourceFile=generate

 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

 org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

@@ -35,7 +39,7 @@
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore

 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning

 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning

 org.eclipse.jdt.core.compiler.problem.nullReference=warning

 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

 org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore

@@ -44,12 +48,15 @@
 org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore

 org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore

 org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore

+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore

 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled

 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning

 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning

+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled

 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore

 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 56dc925..411d4b8 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -2,14 +2,15 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator
 Bundle-Vendor: %bundle.provider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Localization: bundle
 Export-Package: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;x-internal:=true,
  org.eclipse.ecf.osgi.services.remoteserviceadmin;version="1.0.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
+ org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy;bundle-version="1.0.0"
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity,
@@ -27,3 +28,4 @@
  org.osgi.service.packageadmin,
  org.osgi.service.remoteserviceadmin;version="1.0.0",
  org.osgi.util.tracker
+DynamicImport-Package: *
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/buckminster.cspex b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/buckminster.cspex
new file mode 100644
index 0000000..ba0cf92
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/buckminster.cspex
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+	xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+	<dependencies>
+		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+
+		<dependency name="org.eclipse.ecf" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.identity" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.discovery" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.remoteservice" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy" componentType="osgi.bundle"/>
+
+		<dependency name="org.eclipse.osgi.services.remoteserviceadmin" componentType="osgi.bundle"/>
+	</dependencies>
+	<generators>
+		<!-- Place your Generators here -->
+	</generators>
+	<artifacts>
+		<!-- Place your Artifacts here -->
+	</artifacts>
+	<actions>
+		<!-- Place your Actions here -->
+	</actions>
+	<groups>
+		<!-- Place your Groups here -->
+	</groups>
+	<alterDependencies>
+		<!-- Place your Dependencies alterations here -->
+	</alterDependencies>
+	<alterArtifacts>
+		<!-- Place your Artifact alterations here -->
+	</alterArtifacts>
+	<alterActions>
+		<!-- Place your Action alterations here -->
+	</alterActions>
+	<alterGroups>
+		<!-- Place your Group alterations here -->
+	</alterGroups>
+</cspecExtension>
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
index 22b24fb..23e285e 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
@@ -5,7 +5,5 @@
                bundle.properties,\
                about.html,\
                .options
-jre.compilation.profile = J2SE-1.4
-javacTarget=jsr14
 src.includes = about.html,\
                bundle.properties
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
index d1a3b83..179a771 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
@@ -10,6 +10,10 @@
 package org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;

 

 import java.util.Dictionary;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+import java.util.Map.Entry;

 import java.util.Properties;

 import java.util.UUID;

 

@@ -30,6 +34,7 @@
 import org.osgi.framework.ServiceFactory;

 import org.osgi.framework.ServiceReference;

 import org.osgi.framework.ServiceRegistration;

+import org.osgi.framework.Version;

 import org.osgi.service.log.LogService;

 import org.osgi.util.tracker.ServiceTracker;

 

@@ -40,7 +45,7 @@
 	private static BundleContext context;

 	private static Activator instance;

 

-	static BundleContext getContext() {

+	public static BundleContext getContext() {

 		return context;

 	}

 

@@ -63,6 +68,45 @@
 	private Object saxParserFactoryTrackerLock = new Object();

 	private ServiceTracker saxParserFactoryTracker;

 

+	private static final String RSA_PROXY_BUNDLE_SYMBOLIC_ID = "org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"; //$NON-NLS-1$

+

+	private BundleContext proxyServiceFactoryBundleContext;

+

+	private void initializeProxyServiceFactoryBundle() throws Exception {

+		// First, find proxy bundle

+		for (Bundle b : context.getBundles()) {

+			if (RSA_PROXY_BUNDLE_SYMBOLIC_ID.equals(b.getSymbolicName())) {

+				// first start it

+				b.start();

+				// then get its bundle context

+				proxyServiceFactoryBundleContext = b.getBundleContext();

+			}

+		}

+		if (proxyServiceFactoryBundleContext == null)

+			throw new IllegalStateException("RSA Proxy bundle (symbolic id=='" //$NON-NLS-1$

+					+ RSA_PROXY_BUNDLE_SYMBOLIC_ID

+					+ "') cannot be found, so RSA cannot be started"); //$NON-NLS-1$

+	}

+

+	private void stopProxyServiceFactoryBundle() {

+		if (proxyServiceFactoryBundleContext != null) {

+			// stop it

+			try {

+				proxyServiceFactoryBundleContext.getBundle().stop();

+			} catch (Exception e) {

+				// we don't care

+			}

+			proxyServiceFactoryBundleContext = null;

+		}

+	}

+

+	public BundleContext getProxyServiceFactoryBundleContext() {

+		return proxyServiceFactoryBundleContext;

+	}

+

+	private Map<Bundle, RemoteServiceAdmin> remoteServiceAdmins = new HashMap<Bundle, RemoteServiceAdmin>(

+			1);

+

 	/*

 	 * (non-Javadoc)

 	 * 

@@ -73,6 +117,14 @@
 	public void start(BundleContext bundleContext) throws Exception {

 		Activator.context = bundleContext;

 		Activator.instance = this;

+		// initialize the RSA proxy service factory bundle...so that we

+		// can get/use *that bundle's BundleContext for registering the

+		// proxy ServiceFactory.

+		// See osgi-dev thread here for info about this

+		// approach/using the ServiceFactory extender approach for this purpose:

+		// https://mail.osgi.org/pipermail/osgi-dev/2011-February/003000.html

+		initializeProxyServiceFactoryBundle();

+

 		// make remote service admin available

 		Properties rsaProps = new Properties();

 		rsaProps.put(RemoteServiceAdmin.SERVICE_PROP, new Boolean(true));

@@ -81,13 +133,27 @@
 						.getName(), new ServiceFactory() {

 					public Object getService(Bundle bundle,

 							ServiceRegistration registration) {

-						return new RemoteServiceAdmin(bundle);

+						RemoteServiceAdmin result = null;

+						synchronized (remoteServiceAdmins) {

+							RemoteServiceAdmin rsa = remoteServiceAdmins

+									.get(bundle);

+							if (rsa == null) {

+								rsa = new RemoteServiceAdmin(bundle);

+								remoteServiceAdmins.put(bundle, rsa);

+							}

+							result = rsa;

+						}

+						return result;

 					}

 

 					public void ungetService(Bundle bundle,

 							ServiceRegistration registration, Object service) {

-						if (service != null)

-							((RemoteServiceAdmin) service).close();

+						synchronized (remoteServiceAdmins) {

+							RemoteServiceAdmin rsa = remoteServiceAdmins

+									.remove(bundle);

+							if (rsa != null)

+								rsa.close();

+						}

 					}

 				}, (Dictionary) rsaProps);

 

@@ -108,6 +174,18 @@
 		endpointDescriptionLocator.start();

 	}

 

+	private void clearRSAs() {

+		synchronized (remoteServiceAdmins) {

+			for (Iterator<Entry<Bundle, RemoteServiceAdmin>> i = remoteServiceAdmins

+					.entrySet().iterator(); i.hasNext();) {

+				Entry<Bundle, RemoteServiceAdmin> entry = i.next();

+				RemoteServiceAdmin rsa = entry.getValue();

+				rsa.close();

+				i.remove();

+			}

+		}

+	}

+

 	/*

 	 * (non-Javadoc)

 	 * 

@@ -123,6 +201,7 @@
 			remoteServiceAdminRegistration.unregister();

 			remoteServiceAdminRegistration = null;

 		}

+		clearRSAs();

 		if (endpointDescriptionAdvertiserRegistration != null) {

 			endpointDescriptionAdvertiserRegistration.unregister();

 			endpointDescriptionAdvertiserRegistration = null;

@@ -148,10 +227,26 @@
 			containerManagerTracker.close();

 			containerManagerTracker = null;

 		}

+		stopProxyServiceFactoryBundle();

 		Activator.context = null;

 		Activator.instance = null;

 	}

 

+	public boolean isOldEquinox() {

+		if (context == null)

+			return false;

+		Bundle systemBundle = context.getBundle(0);

+		String systemBSN = systemBundle.getSymbolicName();

+		if ("org.eclipse.osgi".equals(systemBSN)) { //$NON-NLS-1$

+			Version fixedVersion = new Version("3.7.0"); //$NON-NLS-1$

+			// running on equinox; check the version

+			Version systemVersion = systemBundle.getVersion();

+			if (systemVersion.compareTo(fixedVersion) < 0)

+				return true;

+		}

+		return false;

+	}

+

 	public String getFrameworkUUID() {

 		if (context == null)

 			return null;

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
index 9783f6f..2221298 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
@@ -318,29 +318,23 @@
 	class EndpointDescriptionsHandler extends RootHandler {

 

 		private List<EndpointDescription> endpointDescriptions = new ArrayList<EndpointDescription>();

-		private EndpointDescriptionHandler endpointDescriptionHandler;

 

 		protected void handleRootAttributes(Attributes attributes) {

 		}

 

 		public void startElement(String name, Attributes attributes)

 				throws SAXException {

-			if (ENDPOINT_DESCRIPTION.equals(name)) {

-				if (endpointDescriptionHandler == null) {

-					endpointDescriptionHandler = new EndpointDescriptionHandler(

-							this, attributes, endpointDescriptions);

-				} else

-					duplicateElement(this, name, attributes);

-			} else

+			if (ENDPOINT_DESCRIPTION.equals(name))

+				new EndpointDescriptionHandler(this, attributes,

+						endpointDescriptions);

+			else

 				invalidElement(name, attributes);

 		}

 

 		public void endElement(String namespaceURI, String localName,

 				String qName) {

-			if (elementHandled.equals(localName)) {

-				endpointDescriptionHandler = null;

+			if (elementHandled.equals(localName))

 				super.endElement(namespaceURI, localName, qName);

-			}

 		}

 

 		public List<EndpointDescription> getEndpointDescriptions() {

@@ -363,15 +357,14 @@
 

 		public void startElement(String name, Attributes attributes)

 				throws SAXException {

-			if (ENDPOINT_PROPERTY.equals(name)) {

+			if (ENDPOINT_PROPERTY.equals(name))

 				new EndpointPropertyHandler(this, attributes, properties);

-			}

 		}

 

 		public void endElement(String namespaceURI, String localName,

 				String qName) {

 			if (elementHandled.equals(localName)) {

-				this.descriptions.add(new EndpointDescription(properties));

+				descriptions.add(new EndpointDescription(properties));

 				super.endElement(namespaceURI, localName, qName);

 			}

 		}

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
index 5d3ab96..4d6e4f6 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
@@ -20,6 +20,18 @@
 		logError(methodName, debugOption, clazz, message, null);

 		traceException(methodName, debugOption, clazz, message, null);

 	}

+	

+	public static void logInfo(String methodName, String debugOption,

+			Class clazz, String message) {

+		trace(methodName, debugOption, clazz, "INFO:" + message); //$NON-NLS-1$

+		Activator.getDefault().log(

+				new Status(IStatus.INFO, Activator.PLUGIN_ID,

+						IStatus.INFO, clazz.getName() + ":" //$NON-NLS-1$

+								+ ((methodName == null) ? "<unknown>" //$NON-NLS-1$

+										: methodName) + ":" //$NON-NLS-1$

+								+ ((message == null) ? "<empty>" : message), //$NON-NLS-1$

+						null));

+	}

 

 	public static void logWarning(String methodName, String debugOption,

 			Class clazz, String message) {

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 fbb4a4a..cb201ee 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
@@ -20,10 +20,13 @@
 import java.util.List;

 import java.util.Map;

 import java.util.Properties;

+import java.util.Set;

+import java.util.TreeMap;

 

 import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;

 import org.eclipse.ecf.remoteservice.IRemoteServiceReference;

 import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

+import org.osgi.framework.Constants;

 import org.osgi.framework.ServiceReference;

 

 public class PropertiesUtil {

@@ -59,7 +62,6 @@
 			RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,

 			RemoteConstants.ENDPOINT_IDFILTER_IDS,

 			RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,

-			RemoteConstants.ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE,

 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,

 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS,

 			RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID,

@@ -106,33 +108,45 @@
 	}

 

 	public static String[] getExportedInterfaces(

-			ServiceReference serviceReference) {

-		// Get the OSGi 4.2 specified required service property value

-		Object propValue = serviceReference

-				.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES);

-		// If the required property is not set then it's not being registered

-		// as a remote service so we return null

+			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties) {

+		Object overridingPropValue = overridingProperties

+				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES);

+		if (overridingPropValue != null)

+			return getExportedInterfaces(serviceReference, overridingPropValue);

+		return getExportedInterfaces(serviceReference);

+	}

+

+	private static String[] getExportedInterfaces(

+			ServiceReference serviceReference, Object propValue) {

 		if (propValue == null)

 			return null;

+		String[] objectClass = (String[]) serviceReference

+				.getProperty(org.osgi.framework.Constants.OBJECTCLASS);

 		boolean wildcard = propValue.equals("*"); //$NON-NLS-1$

 		if (wildcard)

-			return (String[]) serviceReference

-					.getProperty(org.osgi.framework.Constants.OBJECTCLASS);

+			return objectClass;

 		else {

-			final String[] stringValue = getStringArrayFromPropertyValue(propValue);

-			if (stringValue != null && stringValue.length == 1

-					&& stringValue[0].equals("*")) { //$NON-NLS-1$

-				LogUtility

-						.logWarning(

-								"getExportedInterfaces", //$NON-NLS-1$

-								DebugOptions.TOPOLOGY_MANAGER,

-								PropertiesUtil.class,

-								"Service Exported Interfaces Wildcard does not accept String[\"*\"]"); //$NON-NLS-1$

-			}

-			return stringValue;

+			final String[] stringArrayValue = getStringArrayFromPropertyValue(propValue);

+			if (stringArrayValue == null)

+				return null;

+			else if (stringArrayValue.length == 1

+					&& stringArrayValue[0].equals("*")) { //$NON-NLS-1$

+				// this will support the idiom: new String[] { "*" }

+				return objectClass;

+			} else

+				return stringArrayValue;

 		}

 	}

 

+	public static String[] getExportedInterfaces(

+			ServiceReference serviceReference) {

+		return getExportedInterfaces(

+				serviceReference,

+				serviceReference

+						.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES));

+	}

+

 	public static String[] getServiceIntents(ServiceReference serviceReference,

 			Map overridingProperties) {

 		List results = new ArrayList();

@@ -229,8 +243,14 @@
 		return ecfProperties.contains(key);

 	}

 

+	// skip dotted (private) properties (R4.2 enterprise spec. table 122.1)

+	public static boolean isPrivateProperty(String key) {

+		return (key.startsWith(".")); //$NON-NLS-1$

+	}

+

 	public static boolean isReservedProperty(String key) {

-		return isOSGiProperty(key) || isECFProperty(key);

+		return isOSGiProperty(key) || isECFProperty(key)

+				|| isPrivateProperty(key);

 	}

 

 	public static Map createMapFromDictionary(Dictionary input) {

@@ -303,6 +323,16 @@
 		return target;

 	}

 

+	public static Map<String, Object> copyProperties(

+			final ServiceReference serviceReference,

+			final Map<String, Object> target) {

+		final String[] keys = serviceReference.getPropertyKeys();

+		for (int i = 0; i < keys.length; i++) {

+			target.put(keys[i], serviceReference.getProperty(keys[i]));

+		}

+		return target;

+	}

+

 	public static Map<String, Object> copyNonECFProperties(

 			Map<String, Object> source, Map<String, Object> target) {

 		for (String key : source.keySet())

@@ -346,4 +376,31 @@
 		return target;

 	}

 

+	public static Map mergeProperties(final ServiceReference serviceReference,

+			final Map<String, Object> overrides) {

+		return mergeProperties(copyProperties(serviceReference, new HashMap()),

+				overrides);

+	}

+

+	public static Map mergeProperties(final Map<String, Object> source,

+			final Map<String, Object> overrides) {

+

+		// copy to target from service reference

+		final Map target = copyProperties(source, new TreeMap<String, Object>(

+				String.CASE_INSENSITIVE_ORDER));

+

+		// now do actual merge

+		final Set<String> keySet = overrides.keySet();

+		for (final String key : keySet) {

+			// skip keys not allowed

+			if (Constants.SERVICE_ID.equals(key)

+					|| Constants.OBJECTCLASS.equals(key)) {

+				continue;

+			}

+			target.remove(key.toLowerCase());

+			target.put(key.toLowerCase(), overrides.get(key));

+		}

+

+		return target;

+	}

 }

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
index 84ddbe4..3eb2bce 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
@@ -16,6 +16,7 @@
 import java.util.Map;

 

 import org.eclipse.ecf.core.ContainerConnectException;

+import org.eclipse.ecf.core.ContainerCreateException;

 import org.eclipse.ecf.core.ContainerTypeDescription;

 import org.eclipse.ecf.core.IContainer;

 import org.eclipse.ecf.core.IContainerFactory;

@@ -26,6 +27,11 @@
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;

 import org.eclipse.ecf.remoteservice.RemoteServiceContainer;

 

+/**

+ * Abstract superclass for consumer container selectors...i.e. implementers of

+ * {@link IConsumerContainerSelector}).

+ * 

+ */

 public class AbstractConsumerContainerSelector extends

 		AbstractContainerSelector {

 

@@ -129,7 +135,8 @@
 	}

 

 	protected IRemoteServiceContainer createAndConfigureConsumerContainer(

-			String[] remoteSupportedConfigs, Map remoteExportedProperties) {

+			String[] remoteSupportedConfigs, Map remoteExportedProperties)

+			throws SelectContainerException {

 		if (remoteSupportedConfigs == null

 				|| remoteSupportedConfigs.length == 0)

 			return null;

@@ -164,6 +171,7 @@
 				// If we have one to use, then create the container

 				if (selectedConfig != null) {

 					IRemoteServiceContainer rsContainer = createContainer(

+							desc,

 							selectedConfig,

 							PropertiesUtil

 									.createMapFromDictionary(importedConfigProperties));

@@ -181,18 +189,26 @@
 	}

 

 	protected IRemoteServiceContainer createContainer(

-			String containerTypeDescriptionName, Map properties) {

+			ContainerTypeDescription containerTypeDescription,

+			String containerTypeDescriptionName, Map properties)

+			throws SelectContainerException {

 		try {

 			IContainer container = (properties == null) ? getContainerFactory()

 					.createContainer(containerTypeDescriptionName)

 					: getContainerFactory().createContainer(

 							containerTypeDescriptionName, properties);

+			IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container

+					.getAdapter(IRemoteServiceContainerAdapter.class);

+			if (adapter == null)

+				throw new SelectContainerException(

+						"Container does not implement IRemoteServiceContainerAdapter", null, containerTypeDescription); //$NON-NLS-1$

 			return new RemoteServiceContainer(container);

-		} catch (Exception e) {

-			logException(

-					"Cannot create container with container type description name=" //$NON-NLS-1$

-							+ containerTypeDescriptionName, e);

-			return null;

+		} catch (ContainerCreateException e) {

+			String message = "Cannot create container with container type description name=" //$NON-NLS-1$

+					+ containerTypeDescriptionName;

+			logException(message, e);

+			throw new SelectContainerException(message, e,

+					containerTypeDescription);

 		}

 	}

 

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
index 6b90fe4..a395f39 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
@@ -10,7 +10,9 @@
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;

 

 import java.util.ArrayList;

+import java.util.HashMap;

 import java.util.List;

+import java.util.Map;

 

 import org.eclipse.core.runtime.IStatus;

 import org.eclipse.core.runtime.Status;

@@ -32,6 +34,12 @@
 import org.eclipse.ecf.remoteservice.RemoteServiceContainer;

 import org.osgi.framework.ServiceReference;

 

+/**

+ * Abstract superclass for both host and consumer container selectors...i.e.

+ * implementers of {@link IHostContainerSelector} or

+ * {@link IConsumerContainerSelector}.

+ * 

+ */

 public abstract class AbstractContainerSelector {

 

 	public static final IRemoteServiceContainer[] EMPTY_REMOTE_SERVICE_CONTAINER_ARRAY = new IRemoteServiceContainer[] {};

@@ -109,25 +117,69 @@
 		return (supportedIntents == null) ? new String[0] : supportedIntents;

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected IContainer createContainer(ServiceReference serviceReference,

+			Map<String, Object> properties,

 			ContainerTypeDescription containerTypeDescription)

-			throws ContainerCreateException {

+			throws SelectContainerException {

 

 		IContainerFactory containerFactory = getContainerFactory();

 

-		Object containerFactoryArguments = serviceReference

-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);

-		if (containerFactoryArguments instanceof String) {

-			return containerFactory.createContainer(containerTypeDescription,

-					(String) containerFactoryArguments);

-		} else if (containerFactoryArguments instanceof ID) {

-			return containerFactory.createContainer(containerTypeDescription,

-					(ID) containerFactoryArguments);

-		} else if (containerFactoryArguments instanceof Object[]) {

-			return containerFactory.createContainer(containerTypeDescription,

-					(Object[]) containerFactoryArguments);

+		final Object containerFactoryArguments = getContainerFactoryArguments(

+				serviceReference, properties, containerTypeDescription);

+

+		try {

+			if (containerFactoryArguments instanceof String) {

+				return containerFactory.createContainer(

+						containerTypeDescription,

+						(String) containerFactoryArguments);

+			} else if (containerFactoryArguments instanceof ID) {

+				return containerFactory.createContainer(

+						containerTypeDescription,

+						(ID) containerFactoryArguments);

+			} else if (containerFactoryArguments instanceof Object[]) {

+				return containerFactory.createContainer(

+						containerTypeDescription,

+						(Object[]) containerFactoryArguments);

+			} else if (containerFactoryArguments instanceof Map) {

+				return containerFactory.createContainer(

+						containerTypeDescription,

+						(Map) containerFactoryArguments);

+			}

+			return containerFactory.createContainer(containerTypeDescription);

+		} catch (ContainerCreateException e) {

+			throw new SelectContainerException(

+					"Exception creating or configuring container", e, //$NON-NLS-1$

+					containerTypeDescription);

 		}

-		return containerFactory.createContainer(containerTypeDescription);

+	}

+

+	protected Object getContainerFactoryArguments(

+			ServiceReference serviceReference, Map<String, Object> properties,

+			ContainerTypeDescription containerTypeDescription) {

+		// If the RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS is set

+		// than use it.

+		final Object containerFactoryArguments = properties

+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);

+		if (containerFactoryArguments != null)

+			return containerFactoryArguments;

+

+		String exportedConfig = containerTypeDescription.getName();

+		// If not, then we look through the properties that start with

+		// <containerTypeDescription.name>.

+		Map<String, Object> results = new HashMap<String, Object>();

+		for (String origKey : properties.keySet()) {

+			if (origKey.startsWith(exportedConfig + ".")) { //$NON-NLS-1$

+				String key = origKey.substring(exportedConfig.length() + 1);

+				if (key != null)

+					results.put(key, properties.get(origKey));

+			}

+		}

+		if (results.size() == 0)

+			return null;

+		return results;

 	}

 

 	protected ID createTargetID(IContainer container, String target) {

@@ -138,9 +190,12 @@
 		container.disconnect();

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected IConnectContext createConnectContext(

-			ServiceReference serviceReference, IContainer container,

-			Object context) {

+			ServiceReference serviceReference, Map<String, Object> properties,

+			IContainer container, Object context) {

 		if (context instanceof IConnectContext)

 			return (IConnectContext) context;

 		return null;

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
index 0768390..201394d 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
@@ -12,8 +12,10 @@
 import java.util.ArrayList;

 import java.util.Arrays;

 import java.util.Collection;

+import java.util.Collections;

 import java.util.Iterator;

 import java.util.List;

+import java.util.Map;

 

 import org.eclipse.ecf.core.ContainerConnectException;

 import org.eclipse.ecf.core.ContainerCreateException;

@@ -29,18 +31,26 @@
 import org.eclipse.ecf.remoteservice.RemoteServiceContainer;

 import org.osgi.framework.ServiceReference;

 

+/**

+ * Abstract superclass for host container selectors...i.e. implementers of

+ * {@link IHostContainerSelector}.

+ * 

+ */

 public abstract class AbstractHostContainerSelector extends

 		AbstractContainerSelector {

 

-	private static final String NODEFAULT = "<<nodefault>>"; //$NON-NLS-1$

 	protected String[] defaultConfigTypes;

 

 	public AbstractHostContainerSelector(String[] defaultConfigTypes) {

 		this.defaultConfigTypes = defaultConfigTypes;

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected Collection selectExistingHostContainers(

 			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties,

 			String[] serviceExportedInterfaces,

 			String[] serviceExportedConfigs, String[] serviceIntents) {

 		List results = new ArrayList();

@@ -66,10 +76,10 @@
 			if (!description.isServer()) {

 				continue;

 			}

-			

-			if (matchExistingHostContainer(serviceReference, containers[i],

-					adapter, description, serviceExportedConfigs,

-					serviceIntents)) {

+

+			if (matchExistingHostContainer(serviceReference,

+					overridingProperties, containers[i], adapter, description,

+					serviceExportedConfigs, serviceIntents)) {

 				trace("selectExistingHostContainers", "INCLUDING containerID=" //$NON-NLS-1$ //$NON-NLS-2$

 						+ containers[i].getID()

 						+ " configs=" //$NON-NLS-1$

@@ -93,10 +103,14 @@
 		return results;

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected boolean matchHostContainerToConnectTarget(

-			ServiceReference serviceReference, IContainer container) {

-		String target = (String) serviceReference

-				.getProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

+			ServiceReference serviceReference, Map<String, Object> properties,

+			IContainer container) {

+		String target = (String) properties

+				.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

 		if (target == null)

 			return true;

 		// If a targetID is specified, make sure it either matches what the

@@ -108,7 +122,8 @@
 		if (connectedID == null) {

 			// connect to the target and we have a match

 			try {

-				connectHostContainer(serviceReference, container, target);

+				connectHostContainer(serviceReference, properties, container,

+						target);

 			} catch (Exception e) {

 				logException("doConnectContainer containerID=" //$NON-NLS-1$

 						+ container.getID() + " target=" + target, e); //$NON-NLS-1$

@@ -125,22 +140,28 @@
 		return false;

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected boolean matchExistingHostContainer(

-			ServiceReference serviceReference, IContainer container,

-			IRemoteServiceContainerAdapter adapter,

+			ServiceReference serviceReference, Map<String, Object> properties,

+			IContainer container, IRemoteServiceContainerAdapter adapter,

 			ContainerTypeDescription description, String[] requiredConfigTypes,

 			String[] requiredServiceIntents) {

 

 		return matchHostSupportedConfigTypes(requiredConfigTypes, description)

 				&& matchHostSupportedIntents(requiredServiceIntents,

 						description)

-				&& matchHostContainerID(serviceReference, container)

+				&& matchHostContainerID(serviceReference, properties, container)

 				&& matchHostContainerToConnectTarget(serviceReference,

-						container);

+						properties, container);

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected boolean matchHostContainerID(ServiceReference serviceReference,

-			IContainer container) {

+			Map<String, Object> properties, IContainer container) {

 

 		ID containerID = container.getID();

 		// No match if the container has no ID

@@ -148,8 +169,8 @@
 			return false;

 

 		// Then get containerid if specified directly by user in properties

-		ID requiredContainerID = (ID) serviceReference

-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID);

+		ID requiredContainerID = (ID) properties

+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID);

 		// If the CONTAINER_I

 		if (requiredContainerID != null) {

 			return requiredContainerID.equals(containerID);

@@ -158,8 +179,8 @@
 		// arguments

 		// and check if the ID matches that

 		Namespace ns = containerID.getNamespace();

-		Object cid = serviceReference

-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);

+		Object cid = properties

+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS);

 		// If no arguments are present, then any container ID should match

 		if (cid == null)

 			return true;

@@ -200,58 +221,54 @@
 		return result;

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected Collection createAndConfigureHostContainers(

-			ServiceReference serviceReference,

+			ServiceReference serviceReference, Map<String, Object> properties,

 			String[] serviceExportedInterfaces, String[] requiredConfigs,

-			String[] requiredIntents) {

+			String[] requiredIntents) throws SelectContainerException {

 

 		List results = new ArrayList();

 		ContainerTypeDescription[] descriptions = getContainerTypeDescriptions();

 		if (descriptions == null)

-			return results;

+			return Collections.EMPTY_LIST;

 		// If there are no required configs specified, then create any defaults

 		if (requiredConfigs == null || requiredConfigs.length == 0) {

-			ContainerTypeDescription[] ctds = getContainerTypeDescriptionsForDefaultConfigTypes(descriptions);

-			if (ctds != null) {

-				for (int i = 0; i < ctds.length; i++) {

-					IRemoteServiceContainer rsContainer = createRSContainer(

-							serviceReference, ctds[i]);

-					if (rsContainer != null)

-						results.add(rsContainer);

-				}

-			}

+			createAndAddDefaultContainers(serviceReference, properties,

+					serviceExportedInterfaces, requiredIntents, descriptions,

+					results);

 		} else {

 			// See if we have a match

 			for (int i = 0; i < descriptions.length; i++) {

-				IRemoteServiceContainer rsContainer = createMatchingContainer(

-						descriptions[i], serviceReference,

+				IRemoteServiceContainer matchingContainer = createMatchingContainer(

+						descriptions[i], serviceReference, properties,

 						serviceExportedInterfaces, requiredConfigs,

 						requiredIntents);

-				if (rsContainer != null)

-					results.add(rsContainer);

-			}

-		}

-		// we still haven't created one then we check for no default and if

-		// not present then we

-		// create default ones

-		if (results.size() == 0 && requiredConfigs != null

-				&& requiredConfigs.length > 0) {

-			List requiredConfigsList = Arrays.asList(requiredConfigs);

-			if (!requiredConfigsList.contains(NODEFAULT)) {

-				ContainerTypeDescription[] ctds = getContainerTypeDescriptionsForDefaultConfigTypes(descriptions);

-				if (ctds != null) {

-					for (int i = 0; i < ctds.length; i++) {

-						IRemoteServiceContainer rsContainer = createRSContainer(

-								serviceReference, ctds[i]);

-						if (rsContainer != null)

-							results.add(rsContainer);

-					}

-				}

+				if (matchingContainer != null)

+					results.add(matchingContainer);

 			}

 		}

 		return results;

 	}

 

+	private void createAndAddDefaultContainers(

+			ServiceReference serviceReference, Map<String, Object> properties,

+			String[] serviceExportedInterfaces, String[] requiredIntents,

+			ContainerTypeDescription[] descriptions, Collection results)

+			throws SelectContainerException {

+		ContainerTypeDescription[] ctds = getContainerTypeDescriptionsForDefaultConfigTypes(descriptions);

+		if (ctds != null) {

+			for (int i = 0; i < ctds.length; i++) {

+				IRemoteServiceContainer matchingContainer = createMatchingContainer(

+						ctds[i], serviceReference, properties,

+						serviceExportedInterfaces, null, requiredIntents);

+				if (matchingContainer != null)

+					results.add(matchingContainer);

+			}

+		}

+	}

+

 	protected ContainerTypeDescription[] getContainerTypeDescriptionsForDefaultConfigTypes(

 			ContainerTypeDescription[] descriptions) {

 		String[] defaultConfigTypes = getDefaultConfigTypes();

@@ -285,54 +302,60 @@
 		return defaultConfigTypes;

 	}

 

+	/**

+	 * @throws ContainerCreateException

+	 * @since 2.0

+	 */

 	protected IRemoteServiceContainer createMatchingContainer(

 			ContainerTypeDescription containerTypeDescription,

-			ServiceReference serviceReference,

+			ServiceReference serviceReference, Map<String, Object> properties,

 			String[] serviceExportedInterfaces, String[] requiredConfigs,

-			String[] requiredIntents) {

+			String[] requiredIntents) throws SelectContainerException {

 

 		if (matchHostSupportedConfigTypes(requiredConfigs,

 				containerTypeDescription)

 				&& matchHostSupportedIntents(requiredIntents,

 						containerTypeDescription)) {

-			return createRSContainer(serviceReference, containerTypeDescription);

+			return createRSContainer(serviceReference, properties,

+					containerTypeDescription);

 		}

 		return null;

 	}

 

+	/**

+	 * @throws ContainerCreateException

+	 * @since 2.0

+	 */

 	protected IRemoteServiceContainer createRSContainer(

-			ServiceReference serviceReference,

-			ContainerTypeDescription containerTypeDescription) {

-		try {

-			IContainer container = createContainer(serviceReference,

-					containerTypeDescription);

-			IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container

-					.getAdapter(IRemoteServiceContainerAdapter.class);

-			if (adapter == null)

-				throw new ContainerCreateException(

-						"Container does not implement IRemoteServiceContainerAdapter"); //$NON-NLS-1$

-			return new RemoteServiceContainer(container, adapter);

-		} catch (Exception e) {

-			logException(

-					"Exception creating container from ContainerTypeDescription=" //$NON-NLS-1$

-							+ containerTypeDescription, e);

-			return null;

-		}

+			ServiceReference serviceReference, Map<String, Object> properties,

+			ContainerTypeDescription containerTypeDescription)

+			throws SelectContainerException {

+		IContainer container = createContainer(serviceReference, properties,

+				containerTypeDescription);

+		IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container

+				.getAdapter(IRemoteServiceContainerAdapter.class);

+		if (adapter == null)

+			throw new SelectContainerException(

+					"Container does not implement IRemoteServiceContainerAdapter", null, containerTypeDescription); //$NON-NLS-1$

+		return new RemoteServiceContainer(container, adapter);

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	protected void connectHostContainer(ServiceReference serviceReference,

-			IContainer container, Object target)

+			Map<String, Object> properties, IContainer container, Object target)

 			throws ContainerConnectException, IDCreateException {

 		ID targetID = (target instanceof String) ? IDUtil.createID(

 				container.getConnectNamespace(), (String) target) : IDUtil

 				.createID(container.getConnectNamespace(),

 						new Object[] { target });

-		Object context = serviceReference

-				.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT);

+		Object context = properties

+				.get(RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT);

 		IConnectContext connectContext = null;

 		if (context != null) {

-			connectContext = createConnectContext(serviceReference, container,

-					context);

+			connectContext = createConnectContext(serviceReference, properties,

+					container, context);

 		}

 		// connect the container

 		container.connect(targetID, connectContext);

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
index 67c526d..43b89df 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
@@ -25,6 +25,12 @@
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;

 import org.osgi.framework.Version;

 

+/**

+ * Abstract superclass for metadata factories...i.e. implementers of

+ * {@link IServiceInfoFactory}.

+ * 

+ * 

+ */

 public abstract class AbstractMetadataFactory {

 

 	protected static final String LIST_SEPARATOR = " "; //$NON-NLS-1$

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
index 71f3c53..8c6048e 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
@@ -31,6 +31,16 @@
 import org.osgi.service.remoteserviceadmin.ImportRegistration;

 import org.osgi.util.tracker.ServiceTracker;

 

+/**

+ * Abstract superclass for topology managers. This abstract superclass provides

+ * basic functionality for topology managers to reuse. New topology managers can

+ * extend this class to get or customize desired functionality. Alternatively,

+ * they can use this class as a guide to implementing desired topology manager

+ * behavior. For description of the role of topology managers see the <a

+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote

+ * Service Admin specification (chap 122)</a>.

+ * 

+ */

 public abstract class AbstractTopologyManager {

 

 	public static final String SERVICE_EXPORTED_INTERFACES_WILDCARD = "*"; //$NON-NLS-1$

@@ -56,9 +66,12 @@
 	}

 

 	protected String getFrameworkUUID() {

-		return Activator.getDefault().getFrameworkUUID();

+		Activator a = Activator.getDefault();

+		if (a == null)

+			return null;

+		return a.getFrameworkUUID();

 	}

-	

+

 	protected IEndpointDescriptionAdvertiser getEndpointDescriptionAdvertiser(

 			EndpointDescription endpointDescription) {

 		synchronized (endpointDescriptionAdvertiserTrackerLock) {

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
index 013aca7..e06dff7 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
@@ -9,9 +9,16 @@
  ******************************************************************************/

 package org.eclipse.ecf.osgi.services.remoteserviceadmin;

 

+import java.util.List;

+

 import org.eclipse.ecf.core.identity.ID;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;

 import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

 

+/**

+ * Default implementation of {@link IConsumerContainerSelector}.

+ * 

+ */

 public class ConsumerContainerSelector extends

 		AbstractConsumerContainerSelector implements IConsumerContainerSelector {

 

@@ -22,33 +29,37 @@
 	}

 

 	public IRemoteServiceContainer selectConsumerContainer(

-			EndpointDescription endpointDescription) {

+			EndpointDescription endpointDescription)

+			throws SelectContainerException {

 		trace("selectConsumerContainers", "endpointDescription=" + endpointDescription); //$NON-NLS-1$ //$NON-NLS-2$

 

+		// Get service.imported.configs

+		List<String> sic = PropertiesUtil

+				.getStringPlusProperty(

+						endpointDescription.getProperties(),

+						org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS);

+		String[] serviceImportedConfigs = sic.toArray(new String[sic.size()]);

 		// Get the endpointID

 		ID endpointContainerID = endpointDescription.getContainerID();

 

-		String[] remoteSupportedConfigs = (String[]) endpointDescription

-				.getProperties()

-				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);

-

 		// Get connect targetID

 		ID connectTargetID = endpointDescription.getConnectTargetID();

 

 		IRemoteServiceContainer rsContainer = selectExistingConsumerContainer(

-				endpointContainerID, remoteSupportedConfigs, connectTargetID);

+				endpointContainerID, serviceImportedConfigs, connectTargetID);

 

 		// If we haven't found any existing containers then we create one

 		// from the remoteSupportedConfigs...*iff* autoCreateContainer is

 		// set to true

 		if (rsContainer == null && autoCreateContainer)

 			rsContainer = createAndConfigureConsumerContainer(

-					remoteSupportedConfigs, endpointDescription.getProperties());

+					serviceImportedConfigs, endpointDescription.getProperties());

 

 		// Get the connect target ID from the endpointDescription

 		// and connect the given containers to the connect targetID

 		// This is only needed when when the endpointID is different from

-		// the connect targetID, and the containers are not already connected

+		// the connect targetID, and the containers are not already

+		// connected

 		connectContainerToTarget(rsContainer, connectTargetID);

 

 		return rsContainer;

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
index 0be3c3f..557c9b2 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
@@ -15,7 +15,8 @@
 /**

  * Discovered endpoint description. Instances of this class represent discovered

  * endpoint descriptions that were discovered by a particular discovery locator

- * namespace.  Instances of this class are typically created via a {@link IDiscoveredEndpointDescriptionFactory}.

+ * namespace. Instances of this class are typically created via a

+ * {@link IDiscoveredEndpointDescriptionFactory}.

  * 

  * @see IDiscoveredEndpointDescriptionFactory

  */

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
index 65c2cae..c44c8e6 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
@@ -20,7 +20,8 @@
 import org.osgi.service.remoteserviceadmin.EndpointDescription;

 

 /**

- * Default implementation of {@link IDiscoveredEndpointDescriptionFactory} service.

+ * Default implementation of {@link IDiscoveredEndpointDescriptionFactory}

+ * service.

  * 

  * @see IDiscoveredEndpointDescriptionFactory

  */

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
index 6c34885..e30a413 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
@@ -17,6 +17,7 @@
 
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
 import org.osgi.framework.ServiceReference;
@@ -50,14 +51,17 @@
 	private String rsFilter;
 
 	private int hashCode = 7;
-	
+	private Map overrides;
+
 	private void computeHashCode() {
 		this.hashCode = 31 * this.hashCode + getId().hashCode();
-		this.hashCode = 31 * this.hashCode + new Long(getServiceId()).intValue();
+		this.hashCode = 31 * this.hashCode
+				+ new Long(getServiceId()).intValue();
 		String frameworkUUID = getFrameworkUUID();
-		this.hashCode = 31 * this.hashCode + (frameworkUUID==null?0:frameworkUUID.hashCode());
+		this.hashCode = 31 * this.hashCode
+				+ (frameworkUUID == null ? 0 : frameworkUUID.hashCode());
 	}
-	
+
 	/**
 	 * 
 	 * @param reference
@@ -126,11 +130,7 @@
 		try {
 			return IDUtil.createID(idNamespace, idName);
 		} catch (IDCreateException e) {
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"cannot create a valid ID: idNamespace=" + idNamespace //$NON-NLS-1$
-							+ ", idName=" + idName); //$NON-NLS-1$
-			iae.initCause(e);
-			throw iae;
+			return IDFactory.getDefault().createStringID(idName);
 		}
 	}
 
@@ -206,7 +206,7 @@
 	public int hashCode() {
 		return hashCode;
 	}
-	
+
 	public boolean equals(Object other) {
 		if (other == null)
 			return false;
@@ -216,7 +216,7 @@
 			return false;
 		EndpointDescription o = (EndpointDescription) other;
 		String frameworkUUID = getFrameworkUUID();
-		// equals returns true:  1) if getId() returns same String
+		// equals returns true: 1) if getId() returns same String
 		return getId().equals(o.getId())
 		// 2) getServiceId() returns same value
 				&& getServiceId() == o.getServiceId()
@@ -232,4 +232,21 @@
 				+ ",properties=" + getProperties() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	void setPropertiesOverrides(Map propertiesOverrides) {
+		this.overrides = PropertiesUtil.mergeProperties(super.getProperties(),
+				propertiesOverrides);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.osgi.service.remoteserviceadmin.EndpointDescription#getProperties()
+	 */
+	@Override
+	public Map<String, Object> getProperties() {
+		if (overrides != null)
+			return overrides;
+		return super.getProperties();
+	}
 }
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
index 80ff4a9..6e42be4 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
@@ -20,6 +20,10 @@
 import org.eclipse.ecf.discovery.IServiceInfo;

 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;

 

+/**

+ * Default implementation of {@link IEndpointDescriptionAdvertiser}.

+ * 

+ */

 public class EndpointDescriptionAdvertiser implements

 		IEndpointDescriptionAdvertiser {

 

@@ -85,7 +89,9 @@
 			return createErrorStatus(messagePrefix

 					+ " endpointDescription=" //$NON-NLS-1$

 					+ endpointDescription

-					+ ".  No endpointDescriptionLocator advertisers available.  Cannot unpublish endpointDescription=" //$NON-NLS-1$

+					+ ".  No endpointDescriptionLocator advertisers available.  Cannot "  //$NON-NLS-1$

+					+ (advertise ? "publish" : "unpublish")  //$NON-NLS-1$ //$NON-NLS-2$

+					+ " endpointDescription=" //$NON-NLS-1$ 

 					+ endpointDescription);

 		for (int i = 0; i < discoveryAdvertisers.length; i++) {

 			IServiceInfo serviceInfo = (advertise ? serviceInfoFactory

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 7edd6f0..f852af3 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
@@ -57,6 +57,11 @@
 import org.osgi.util.tracker.ServiceTracker;

 import org.osgi.util.tracker.ServiceTrackerCustomizer;

 

+/**

+ * Implementation of EndpointDescription discovery mechanism, using any/all ECF

+ * discovery providers (implementers if {@link IDiscoveryLocator}.

+ * 

+ */

 public class EndpointDescriptionLocator {

 

 	private BundleContext context;

@@ -384,7 +389,7 @@
 			String matchingFilters, boolean discovered) {

 		if (eventQueue == null)

 			return;

-		trace("queueEndpointDescription", "endpointDescription="

+		trace("queueEndpointDescription", "endpointDescription=" //$NON-NLS-1$ //$NON-NLS-2$

 				+ endpointDescription);

 		synchronized (eventQueue) {

 			eventQueue

@@ -596,19 +601,27 @@
 			List<String> filters = PropertiesUtil.getStringPlusProperty(

 					getMapFromProperties(refs[i]),

 					EndpointListener.ENDPOINT_LISTENER_SCOPE);

-			String matchingFilter = isMatch(description, filters);

-			if (matchingFilter != null)

-				results.add(new EndpointListenerHolder(listener, description,

-						matchingFilter));

+			if (filters.size() > 0) {

+				String matchingFilter = isMatch(description, filters);

+				if (matchingFilter != null)

+					results.add(new EndpointListenerHolder(listener,

+							description, matchingFilter));

+			}

 		}

 		return (EndpointListenerHolder[]) results

 				.toArray(new EndpointListenerHolder[results.size()]);

 	}

 

 	private String isMatch(EndpointDescription description, List<String> filters) {

-		for (String filter : filters)

-			if (description.matches(filter))

-				return filter;

+		for (String filter : filters) {

+			try {

+				if (description.matches(filter))

+					return filter;

+			} catch (IllegalArgumentException e) {

+				logError("isMatch", "invalid endpoint listener filter=" //$NON-NLS-1$ //$NON-NLS-2$

+						+ filters, e);

+			}

+		}

 		return null;

 	}

 

@@ -812,6 +825,8 @@
 		}

 

 		void handleService(IServiceInfo serviceInfo, boolean discovered) {

+			logInfo("handleService", "serviceInfo=" + serviceInfo //$NON-NLS-1$ //$NON-NLS-2$

+					+ ",discovered=" + discovered); //$NON-NLS-1$

 			IServiceID serviceID = serviceInfo.getServiceID();

 			if (matchServiceID(serviceID))

 				handleOSGiServiceEndpoint(serviceID, serviceInfo, discovered);

@@ -855,6 +870,12 @@
 			}

 		}

 

+		private void logInfo(String methodName, String message) {

+			LogUtility.logInfo(methodName,

+					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),

+					message);

+		}

+

 		private void logWarning(String methodName, String message) {

 			LogUtility.logWarning(methodName,

 					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),

@@ -891,8 +912,9 @@
 				// for given serviceID and serviceInfo

 				return (discovered) ? factory

 						.createDiscoveredEndpointDescription(locator,

-								serviceInfo) : factory

-						.removeDiscoveredEndpointDescription(locator, serviceId);

+								serviceInfo)

+						: factory.removeDiscoveredEndpointDescription(locator,

+								serviceId);

 			} catch (Exception e) {

 				logError(

 						methodName,

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
index ed6de2b..ab3fe2b 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
@@ -9,6 +9,12 @@
  ******************************************************************************/

 package org.eclipse.ecf.osgi.services.remoteserviceadmin;

 

+/**

+ * Exception class to represent endpoint description parse problems when

+ * performed by {@link IEndpointDescriptionReader}.

+ * 

+ * @see IEndpointDescriptionReader#readEndpointDescriptions(java.io.InputStream)

+ */

 public class EndpointDescriptionParseException extends Exception {

 

 	private static final long serialVersionUID = -4481979787400184664L;

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 5d46705..1197f12 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
@@ -19,6 +19,10 @@
 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.EndpointDescriptionParser;

 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

 

+/**

+ * Default implementation of {@link IEndpointDescriptionReader}.

+ * 

+ */

 public class EndpointDescriptionReader implements IEndpointDescriptionReader {

 

 	public org.osgi.service.remoteserviceadmin.EndpointDescription[] readEndpointDescriptions(

@@ -42,7 +46,7 @@
 						DebugOptions.ENDPOINT_DESCRIPTION_READER,

 						this.getClass(),

 						"Exception parsing endpoint description properties", e); //$NON-NLS-1$

-				throw new IOException("Error creating endpoint description: "

+				throw new IOException("Error creating endpoint description: " //$NON-NLS-1$

 						+ e.getMessage());

 			}

 		}

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
index 47a70f0..82dc11c 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
@@ -16,6 +16,14 @@
 import java.util.Map;

 import java.util.Set;

 

+/**

+ * Endpoint description writer class for writing {@link EndpointDescription}s to

+ * the OSGi 4.2 Remote Service Admin Endpoint Description Extender Format

+ * (section 122.8 of OSGi 4.2 enterprise specification). This class may be used

+ * or extended to write {@link EndpointDescription} instances to the format

+ * specified by OSGi 4.2 section 122.8.

+ * 

+ */

 public class EndpointDescriptionWriter {

 

 	protected String indent = "  "; //$NON-NLS-1$

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
index 4fba499..28873c1 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
@@ -11,11 +11,16 @@
 

 import java.util.Collection;

 import java.util.Iterator;

+import java.util.Map;

 

 import org.eclipse.ecf.core.IContainer;

 import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

 import org.osgi.framework.ServiceReference;

 

+/**

+ * Default implementation of {@link IHostContainerSelector} service.

+ * 

+ */

 public class HostContainerSelector extends AbstractHostContainerSelector

 		implements IHostContainerSelector {

 

@@ -30,35 +35,44 @@
 	// Adding synchronized to make the host container finding

 	// thread safe to deal with bug

 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=331836

+	/**

+	 * @see org.eclipse.ecf.osgi.services.remoteserviceadmin.IHostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference,

+	 *      java.util.Map, java.lang.String[], java.lang.String[],

+	 *      java.lang.String[])

+	 * @since 2.0

+	 */

 	public synchronized IRemoteServiceContainer[] selectHostContainers(

 			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties,

 			String[] serviceExportedInterfaces,

-			String[] serviceExportedConfigs, String[] serviceIntents) {

+			String[] serviceExportedConfigs, String[] serviceIntents)

+			throws SelectContainerException {

 		// Find previously created containers that match the given

 		// serviceExportedConfigs and serviceIntents

 		Collection rsContainers = selectExistingHostContainers(

-				serviceReference, serviceExportedInterfaces,

-				serviceExportedConfigs, serviceIntents);

+				serviceReference, overridingProperties,

+				serviceExportedInterfaces, serviceExportedConfigs,

+				serviceIntents);

 

 		if (rsContainers.size() == 0 && autoCreateContainer) {

 			// If no existing containers are found we'll go through

 			// finding/creating/configuring/connecting

 			rsContainers = createAndConfigureHostContainers(serviceReference,

-					serviceExportedInterfaces, serviceExportedConfigs,

-					serviceIntents);

+					overridingProperties, serviceExportedInterfaces,

+					serviceExportedConfigs, serviceIntents);

 

 			// if SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET service property is

 			// specified, then

 			// connect the host container(s)

-			Object target = serviceReference

-					.getProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

+			Object target = overridingProperties

+					.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

 			if (target != null) {

 				for (Iterator i = rsContainers.iterator(); i.hasNext();) {

 					IContainer container = ((IRemoteServiceContainer) i.next())

 							.getContainer();

 					try {

-						connectHostContainer(serviceReference, container,

-								target);

+						connectHostContainer(serviceReference,

+								overridingProperties, container, target);

 					} catch (Exception e) {

 						logException("doConnectContainer failure containerID=" //$NON-NLS-1$

 								+ container.getID() + " target=" + target, e); //$NON-NLS-1$

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
index 732c445..fce1ddb 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
@@ -41,8 +41,12 @@
 	 * @return IRemoteServiceContainer to be used for importing the remote

 	 *         service. May be <code>null</code> if not container is available

 	 *         for use as a consumer for the given endpointDescription.

+	 * @throws SelectContainerException

+	 *             thrown if the host container selection or

+	 *             creation/configuration fails.

 	 */

 	public IRemoteServiceContainer selectConsumerContainer(

-			EndpointDescription endpointDescription);

+			EndpointDescription endpointDescription)

+			throws SelectContainerException;

 

 }

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
index 0e6d0d8..e2b9438 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
@@ -29,18 +29,19 @@
  * instance of {@link DiscoveredEndpointDescriptionFactory} will be used by the
  * {@link EndpointDescriptionLocator}. Note that this default instance is
  * registered with the lowest possible priority, so that if other
- * {@link IDiscoveredEndpointDescriptionFactory} instances are registered, they will be
- * preferred/used over the default. This means that those wishing to
+ * {@link IDiscoveredEndpointDescriptionFactory} instances are registered, they
+ * will be preferred/used over the default. This means that those wishing to
  * customize/control this process of converting {@link IServiceInfo}s to
  * {@link DiscoveredEndpointDescription} must
  * <ul>
- * <li>create their own implementation of {@link IDiscoveredEndpointDescriptionFactory}</li>
+ * <li>create their own implementation of
+ * {@link IDiscoveredEndpointDescriptionFactory}</li>
  * <li>register it with the OSGi service registry with a priority
  * ({org.osgi.framework.Constants#SERVICE_RANKING}) higher than
  * {@link Integer#MIN_VALUE}</li>
  * <ul>
- * Then at runtime, when needed by the {@link EndpointDescriptionLocator},
- * the new discovered endpoint description factory will be used.
+ * Then at runtime, when needed by the {@link EndpointDescriptionLocator}, the
+ * new discovered endpoint description factory will be used.
  * 
  * @see IServiceInfoFactory
  * 
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
index fb0760d..b12c9ff 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
@@ -16,8 +16,9 @@
  * Service for reading endpoint descriptions from xml-files in the Endpoint

  * Description Extender Format (EDEF) specified in section 122.8 of the <a

  * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGi Enterprise

- * Specification</a>. The InputStream provided must be of the EDEF format,

- * otherwise an IOException or EndpointDescriptionParseException will be thrown.

+ * Specification (chapter 122)</a>. The InputStream provided must be of the EDEF

+ * format, otherwise an IOException or EndpointDescriptionParseException will be

+ * thrown.

  * 

  */

 public interface IEndpointDescriptionReader {

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
index 40d7515..f7ecdf3 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
@@ -9,6 +9,8 @@
  ******************************************************************************/

 package org.eclipse.ecf.osgi.services.remoteserviceadmin;

 

+import java.util.Map;

+

 import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

 import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;

 import org.osgi.framework.ServiceReference;

@@ -43,6 +45,9 @@
 	 * @param serviceReference

 	 *            the service reference given by the

 	 *            {@link RemoteServiceAdmin#exportService(ServiceReference, java.util.Map)}

+	 * @param overridingProperties

+	 *            the map portion given by the

+	 *            {@link RemoteServiceAdmin#exportService(ServiceReference, java.util.Map)}

 	 * @param exportedInterfaces

 	 *            the exportedInterfaces (typically associated with

 	 *            {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES}

@@ -61,8 +66,14 @@
 	 *         should be used to export the given remote service (typically via

 	 *         {@link IRemoteServiceContainerAdapter#registerRemoteService(String[], Object, java.util.Dictionary)}

 	 *         ). Will not be <code>null</code>, but may be empty array.

+	 * @throws SelectContainerException

+	 *             thrown if the host container selection or

+	 *             creation/configuration fails.

+	 * @since 2.0

 	 */

 	IRemoteServiceContainer[] selectHostContainers(

-			ServiceReference serviceReference, String[] exportedInterfaces,

-			String[] exportedConfigs, String[] serviceIntents);

+			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties,

+			String[] exportedInterfaces, String[] exportedConfigs,

+			String[] serviceIntents) throws SelectContainerException;

 }

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
index 8eb0ff1..86a73b5 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
@@ -18,8 +18,10 @@
 

 /**

  * ECF Remote Service Admin RemoteConstants. These are constants for ECF's RSA

- * implementation-specific meta-data.

- * 

+ * implementation-specific meta-data. For OSGi Remote constant see

+ * {@link org.osgi.service.remoteserviceadmin.RemoteConstants} and the <a

+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote

+ * Service Admin specification (chap 122)</a>.

  */

 public class RemoteConstants {

 

@@ -116,8 +118,6 @@
 	 */

 	public static final String ENDPOINT_REMOTESERVICE_FILTER = "ecf.endpoint.rsfilter"; //$NON-NLS-1$

 

-	public static final String ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE = "org.eclipse.ecf.config"; //$NON-NLS-1$

-

 	/**

 	 * Container factory arguments for exported remote service hosts. If

 	 * specified as a service property upon remote service registration, this

@@ -162,4 +162,25 @@
 	 * the SERVICE_IMPORTED value appropriately.

 	 */

 	public static final String SERVICE_IMPORTED_VALUETYPE = "ecf.service.imported.valuetype"; //$NON-NLS-1$

+	/**

+	 * This property is set on the remote service proxy during

+	 * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+	 * , before local service proxy registration. It's String value is set to

+	 * the value returned from

+	 * {@link org.osgi.service.remoteserviceadmin.EndpointDescription#getId()}.

+	 * It allows those accessing the remote service proxy to get information

+	 * about the endpoint id.

+	 */

+	public static final String SERVICE_IMPORTED_ENDPOINT_ID = "ecf.service.imported.endpoint.id"; //$NON-NLS-1$

+

+	/**

+	 * This property is set on the remote service proxy during

+	 * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+	 * , before local service proxy registration. It's Long value is set to the

+	 * value returned from

+	 * {@link org.osgi.service.remoteserviceadmin.EndpointDescription#getServiceId()}

+	 * . It allows those accessing the remote service proxy to get information

+	 * about the endpoint remote service id.

+	 */

+	public static final String SERVICE_IMPORTED_ENDPOINT_SERVICE_ID = "ecf.service.imported.endpoint.service.id"; //$NON-NLS-1$

 }

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
index 951e18e..e8a68f4 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
@@ -13,7 +13,19 @@
 import java.util.Collection;

 

 import org.eclipse.ecf.core.identity.ID;

+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;

 

+/**

+ * Exception class for the case when no remote reference is found during

+ * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+ * . Instances of this class will be thrown when the call to

+ * {@link IRemoteServiceContainerAdapter#getRemoteServiceReferences(ID, ID[], String, String)}

+ * made in

+ * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+ * fail to find any available remote references (e.g. due to connection problem

+ * or remote reference lookup problem).

+ * 

+ */

 public class RemoteReferenceNotFoundException extends Exception {

 

 	private static final long serialVersionUID = -4174685192086828376L;

@@ -48,9 +60,9 @@
 	}

 

 	public String toString() {

-		return "RemoteReferenceNotFoundException[targetID=" + targetID

-				+ ", idFilter=" + Arrays.toString(idFilter) + ", interfaces="

-				+ interfaces + ", rsFilter=" + rsFilter + "]";

+		return "RemoteReferenceNotFoundException[targetID=" + targetID //$NON-NLS-1$

+				+ ", idFilter=" + Arrays.toString(idFilter) + ", interfaces=" //$NON-NLS-1$ //$NON-NLS-2$

+				+ interfaces + ", rsFilter=" + rsFilter + "]"; //$NON-NLS-1$ //$NON-NLS-2$

 	}

 

 }

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
index d1b3e36..4688995 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
@@ -10,6 +10,7 @@
 package org.eclipse.ecf.osgi.services.remoteserviceadmin;

 

 import java.util.ArrayList;

+import java.util.Arrays;

 import java.util.Collection;

 import java.util.Collections;

 import java.util.Date;

@@ -45,6 +46,7 @@
 import org.eclipse.ecf.remoteservice.events.IRemoteServiceUnregisteredEvent;

 import org.osgi.framework.Bundle;

 import org.osgi.framework.BundleContext;

+import org.osgi.framework.BundleException;

 import org.osgi.framework.InvalidSyntaxException;

 import org.osgi.framework.ServiceException;

 import org.osgi.framework.ServiceFactory;

@@ -59,7 +61,16 @@
 import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;

 import org.osgi.util.tracker.ServiceTracker;

 

-@SuppressWarnings("deprecation")

+/**

+ * ECF implementation of <a

+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote

+ * Service Admin service</a>. This service can be used by topology managers to

+ * to export and/or import remote services with any <a

+ * href="http://wiki.eclipse.org/ECF_Connection_Creation_and_Management">ECF

+ * container</a> that implements the <a

+ * href="http://wiki.eclipse.org/ECF/API_Docs#Remote_Services_API">ECF remote

+ * service API</a>.

+ */

 public class RemoteServiceAdmin implements

 		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin {

 

@@ -102,8 +113,8 @@
 	public RemoteServiceAdmin(Bundle clientBundle) {

 		this.clientBundle = clientBundle;

 		Assert.isNotNull(this.clientBundle);

-		trace("RemoteServiceAdmin<init>",

-				"clientBundle=" + clientBundle.getSymbolicName());

+		trace("RemoteServiceAdmin<init>", //$NON-NLS-1$

+				"clientBundle=" + clientBundle.getSymbolicName()); //$NON-NLS-1$

 		// Only setup defaults if it hasn't already been done by some other

 		// Remote Service Admin instance

 		Properties props = new Properties();

@@ -149,6 +160,19 @@
 		}

 	}

 

+	private boolean validExportedInterfaces(ServiceReference serviceReference,

+			String[] exportedInterfaces) {

+		if (exportedInterfaces == null || exportedInterfaces.length == 0)

+			return false;

+		List<String> objectClassList = Arrays

+				.asList((String[]) serviceReference

+						.getProperty(org.osgi.framework.Constants.OBJECTCLASS));

+		for (int i = 0; i < exportedInterfaces.length; i++)

+			if (!objectClassList.contains(exportedInterfaces[i]))

+				return false;

+		return true;

+	}

+

 	// RemoteServiceAdmin service interface impl methods

 	public Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> exportService(

 			ServiceReference serviceReference,

@@ -157,22 +181,20 @@
 		trace("exportService", "serviceReference=" + serviceReference //$NON-NLS-1$ //$NON-NLS-2$

 				+ ",properties=" + overridingProperties); //$NON-NLS-1$

 

-		overridingProperties = (overridingProperties == null) ? Collections.EMPTY_MAP

-				: overridingProperties;

+		overridingProperties = PropertiesUtil.mergeProperties(serviceReference,

+				overridingProperties == null ? Collections.EMPTY_MAP

+						: overridingProperties);

 

 		// First get exported interfaces

-		String[] exportedInterfaces = (String[]) overridingProperties

-				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES);

-		// As per 122.5.1 we only use the OBJECTCLASS value from the

-		// serviceReference, not from the overridingProperties map

-		if (exportedInterfaces == null)

-			exportedInterfaces = PropertiesUtil

-					.getExportedInterfaces(serviceReference);

-		// If exportedInterfaces is still null, we throw

+		String[] exportedInterfaces = PropertiesUtil.getExportedInterfaces(

+				serviceReference, overridingProperties);

 		if (exportedInterfaces == null)

 			throw new IllegalArgumentException(

 					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES

 							+ " not set"); //$NON-NLS-1$

+		// verifyExportedInterfaces

+		if (!validExportedInterfaces(serviceReference, exportedInterfaces))

+			return Collections.EMPTY_LIST;

 

 		// Get optional exported configs

 		String[] exportedConfigs = PropertiesUtil

@@ -190,22 +212,30 @@
 

 		// Get a host container selector, and use it to

 		IHostContainerSelector hostContainerSelector = getHostContainerSelector();

-		if (hostContainerSelector == null) {

-			logError("handleServiceRegistering", //$NON-NLS-1$

-					"No defaultHostContainerSelector available"); //$NON-NLS-1$

-			return Collections.EMPTY_LIST;

-		}

 		// select ECF remote service containers that match given exported

 		// interfaces, configs, and intents

-		IRemoteServiceContainer[] rsContainers = hostContainerSelector

-				.selectHostContainers(serviceReference, exportedInterfaces,

-						exportedConfigs, serviceIntents);

-		// If none found, log a warning and we're done

+		IRemoteServiceContainer[] rsContainers = null;

+		try {

+			rsContainers = hostContainerSelector.selectHostContainers(

+					serviceReference, overridingProperties, exportedInterfaces,

+					exportedConfigs, serviceIntents);

+		} catch (SelectContainerException e) {

+			ExportRegistration errorRegistration = createErrorExportRegistration(

+					serviceReference, overridingProperties,

+					"Error selecting or creating host container for serviceReference=" //$NON-NLS-1$

+							+ serviceReference + " properties=" //$NON-NLS-1$

+							+ overridingProperties, e);

+			Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> result = new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>();

+			result.add(errorRegistration);

+			publishExportEvent(errorRegistration);

+			return result;

+		}

+		// If none found, log warning and return

 		if (rsContainers == null || rsContainers.length == 0) {

-			logWarning(

-					"handleServiceRegistered", "No remote service containers found for serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$

-							+ serviceReference

-							+ ". Remote service NOT EXPORTED"); //$NON-NLS-1$

+			String errorMessage = "No containers found for serviceReference=" //$NON-NLS-1$ 

+					+ serviceReference

+					+ " properties=" + overridingProperties + ". Remote service NOT EXPORTED"; //$NON-NLS-1$//$NON-NLS-2$

+			logWarning("exportService", errorMessage); //$NON-NLS-1$

 			return Collections.EMPTY_LIST;

 		}

 		Collection<ExportRegistration> exportRegistrations = new ArrayList<ExportRegistration>();

@@ -223,23 +253,36 @@
 				if (exportEndpoint != null)