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)

 					exportRegistration = new ExportRegistration(exportEndpoint);

 				else {

+					Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(

+							serviceReference, overridingProperties,

+							exportedInterfaces, serviceIntents, rsContainers[i]);

 					// otherwise, actually export the service to create a new

-					// ExportEndpoint

-					// and use it to create a new ExportRegistration

-					exportRegistration = new ExportRegistration(

-							exportService(serviceReference,

-									overridingProperties, exportedInterfaces,

-									serviceIntents, rsContainers[i]));

-					// If no exception, we add it to our known set of exported

-					// registrations

-					if (exportRegistration.getException() == null)

-						addExportRegistration(exportRegistration);

+					// ExportEndpoint and use it to create a new

+					// ExportRegistration

+					EndpointDescription endpointDescription = new EndpointDescription(

+							serviceReference, endpointDescriptionProperties);

+					try {

+						// Check security access for export

+						checkEndpointPermission(endpointDescription,

+								EndpointPermission.EXPORT);

+						// Actually do the export and return export registration

+						exportRegistration = exportService(serviceReference,

+								overridingProperties, exportedInterfaces,

+								rsContainers[i], endpointDescriptionProperties);

+					} catch (Exception e) {

+						exportRegistration = new ExportRegistration(e,

+								endpointDescription);

+					}

 				}

+				// If no exception, we add it to our known set of exported

+				// registrations

+				if (exportRegistration.getException() == null)

+					addExportRegistration(exportRegistration);

 				// We add it to the results in either case

 				exportRegistrations.add(exportRegistration);

 			}

 		}

-		// publish all exportRegistrations

+		// publish all activeExportRegistrations

 		for (ExportRegistration exportReg : exportRegistrations)

 			publishExportEvent(exportReg);

 		// and return

@@ -247,6 +290,21 @@
 				exportRegistrations);

 	}

 

+	private ExportRegistration createErrorExportRegistration(

+			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties, String errorMessage,

+			SelectContainerException exception) {

+		ContainerTypeDescription ctd = exception.getContainerTypeDescription();

+		overridingProperties

+				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,

+						"noendpoint"); //$NON-NLS-1$

+		overridingProperties

+				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,

+						(ctd == null) ? "noconfig" : ctd.getName()); //$NON-NLS-1$

+		return new ExportRegistration(exception, new EndpointDescription(

+				serviceReference, overridingProperties));

+	}

+

 	public org.osgi.service.remoteserviceadmin.ImportRegistration importService(

 			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription) {

 

@@ -255,9 +313,6 @@
 		// permission

 		checkEndpointPermission(endpointDescription, EndpointPermission.IMPORT);

 

-		if (endpointDescription.getServiceId() == 0)

-			return handleNonOSGiService(endpointDescription);

-

 		EndpointDescription ed = null;

 		if (endpointDescription instanceof EndpointDescription)

 			ed = (EndpointDescription) endpointDescription;

@@ -274,8 +329,14 @@
 			return null;

 		}

 		// Select the rsContainer to handle the endpoint description

-		IRemoteServiceContainer rsContainer = consumerContainerSelector

-				.selectConsumerContainer(ed);

+		IRemoteServiceContainer rsContainer = null;

+		try {

+			rsContainer = consumerContainerSelector.selectConsumerContainer(ed);

+		} catch (SelectContainerException e) {

+			ImportRegistration errorRegistration = new ImportRegistration(ed, e);

+			publishImportEvent(errorRegistration);

+			return errorRegistration;

+		}

 		// If none found, log a warning and we're done

 		if (rsContainer == null) {

 			logWarning(

@@ -292,8 +353,7 @@
 			if (importEndpoint != null)

 				importRegistration = new ImportRegistration(importEndpoint);

 			else {

-				importEndpoint = importService(ed, rsContainer);

-				importRegistration = new ImportRegistration(importEndpoint);

+				importRegistration = importService(ed, rsContainer);

 				if (importRegistration.getException() == null)

 					addImportRegistration(importRegistration);

 			}

@@ -355,15 +415,18 @@
 		return clientBundle.getBundleContext();

 	}

 

-	private Bundle getClientBundle() {

-		return clientBundle;

+	private Bundle getRSABundle() {

+		BundleContext bundleContext = Activator.getContext();

+		if (bundleContext == null)

+			return null;

+		return bundleContext.getBundle();

 	}

 

 	private void addImportRegistration(ImportRegistration importRegistration) {

 		synchronized (importedRegistrations) {

 			importedRegistrations.add(importRegistration);

-			trace("addImportRegistration", "importRegistration="

-					+ importRegistration + " importedRegistrations="

+			trace("addImportRegistration", "importRegistration=" //$NON-NLS-1$ //$NON-NLS-2$

+					+ importRegistration + " importedRegistrations=" //$NON-NLS-1$

 					+ importedRegistrations);

 		}

 	}

@@ -371,8 +434,8 @@
 	private void addExportRegistration(ExportRegistration exportRegistration) {

 		synchronized (exportedRegistrations) {

 			exportedRegistrations.add(exportRegistration);

-			trace("addExportRegistration", "exportRegistration="

-					+ exportRegistration + " exportedRegistrations="

+			trace("addExportRegistration", "exportRegistration=" //$NON-NLS-1$ //$NON-NLS-2$

+					+ exportRegistration + " exportedRegistrations=" //$NON-NLS-1$

 					+ exportedRegistrations);

 		}

 	}

@@ -434,10 +497,7 @@
 		private EndpointDescription endpointDescription;

 

 		private IRemoteServiceRegistration rsRegistration;

-		private ExportReference exportReference;

-		private Set<ExportRegistration> exportRegistrations = new HashSet<ExportRegistration>();

-

-		private Throwable exception;

+		private Set<ExportRegistration> activeExportRegistrations = new HashSet<ExportRegistration>();

 

 		ExportEndpoint(ServiceReference serviceReference,

 				EndpointDescription endpointDescription,

@@ -446,24 +506,8 @@
 			this.serviceReference = serviceReference;

 			Assert.isNotNull(endpointDescription);

 			this.endpointDescription = endpointDescription;

-

 			Assert.isNotNull(reg);

 			this.rsRegistration = reg;

-			this.exportReference = new ExportReference(serviceReference,

-					endpointDescription);

-		}

-

-		ExportEndpoint(ServiceReference serviceReference,

-				EndpointDescription endpointDescription, Throwable t) {

-			Assert.isNotNull(serviceReference);

-			this.serviceReference = serviceReference;

-			Assert.isNotNull(endpointDescription);

-			this.endpointDescription = endpointDescription;

-			this.exception = t;

-		}

-

-		synchronized Throwable getException() {

-			return exception;

 		}

 

 		synchronized ID getContainerID() {

@@ -478,78 +522,73 @@
 			return endpointDescription;

 		}

 

-		synchronized ExportReference getExportReference() {

-			return exportReference;

-		}

-

 		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {

 			return rsRegistration;

 		}

 

-		synchronized boolean add(ExportRegistration exportRegistration) {

-			return this.exportRegistrations.add(exportRegistration);

+		synchronized boolean addExportRegistration(

+				ExportRegistration exportRegistration) {

+			return this.activeExportRegistrations.add(exportRegistration);

 		}

 

 		synchronized boolean close(ExportRegistration exportRegistration) {

-			boolean removed = this.exportRegistrations

+			boolean removed = this.activeExportRegistrations

 					.remove(exportRegistration);

-			if (removed && exportRegistrations.size() == 0) {

+			if (removed && activeExportRegistrations.size() == 0) {

 				if (rsRegistration != null) {

 					rsRegistration.unregister();

 					rsRegistration = null;

 				}

-				if (exportReference != null) {

-					exportReference.close();

-					exportReference = null;

-				}

+				serviceReference = null;

+				endpointDescription = null;

 			}

 			return removed;

 		}

-

-		public synchronized String toString() {

-			return "ExportEndpoint[rsRegistration=" + rsRegistration //$NON-NLS-1$

-					+ ", exportReference=" + exportReference + "]"; //$NON-NLS-1$ //$NON-NLS-2$

-		}

-

 	}

 

 	class ExportRegistration implements

 			org.osgi.service.remoteserviceadmin.ExportRegistration {

 

-		private ExportEndpoint exportEndpoint;

+		private ExportReference exportReference;

+

+		private boolean closed = false;

 

 		ExportRegistration(ExportEndpoint exportEndpoint) {

 			Assert.isNotNull(exportEndpoint);

-			this.exportEndpoint = exportEndpoint;

-			// Add ourselves to this exported endpoint

-			this.exportEndpoint.add(this);

+			exportEndpoint.addExportRegistration(this);

+			this.exportReference = new ExportReference(exportEndpoint);

 		}

 

-		synchronized ID getContainerID() {

-			return (exportEndpoint == null) ? null : exportEndpoint

-					.getContainerID();

+		ExportRegistration(Throwable exception,

+				EndpointDescription errorEndpointDescription) {

+			Assert.isNotNull(exception);

+			this.exportReference = new ExportReference(exception,

+					errorEndpointDescription);

+			this.closed = true;

 		}

 

-		synchronized ServiceReference getServiceReference() {

-			return (exportEndpoint == null) ? null : exportEndpoint

-					.getServiceReference();

+		ID getContainerID() {

+			return exportReference.getContainerID();

 		}

 

-		public synchronized org.osgi.service.remoteserviceadmin.ExportReference getExportReference() {

+		ServiceReference getServiceReference() {

+			return exportReference.getExportedService();

+		}

+

+		public org.osgi.service.remoteserviceadmin.ExportReference getExportReference() {

 			Throwable t = getException();

 			if (t != null)

 				throw new IllegalStateException(

 						"Cannot get export reference as export registration is invalid", //$NON-NLS-1$

 						t);

-			return (exportEndpoint == null) ? null : exportEndpoint

-					.getExportReference();

+			return exportReference;

 		}

 

-		synchronized boolean match(ServiceReference serviceReference) {

+		boolean match(ServiceReference serviceReference) {

 			return match(serviceReference, null);

 		}

 

-		synchronized boolean match(ServiceReference serviceReference,

+		boolean match(ServiceReference serviceReference,

 				ID containerID) {

 			ServiceReference ourServiceReference = getServiceReference();

 			if (ourServiceReference == null)

@@ -569,51 +608,45 @@
 

 		synchronized ExportEndpoint getExportEndpoint(

 				ServiceReference serviceReference, ID containerID) {

-			return match(serviceReference, containerID) ? exportEndpoint : null;

+			return match(serviceReference, containerID) ? exportReference

+					.getExportEndpoint() : null;

 		}

 

-		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {

-			return (exportEndpoint == null) ? null : exportEndpoint

-					.getRemoteServiceRegistration();

+		IRemoteServiceRegistration getRemoteServiceRegistration() {

+			return exportReference.getRemoteServiceRegistration();

 		}

 

-		synchronized EndpointDescription getEndpointDescription() {

-			return (exportEndpoint == null) ? null : exportEndpoint

-					.getEndpointDescription();

+		EndpointDescription getEndpointDescription() {

+			return exportReference.getEndpointDescription();

 		}

 

 		public void close() {

-			boolean closed = false;

-			Throwable t = null;

-			org.osgi.service.remoteserviceadmin.ExportReference exportReference = null;

+			boolean publish = false;

+			ID containerID = null;

+			Throwable exception = null;

 			EndpointDescription endpointDescription = null;

 			synchronized (this) {

-				if (exportEndpoint != null) {

-					t = getException();

-					exportReference = (t == null) ? getExportReference() : null;

+				// Only do this once

+				if (!closed) {

+					containerID = getContainerID();

+					exception = getException();

 					endpointDescription = getEndpointDescription();

-					closed = exportEndpoint.close(this);

-					exportEndpoint = null;

+					publish = exportReference.close(this);

+					closed = true;

 				}

 			}

-			if (closed) {

-				removeExportRegistration(this);

-				publishEvent(

-						new RemoteServiceAdminEvent(

-								endpointDescription.getContainerID(),

-								RemoteServiceAdminEvent.EXPORT_UNREGISTRATION,

-								getClientBundle(), exportReference, t),

+			removeExportRegistration(this);

+			Bundle rsaBundle = getRSABundle();

+			// Only publish events

+			if (publish && rsaBundle != null)

+				publishEvent(new RemoteServiceAdminEvent(containerID,

+						RemoteServiceAdminEvent.EXPORT_UNREGISTRATION,

+						rsaBundle, exportReference, exception),

 						endpointDescription);

-			}

 		}

 

-		public synchronized Throwable getException() {

-			return (exportEndpoint == null) ? null : exportEndpoint

-					.getException();

-		}

-

-		public synchronized String toString() {

-			return "ExportRegistration[exportEndpoint=" + exportEndpoint + "]"; //$NON-NLS-1$ //$NON-NLS-2$

+		public Throwable getException() {

+			return exportReference.getException();

 		}

 

 	}

@@ -621,31 +654,63 @@
 	class ExportReference implements

 			org.osgi.service.remoteserviceadmin.ExportReference {

 

-		private ServiceReference serviceReference;

-		private EndpointDescription endpointDescription;

+		private ExportEndpoint exportEndpoint;

 

-		ExportReference(ServiceReference serviceReference,

-				EndpointDescription endpointDescription) {

-			this.serviceReference = serviceReference;

-			this.endpointDescription = endpointDescription;

+		private Throwable exception;

+		private EndpointDescription errorEndpointDescription;

+

+		ExportReference(ExportEndpoint exportEndpoint) {

+			Assert.isNotNull(exportEndpoint);

+			this.exportEndpoint = exportEndpoint;

+		}

+

+		ExportReference(Throwable exception,

+				EndpointDescription errorEndpointDescription) {

+			Assert.isNotNull(exception);

+			this.exception = exception;

+			Assert.isNotNull(exception);

+			this.errorEndpointDescription = errorEndpointDescription;

+		}

+

+		synchronized Throwable getException() {

+			return exception;

+		}

+

+		synchronized boolean close(ExportRegistration exportRegistration) {

+			if (exportEndpoint == null)

+				return false;

+			boolean result = exportEndpoint.close(exportRegistration);

+			exportEndpoint = null;

+			return result;

+		}

+

+		synchronized ExportEndpoint getExportEndpoint() {

+			return exportEndpoint;

+		}

+

+		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {

+			return (exportEndpoint == null) ? null : exportEndpoint

+					.getRemoteServiceRegistration();

+		}

+

+		synchronized ID getContainerID() {

+			return (exportEndpoint == null) ? null : exportEndpoint

+					.getContainerID();

 		}

 

 		public synchronized ServiceReference getExportedService() {

-			return serviceReference;

+			return (exportEndpoint == null) ? null : exportEndpoint

+					.getServiceReference();

 		}

 

 		public synchronized org.osgi.service.remoteserviceadmin.EndpointDescription getExportedEndpoint() {

-			return endpointDescription;

+			return (exportEndpoint == null) ? null : exportEndpoint

+					.getEndpointDescription();

 		}

 

-		synchronized void close() {

-			this.serviceReference = null;

-			this.endpointDescription = null;

-		}

-

-		public synchronized String toString() {

-			return "ExportReference[serviceReference=" + serviceReference //$NON-NLS-1$

-					+ ", endpointDescription=" + endpointDescription + "]"; //$NON-NLS-1$ //$NON-NLS-2$

+		synchronized EndpointDescription getEndpointDescription() {

+			return (exportEndpoint == null) ? errorEndpointDescription

+					: exportEndpoint.getEndpointDescription();

 		}

 

 	}

@@ -657,10 +722,7 @@
 		private IRemoteServiceListener rsListener;

 		private IRemoteServiceReference rsReference;

 		private ServiceRegistration proxyRegistration;

-		private ImportReference importReference;

-		private Set<ImportRegistration> importRegistrations = new HashSet<ImportRegistration>();

-

-		private Throwable exception;

+		private Set<ImportRegistration> activeImportRegistrations = new HashSet<ImportRegistration>();

 

 		ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,

 				IRemoteServiceReference rsReference,

@@ -672,45 +734,35 @@
 			this.rsReference = rsReference;

 			this.rsListener = rsListener;

 			this.proxyRegistration = proxyRegistration;

-			this.importReference = new ImportReference(

-					proxyRegistration.getReference(), endpointDescription);

 			// Add the remoteservice listener to the container adapter, so that

-			// the

-			// rsListener

-			// notified asynchronously if our underlying remote service

-			// reference is

-			// unregistered locally

-			// due to disconnect or remote ejection

+			// the rsListener notified asynchronously if our underlying remote

+			// service

+			// reference is unregistered locally due to disconnect or remote

+			// ejection

 			this.rsContainerAdapter.addRemoteServiceListener(this.rsListener);

 		}

 

-		ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,

-				EndpointDescription endpointDescription, Throwable t) {

-			this.rsContainerAdapter = rsContainerAdapter;

-			this.endpointDescription = endpointDescription;

-			this.exception = t;

-		}

-

 		synchronized EndpointDescription getEndpointDescription() {

 			return endpointDescription;

 		}

 

-		synchronized Throwable getException() {

-			return exception;

+		synchronized ServiceRegistration getProxyRegistration() {

+			return proxyRegistration;

 		}

 

 		synchronized ID getContainerID() {

 			return (rsReference == null) ? null : rsReference.getContainerID();

 		}

 

-		synchronized boolean add(ImportRegistration importRegistration) {

-			return this.importRegistrations.add(importRegistration);

+		synchronized boolean addImportRegistration(

+				ImportRegistration importRegistration) {

+			return this.activeImportRegistrations.add(importRegistration);

 		}

 

 		synchronized boolean close(ImportRegistration importRegistration) {

-			boolean removed = this.importRegistrations

+			boolean removed = this.activeImportRegistrations

 					.remove(importRegistration);

-			if (removed && importRegistrations.size() == 0) {

+			if (removed && activeImportRegistrations.size() == 0) {

 				if (proxyRegistration != null) {

 					proxyRegistration.unregister();

 					proxyRegistration = null;

@@ -728,38 +780,21 @@
 					}

 					rsContainerAdapter = null;

 				}

-				if (importReference != null) {

-					importReference.close();

-					importReference = null;

-				}

+				endpointDescription = null;

 			}

 			return removed;

 		}

 

-		synchronized ImportReference getImportReference() {

-			return importReference;

-		}

-

 		synchronized boolean match(IRemoteServiceID remoteServiceID) {

 			if (remoteServiceID == null || rsReference == null)

 				return false;

 			return rsReference.getID().equals(remoteServiceID);

 		}

 

-		public synchronized String toString() {

-			return "ImportEndpoint[rsReference=" + rsReference //$NON-NLS-1$

-					+ ", proxyRegistration=" + proxyRegistration //$NON-NLS-1$

-					+ ", importReference=" + importReference + "]"; //$NON-NLS-1$ //$NON-NLS-2$

-		}

-

 		synchronized boolean match(EndpointDescription ed) {

-			if (importReference == null)

+			if (activeImportRegistrations.size() == 0)

 				return false;

-			EndpointDescription importedEndpoint = (EndpointDescription) importReference

-					.getImportedEndpoint();

-			if (importedEndpoint == null)

-				return false;

-			return importedEndpoint.isSameService(ed);

+			return this.endpointDescription.isSameService(ed);

 		}

 

 	}

@@ -767,80 +802,76 @@
 	class ImportRegistration implements

 			org.osgi.service.remoteserviceadmin.ImportRegistration {

 

-		private ImportEndpoint importEndpoint;

+		private ImportReference importReference;

+

+		private boolean closed = false;

 

 		ImportRegistration(ImportEndpoint importEndpoint) {

 			Assert.isNotNull(importEndpoint);

-			this.importEndpoint = importEndpoint;

-			this.importEndpoint.add(this);

+			importEndpoint.addImportRegistration(this);

+			this.importReference = new ImportReference(importEndpoint);

 		}

 

-		synchronized ID getContainerID() {

-			return importEndpoint == null ? null : importEndpoint

-					.getContainerID();

+		ImportRegistration(EndpointDescription errorEndpointDescription,

+				Throwable exception) {

+			this.importReference = new ImportReference(

+					errorEndpointDescription, exception);

 		}

 

-		synchronized EndpointDescription getEndpointDescription() {

-			return (importEndpoint == null) ? null : importEndpoint

-					.getEndpointDescription();

+		ID getContainerID() {

+			return importReference.getContainerID();

 		}

 

-		synchronized boolean match(IRemoteServiceID remoteServiceID) {

-			if (importEndpoint == null)

-				return false;

-			return importEndpoint.match(remoteServiceID);

+		EndpointDescription getEndpointDescription() {

+			return importReference.getEndpointDescription();

 		}

 

-		synchronized ImportEndpoint getImportEndpoint(EndpointDescription ed) {

-			if (importEndpoint == null)

-				return null;

-			if (importEndpoint.match(ed))

-				return importEndpoint;

-			return null;

+		boolean match(IRemoteServiceID remoteServiceID) {

+			return importReference.match(remoteServiceID);

 		}

 

-		public synchronized org.osgi.service.remoteserviceadmin.ImportReference getImportReference() {

+		ImportEndpoint getImportEndpoint(EndpointDescription ed) {

+			return importReference.match(ed);

+		}

+

+		public org.osgi.service.remoteserviceadmin.ImportReference getImportReference() {

 			Throwable t = getException();

 			if (t != null)

 				throw new IllegalStateException(

 						"Cannot get import reference as registration not properly initialized", //$NON-NLS-1$

 						t);

-			return importEndpoint == null ? null : importEndpoint

-					.getImportReference();

+			return importReference;

 		}

 

 		public void close() {

-			boolean closed = false;

-			org.osgi.service.remoteserviceadmin.ImportReference importReference = null;

+			boolean publish = false;

+			ID containerID = null;

+			Throwable exception = null;

 			EndpointDescription endpointDescription = null;

-			Throwable t = null;

 			synchronized (this) {

-				if (importEndpoint != null) {

-					t = getException();

-					importReference = (t == null) ? getImportReference() : null;

+				// only do this once

+				if (!closed) {

+					containerID = getContainerID();

+					exception = getException();

 					endpointDescription = getEndpointDescription();

-					closed = importEndpoint.close(this);

-					importEndpoint = null;

+					publish = importReference.close(this);

+					closed = true;

 				}

 			}

-			if (closed) {

-				removeImportRegistration(this);

+			removeImportRegistration(this);

+			Bundle rsaBundle = getRSABundle();

+			if (publish && rsaBundle != null)

 				publishEvent(

 						new RemoteServiceAdminEvent(

-								endpointDescription.getContainerID(),

+								containerID,

 								RemoteServiceAdminEvent.IMPORT_UNREGISTRATION,

-								getClientBundle(), importReference, t),

+								rsaBundle, importReference, exception),

 						endpointDescription);

-			}

+

 		}

 

-		public synchronized Throwable getException() {

-			return (importEndpoint == null) ? null : importEndpoint

-					.getException();

-		}

-

-		public synchronized String toString() {

-			return "ImportRegistration[importEndpoint=" + importEndpoint + "]"; //$NON-NLS-1$ //$NON-NLS-2$

+		public Throwable getException() {

+			return importReference.getException();

 		}

 

 	}

@@ -848,32 +879,65 @@
 	class ImportReference implements

 			org.osgi.service.remoteserviceadmin.ImportReference {

 

-		private ServiceReference importedServiceReference;

-		private EndpointDescription endpointDescription;

+		private ImportEndpoint importEndpoint;

 

-		ImportReference(ServiceReference serviceReference,

-				EndpointDescription endpointDescription) {

-			this.importedServiceReference = serviceReference;

-			this.endpointDescription = endpointDescription;

+		private Throwable exception;

+		private EndpointDescription errorEndpointDescription;

+

+		ImportReference(ImportEndpoint importEndpoint) {

+			Assert.isNotNull(importEndpoint);

+			this.importEndpoint = importEndpoint;

+		}

+

+		ImportReference(EndpointDescription endpointDescription,

+				Throwable exception) {

+			Assert.isNotNull(exception);

+			this.exception = exception;

+			Assert.isNotNull(endpointDescription);

+			this.errorEndpointDescription = endpointDescription;

+		}

+

+		synchronized Throwable getException() {

+			return exception;

+		}

+

+		synchronized boolean match(IRemoteServiceID remoteServiceID) {

+			return (importEndpoint == null) ? null : importEndpoint

+					.match(remoteServiceID);

+		}

+

+		synchronized ImportEndpoint match(EndpointDescription ed) {

+			if (importEndpoint != null && importEndpoint.match(ed))

+				return importEndpoint;

+			return null;

+		}

+

+		synchronized EndpointDescription getEndpointDescription() {

+			return (importEndpoint == null) ? errorEndpointDescription

+					: importEndpoint.getEndpointDescription();

+		}

+

+		synchronized ID getContainerID() {

+			return (importEndpoint == null) ? null : importEndpoint

+					.getContainerID();

 		}

 

 		public synchronized ServiceReference getImportedService() {

-			return importedServiceReference;

+			return (importEndpoint == null) ? null : importEndpoint

+					.getProxyRegistration().getReference();

 		}

 

 		public synchronized org.osgi.service.remoteserviceadmin.EndpointDescription getImportedEndpoint() {

-			return endpointDescription;

+			return (importEndpoint == null) ? null : importEndpoint

+					.getEndpointDescription();

 		}

 

-		synchronized void close() {

-			this.importedServiceReference = null;

-			this.endpointDescription = null;

-		}

-

-		public synchronized String toString() {

-			return "ImportReference[importedServiceReference=" //$NON-NLS-1$

-					+ importedServiceReference + ", endpointDescription=" //$NON-NLS-1$

-					+ endpointDescription + "]"; //$NON-NLS-1$

+		synchronized boolean close(ImportRegistration importRegistration) {

+			if (importEndpoint == null)

+				return false;

+			boolean result = importEndpoint.close(importRegistration);

+			importEndpoint = null;

+			return result;

 		}

 

 	}

@@ -898,53 +962,69 @@
 			EndpointDescription endpointDescription) {

 		EventAdmin eventAdmin = getEventAdmin();

 		if (eventAdmin == null) {

-			logWarning("postEvent", "No event admin available to post event=" //$NON-NLS-1$ //$NON-NLS-2$

-					+ event);

+			//logWarning("RemoteServiceAdmin.postEvent", "No event admin service available to post event=" //$NON-NLS-1$ //$NON-NLS-2$

+			//		+ event);

 			return;

 		}

 		int eventType = event.getType();

 		String eventTypeName = null;

+		String registrationTypeName = null;

 		switch (eventType) {

 		case (RemoteServiceAdminEvent.EXPORT_REGISTRATION):

 			eventTypeName = "EXPORT_REGISTRATION"; //$NON-NLS-1$

+			registrationTypeName = "export.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.EXPORT_ERROR):

 			eventTypeName = "EXPORT_ERROR"; //$NON-NLS-1$

+			registrationTypeName = "export.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.EXPORT_UNREGISTRATION):

 			eventTypeName = "EXPORT_UNREGISTRATION"; //$NON-NLS-1$

+			registrationTypeName = "export.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.EXPORT_WARNING):

 			eventTypeName = "EXPORT_WARNING"; //$NON-NLS-1$

+			registrationTypeName = "export.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.IMPORT_REGISTRATION):

 			eventTypeName = "IMPORT_REGISTRATION"; //$NON-NLS-1$

+			registrationTypeName = "import.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.IMPORT_ERROR):

 			eventTypeName = "IMPORT_ERROR"; //$NON-NLS-1$

+			registrationTypeName = "import.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.IMPORT_UNREGISTRATION):

 			eventTypeName = "IMPORT_UNREGISTRATION"; //$NON-NLS-1$

+			registrationTypeName = "import.registration";//$NON-NLS-1$

 			break;

 		case (RemoteServiceAdminEvent.IMPORT_WARNING):

 			eventTypeName = "IMPORT_WARNING"; //$NON-NLS-1$

+			registrationTypeName = "import.registration";//$NON-NLS-1$

 			break;

 		}

-		if (eventTypeName == null)

+		if (eventTypeName == null) {

 			logError("postEvent", "Event type=" + eventType //$NON-NLS-1$ //$NON-NLS-2$

 					+ " not understood for event=" + event + ".  Not posting"); //$NON-NLS-1$ //$NON-NLS-2$

+			return;

+		}

 		String topic = "org/osgi/service/remoteserviceadmin/" + eventTypeName; //$NON-NLS-1$

-		Bundle rsaBundle = getClientBundle();

+		Bundle rsaBundle = getRSABundle();

+		if (rsaBundle == null) {

+			logError(

+					"postEvent", "RSA Bundle is null.  Not posting remote service admin event=" + event); //$NON-NLS-1$ //$NON-NLS-2$

+			return;

+		}

 		Dictionary eventProperties = new Properties();

-		eventProperties.put("clientBundle", rsaBundle); //$NON-NLS-1$

-		eventProperties.put("clientBundle.id", //$NON-NLS-1$

+		eventProperties.put("bundle", rsaBundle); //$NON-NLS-1$

+		eventProperties.put("bundle.id", //$NON-NLS-1$

 				new Long(rsaBundle.getBundleId()));

-		eventProperties.put("clientBundle.symbolicname", //$NON-NLS-1$

+		eventProperties.put("bundle.symbolicname", //$NON-NLS-1$

 				rsaBundle.getSymbolicName());

-		eventProperties.put("clientBundle.version", rsaBundle.getVersion()); //$NON-NLS-1$

+		eventProperties.put("bundle.version", rsaBundle.getVersion()); //$NON-NLS-1$

 		String[] signers = getSignersForBundle(clientBundle);

 		if (signers != null && signers.length > 0)

-			eventProperties.put("clientBundle.signer", signers); //$NON-NLS-1$

+			eventProperties.put("bundle.signer", signers); //$NON-NLS-1$

 		Throwable t = event.getException();

 		if (t != null)

 			eventProperties.put("cause", t); //$NON-NLS-1$

@@ -976,6 +1056,9 @@
 									.size()]));

 		eventProperties.put("timestamp", new Long(new Date().getTime())); //$NON-NLS-1$

 		eventProperties.put("event", event); //$NON-NLS-1$

+		if (registrationTypeName != null) {

+			eventProperties.put(registrationTypeName, endpointDescription);

+		}

 		postRemoteServiceAdminEvent(topic, eventProperties);

 

 	}

@@ -995,8 +1078,8 @@
 		RemoteServiceAdminEvent rsaEvent = new RemoteServiceAdminEvent(

 				exportRegistration.getContainerID(),

 				(exception == null) ? RemoteServiceAdminEvent.EXPORT_REGISTRATION

-						: RemoteServiceAdminEvent.EXPORT_ERROR,

-				getClientBundle(), exportReference, exception);

+						: RemoteServiceAdminEvent.EXPORT_ERROR, getRSABundle(),

+				exportReference, exception);

 		publishEvent(rsaEvent, exportRegistration.getEndpointDescription());

 	}

 

@@ -1007,8 +1090,8 @@
 		RemoteServiceAdminEvent rsaEvent = new RemoteServiceAdminEvent(

 				importRegistration.getContainerID(),

 				(exception == null) ? RemoteServiceAdminEvent.IMPORT_REGISTRATION

-						: RemoteServiceAdminEvent.IMPORT_ERROR,

-				getClientBundle(), importReference, exception);

+						: RemoteServiceAdminEvent.IMPORT_ERROR, getRSABundle(),

+				importReference, exception);

 		publishEvent(rsaEvent, importRegistration.getEndpointDescription());

 	}

 

@@ -1027,7 +1110,7 @@
 				remoteServiceAdminListenerTracker = new ServiceTracker(

 						getClientBundleContext(),

 						RemoteServiceAdminListener.class.getName(), null);

-				remoteServiceAdminListenerTracker.open(true);

+				remoteServiceAdminListenerTracker.open();

 			}

 		}

 		ServiceReference[] unfilteredRefs = remoteServiceAdminListenerTracker

@@ -1064,7 +1147,7 @@
 		synchronized (eventAdminTrackerLock) {

 			eventAdminTracker = new ServiceTracker(getClientBundleContext(),

 					EventAdmin.class.getName(), null);

-			eventAdminTracker.open(true);

+			eventAdminTracker.open();

 		}

 		return (EventAdmin) eventAdminTracker.getService();

 	}

@@ -1251,7 +1334,8 @@
 			endpointDescriptionProperties

 					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,

 							remoteConfigsSupported);

-		// SERVICE_IMPORTED_CONFIGS...set to same value as remote configs

+		// SERVICE_IMPORTED_CONFIGS...set to constant value for all ECF

+		// providers

 		// supported (which is computed

 		// for the exporting ECF container

 		endpointDescriptionProperties

@@ -1259,7 +1343,7 @@
 						remoteConfigsSupported);

 

 		// SERVICE_INTENTS

-		String[] intents = (String[]) PropertiesUtil

+		Object intents = PropertiesUtil

 				.getPropertyValue(

 						null,

 						overridingProperties,

@@ -1313,8 +1397,9 @@
 			endpointDescriptionProperties.put(

 					RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER, rsFilter);

 

-		return endpointDescriptionProperties;

-

+		// Finally, copy all non-reserved properties

+		return PropertiesUtil.copyNonReservedProperties(overridingProperties,

+				endpointDescriptionProperties);

 	}

 

 	private Map<String, Object> copyNonReservedProperties(

@@ -1392,21 +1477,16 @@
 		}

 	}

 

-	private org.osgi.service.remoteserviceadmin.ImportRegistration handleNonOSGiService(

-			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription) {

-		// With non-OSGi service id (service id=0), we log a warning and return

-		// null;

-		logWarning("handleNonOSGiService", //$NON-NLS-1$

-				"OSGi remote service id is 0 for endpointDescription=" //$NON-NLS-1$

-						+ endpointDescription);

-		return null;

-	}

-

 	private ImportEndpoint createAndRegisterProxy(

 			EndpointDescription endpointDescription,

 			IRemoteServiceContainer rsContainer,

 			IRemoteServiceReference selectedRsReference) throws Exception {

 

+		BundleContext proxyServiceFactoryContext = getProxyServiceFactoryContext(endpointDescription);

+		if (proxyServiceFactoryContext == null)

+			throw new NullPointerException(

+					"getProxyServiceFactoryContext returned null.  Cannot register proxy service factory"); //$NON-NLS-1$

+

 		IRemoteServiceContainerAdapter containerAdapter = rsContainer

 				.getContainerAdapter();

 		ID rsContainerID = rsContainer.getContainer().getID();

@@ -1422,12 +1502,14 @@
 		Map proxyProperties = createProxyProperties(endpointDescription,

 				rsContainer, selectedRsReference, rs);

 

-		List<String> interfaces = endpointDescription.getInterfaces();

+		// sync sref props with endpoint props

+		endpointDescription.setPropertiesOverrides(proxyProperties);

 

-		ServiceRegistration proxyRegistration = getClientBundleContext()

-				.registerService(

-						(String[]) interfaces.toArray(new String[interfaces

-								.size()]),

+		List<String> serviceTypes = endpointDescription.getInterfaces();

+

+		ServiceRegistration proxyRegistration = proxyServiceFactoryContext

+				.registerService((String[]) serviceTypes

+						.toArray(new String[serviceTypes.size()]),

 						createProxyServiceFactory(endpointDescription, rs),

 						(Dictionary) PropertiesUtil

 								.createDictionaryFromMap(proxyProperties));

@@ -1437,6 +1519,49 @@
 				endpointDescription);

 	}

 

+	private BundleContext getProxyServiceFactoryContext(

+			EndpointDescription endpointDescription) throws Exception {

+		Activator a = Activator.getDefault();

+		if (a == null)

+			throw new NullPointerException(

+					"ECF RemoteServiceAdmin Activator cannot be null."); //$NON-NLS-1$

+		if (a.isOldEquinox()) {

+			PackageAdmin packageAdmin = getPackageAdmin();

+			if (packageAdmin == null)

+				throw new NullPointerException(

+						"PackageAdmin cannot be accessed by ECF RemoteServiceAdmin"); //$NON-NLS-1$

+			// In this case, we get the Bundle that exposes the first service

+			// interface class

+			BundleContext rsaContext = Activator.getContext();

+			if (rsaContext == null)

+				throw new NullPointerException(

+						"RSA BundleContext cannot be null"); //$NON-NLS-1$

+			List<String> interfaces = endpointDescription.getInterfaces();

+			Collection<Class> serviceInterfaceClasses = loadServiceInterfacesViaBundle(

+					rsaContext.getBundle(),

+					interfaces.toArray(new String[interfaces.size()]));

+			if (serviceInterfaceClasses.size() == 0)

+				throw new NullPointerException(

+						"No interface classes loadable for endpointDescription=" //$NON-NLS-1$

+								+ endpointDescription);

+			// Get the bundle responsible for the first service interface class

+			Class serviceInterfaceClass = serviceInterfaceClasses.iterator()

+					.next();

+			Bundle bundle = packageAdmin.getBundle(serviceInterfaceClass);

+			if (bundle == null)

+				throw new BundleException("Bundle for service interface class=" //$NON-NLS-1$

+						+ serviceInterfaceClass.getName() + " cannot be found"); //$NON-NLS-1$

+			int bundleState = bundle.getState();

+			BundleContext bundleContext = bundle.getBundleContext();

+			if (bundleContext == null)

+				throw new BundleException("Bundle=" + bundle.getSymbolicName() //$NON-NLS-1$

+						+ " in wrong state (" + bundleState //$NON-NLS-1$

+						+ ") for using BundleContext proxy service factory"); //$NON-NLS-1$

+			return bundleContext;

+		}

+		return a.getProxyServiceFactoryBundleContext();

+	}

+

 	private ServiceFactory createProxyServiceFactory(

 			EndpointDescription endpointDescription,

 			IRemoteService remoteService) {

@@ -1486,8 +1611,6 @@
 		public void ungetService(Bundle bundle,

 				ServiceRegistration registration, Object service) {

 			ungetProxyClassLoader(bundle);

-			this.remoteService = null;

-			this.interfaceVersions = null;

 		}

 	}

 

@@ -1513,8 +1636,9 @@
 							+ " via clientBundle=" + bundleSymbolicName); //$NON-NLS-1$

 

 		// Now verify that the classes are of valid versions

-		verifyServiceInterfaceVersionsForProxy(requestingBundle,

-				serviceInterfaceClasses, interfaceVersions);

+		if (!verifyServiceInterfaceVersionsForProxy(requestingBundle,

+				serviceInterfaceClasses, interfaceVersions))

+			return null;

 

 		// Now create/get class loader for proxy. This will typically

 		// be an instance of ProxyClassLoader

@@ -1634,10 +1758,10 @@
 		return className.substring(0, lastDotIndex);

 	}

 

-	private void comparePackageVersions(String packageName,

+	private boolean comparePackageVersions(String packageName,

 			Version remoteVersion, Version localVersion)

 			throws RuntimeException {

-		

+

 		if (remoteVersion == null)

 			throw new NullPointerException("Remote package=" + packageName //$NON-NLS-1$

 					+ " has no Version"); //$NON-NLS-1$

@@ -1654,17 +1778,13 @@
 		// be exactly the same, or we thrown a runtime exception

 		int compareResult = localVersion.compareTo(remoteVersion);

 		// Now check compare result, and throw exception to fail compare

-		if (compareResult != 0)

-			throw new RuntimeException(

-					"Package version compare failed with compareResult=" //$NON-NLS-1$

-							+ compareResult + " for package=" + packageName //$NON-NLS-1$

-							+ " localVersion=" + localVersion //$NON-NLS-1$

-							+ " remoteVersion=" + remoteVersion); //$NON-NLS-1$

+		return (compareResult != 0);

 	}

-	

-	private void verifyServiceInterfaceVersionsForProxy(Bundle bundle,

+

+	private boolean verifyServiceInterfaceVersionsForProxy(Bundle bundle,

 			Collection<Class> classes, Map<String, Version> interfaceVersions) {

 		// For all service interface classes

+		boolean result = true;

 		for (Class clazz : classes) {

 			String className = clazz.getName();

 			String packageName = getPackageName(className);

@@ -1674,9 +1794,18 @@
 				throw new NullPointerException(

 						"No exported package found for class=" + className); //$NON-NLS-1$

 			// Now do compare via package version comparator service

-			comparePackageVersions(packageName,

-					interfaceVersions.get(className), exportedPackage.getVersion());

+			Version remoteVersion = interfaceVersions.get(className);

+			Version localVersion = exportedPackage.getVersion();

+			if (comparePackageVersions(packageName, remoteVersion, localVersion)) {

+				logError("verifyServiceInterfaceVersionsForProxy", //$NON-NLS-1$

+						"Failed version check for proxy creation.  clientBundle=" //$NON-NLS-1$

+								+ clientBundle + " interfaceType=" + className //$NON-NLS-1$

+								+ " remoteVersion=" + remoteVersion //$NON-NLS-1$

+								+ " localVersion=" + localVersion); //$NON-NLS-1$

+				result = false;

+			}

 		}

+		return result;

 	}

 

 	private IRemoteServiceReference selectRemoteServiceReference(

@@ -1742,17 +1871,26 @@
 		resultProperties

 				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,

 						importedConfigs);

+

+		// Set endpoint.id and endpoint.service.id

+		resultProperties

+				.put(org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_ENDPOINT_ID,

+						endpointDescription

+								.getProperties()

+								.get(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID));

+		resultProperties

+				.put(org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_ENDPOINT_SERVICE_ID,

+						endpointDescription

+								.getProperties()

+								.get(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID));

+

 		return resultProperties;

 	}

 

-	private ExportEndpoint exportService(ServiceReference serviceReference,

+	private ExportRegistration exportService(ServiceReference serviceReference,

 			Map<String, Object> overridingProperties,

-			String[] exportedInterfaces, String[] serviceIntents,

-			IRemoteServiceContainer rsContainer) {

-

-		Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(

-				serviceReference, overridingProperties, exportedInterfaces,

-				serviceIntents, rsContainer);

+			String[] exportedInterfaces, IRemoteServiceContainer rsContainer,

+			Map<String, Object> endpointDescriptionProperties) throws Exception {

 

 		// Create remote service properties

 		Map remoteServiceProperties = copyNonReservedProperties(

@@ -1765,46 +1903,29 @@
 		// Register remote service via ECF container adapter to create

 		// remote service registration

 		IRemoteServiceRegistration remoteRegistration = null;

-		Throwable exception = null;

-		try {

-			// Check security access for export

-			checkEndpointPermission(new EndpointDescription(serviceReference,

-					endpointDescriptionProperties), EndpointPermission.EXPORT);

-

-			if (containerAdapter instanceof IOSGiRemoteServiceContainerAdapter) {

-				IOSGiRemoteServiceContainerAdapter osgiContainerAdapter = (IOSGiRemoteServiceContainerAdapter) containerAdapter;

-				remoteRegistration = osgiContainerAdapter

-						.registerRemoteService(

-								exportedInterfaces,

-								serviceReference,

-								PropertiesUtil

-										.createDictionaryFromMap(remoteServiceProperties));

-			} else

-				remoteRegistration = containerAdapter

-						.registerRemoteService(

-								exportedInterfaces,

-								getClientBundleContext().getService(

-										serviceReference),

-								PropertiesUtil

-										.createDictionaryFromMap(remoteServiceProperties));

-			endpointDescriptionProperties

-					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,

-							remoteRegistration

-									.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));

-		} catch (Exception e) {

-			exception = e;

-			if (remoteRegistration != null)

-				remoteRegistration.unregister();

-		}

+		if (containerAdapter instanceof IOSGiRemoteServiceContainerAdapter) {

+			IOSGiRemoteServiceContainerAdapter osgiContainerAdapter = (IOSGiRemoteServiceContainerAdapter) containerAdapter;

+			remoteRegistration = osgiContainerAdapter.registerRemoteService(

+					exportedInterfaces, serviceReference, PropertiesUtil

+							.createDictionaryFromMap(remoteServiceProperties));

+		} else

+			remoteRegistration = containerAdapter.registerRemoteService(

+					exportedInterfaces,

+					getClientBundleContext().getService(serviceReference),

+					PropertiesUtil

+							.createDictionaryFromMap(remoteServiceProperties));

+		endpointDescriptionProperties

+				.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,

+						remoteRegistration

+								.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));

 		EndpointDescription endpointDescription = new EndpointDescription(

 				serviceReference, endpointDescriptionProperties);

 		// Create ExportEndpoint/ExportRegistration

-		return (exception == null) ? new ExportEndpoint(serviceReference,

-				endpointDescription, remoteRegistration) : new ExportEndpoint(

-				serviceReference, endpointDescription, exception);

+		return new ExportRegistration(new ExportEndpoint(serviceReference,

+				endpointDescription, remoteRegistration));

 	}

 

-	private ImportEndpoint importService(

+	private ImportRegistration importService(

 			EndpointDescription endpointDescription,

 			IRemoteServiceContainer rsContainer) {

 		trace("doImportService", "endpointDescription=" + endpointDescription //$NON-NLS-1$ //$NON-NLS-2$

@@ -1862,16 +1983,16 @@
 				throw new RemoteReferenceNotFoundException(targetID, idFilter,

 						interfaces, rsFilter);

 

-			return createAndRegisterProxy(endpointDescription, rsContainer,

-					selectedRsReference);

+			return new ImportRegistration(createAndRegisterProxy(

+					endpointDescription, rsContainer, selectedRsReference));

 		} catch (Exception e) {

 			logError(

-					"importService", "selectRemoteServiceReference returned null for rsRefs=" //$NON-NLS-1$

+					"importService", "selectRemoteServiceReference returned null for rsRefs=" //$NON-NLS-1$ //$NON-NLS-2$

 							+ rsRefs + ",targetID=" + targetID //$NON-NLS-1$

 							+ ",idFilter=" + idFilter + ",interfaces=" //$NON-NLS-1$ //$NON-NLS-2$

 							+ interfaces + ",rsFilter=" + rsFilter //$NON-NLS-1$

-							+ ",rsContainerID=" + rsContainerID, e);

-			return new ImportEndpoint(containerAdapter, endpointDescription, e);

+							+ ",rsContainerID=" + rsContainerID, e); //$NON-NLS-1$

+			return new ImportRegistration(endpointDescription, e);

 		}

 	}

 

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
index 5e3d63c..6466654 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
@@ -4,7 +4,16 @@
 import org.osgi.framework.Bundle;

 import org.osgi.service.remoteserviceadmin.ExportReference;

 import org.osgi.service.remoteserviceadmin.ImportReference;

+import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;

 

+/**

+ * ECF implementationm of

+ * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent}.

+ * Instances of this class are delivered to {@link RemoteServiceAdminListener}s

+ * via the ECF implemenation of {@link RemoteServiceAdmin} as per the OSGi 4.2

+ * Remote Service Admin specification (chap 122 of OSGi 4.2 specification).

+ * 

+ */

 public class RemoteServiceAdminEvent extends

 		org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent {

 

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java
new file mode 100644
index 0000000..6c175ce
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java
@@ -0,0 +1,29 @@
+/*******************************************************************************

+ * 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.osgi.services.remoteserviceadmin;

+

+import org.eclipse.ecf.core.ContainerTypeDescription;

+

+public class SelectContainerException extends Exception {

+

+	private static final long serialVersionUID = -5507248105370677422L;

+

+	private ContainerTypeDescription containerTypeDescription;

+

+	public SelectContainerException(String message, Throwable cause,

+			ContainerTypeDescription containerTypeDescription) {

+		super(message, cause);

+		this.containerTypeDescription = containerTypeDescription;

+	}

+

+	public ContainerTypeDescription getContainerTypeDescription() {

+		return containerTypeDescription;

+	}

+}

diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
index be69449..0b14c51 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
@@ -26,6 +26,10 @@
 import org.eclipse.ecf.discovery.identity.ServiceIDFactory;

 import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;

 

+/**

+ * Default implementation of {@link IServiceInfoFactory}.

+ * 

+ */

 public class ServiceInfoFactory extends AbstractMetadataFactory implements

 		IServiceInfoFactory {

 

@@ -60,8 +64,7 @@
 		}

 	}

 

-	public IServiceInfo createServiceInfo(

-			IDiscoveryAdvertiser advertiser,

+	public IServiceInfo createServiceInfo(IDiscoveryAdvertiser advertiser,

 			EndpointDescription endpointDescription) {

 		try {

 			Namespace advertiserNamespace = advertiser.getServicesNamespace();

@@ -196,12 +199,11 @@
 				IServiceTypeID.DEFAULT_NA);

 		return ServiceIDFactory.getDefault().createServiceTypeID(

 				advertiser.getServicesNamespace(),

-				new String[] { RemoteConstants.DISCOVERY_SERVICE_TYPE }, scopes,

-				protocols, namingAuthority);

+				new String[] { RemoteConstants.DISCOVERY_SERVICE_TYPE },

+				scopes, protocols, namingAuthority);

 	}

 

-	public IServiceInfo removeServiceInfo(

-			IDiscoveryAdvertiser advertiser,

+	public IServiceInfo removeServiceInfo(IDiscoveryAdvertiser advertiser,

 			EndpointDescription endpointDescription) {

 		Namespace advertiserNamespace = advertiser.getServicesNamespace();

 		ServiceInfoKey key = new ServiceInfoKey(endpointDescription,

diff --git a/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF b/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF
index 4992021..a3ad329 100644
--- a/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF
+++ b/protocols/bundles/org.jivesoftware.smack/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.jivesoftware.smack
-Bundle-Version: 3.1.0
+Bundle-Version: 3.1.100.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs
index 70af5b8..9e50486 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/.settings/org.eclipse.jdt.core.prefs
@@ -1,330 +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.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.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.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.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-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.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-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.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:40:02 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=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=disabled

+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=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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/providers/bundles/org.eclipse.ecf.provider.dnssd/about.html
similarity index 100%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
copy to providers/bundles/org.eclipse.ecf.provider.dnssd/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties b/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
index 2427e71..08578c8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
@@ -3,6 +3,8 @@
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               plugin.properties
+               plugin.properties,\
+               about.html
 additional.bundles = org.eclipse.equinox.concurrent
-src.includes = plugin.properties
+src.includes = plugin.properties,\
+               about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
index 95b0aee..cf5e8a3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient;singleton:=true
-Bundle-Version: 4.0.0.qualifier
+Bundle-Version: 4.0.1.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator
 Require-Bundle: org.eclipse.equinox.common,
@@ -25,6 +25,5 @@
 Export-Package: org.eclipse.ecf.internal.provider.filetransfer.httpclient;x-internal:=true,
  org.eclipse.ecf.provider.filetransfer.httpclient
 Bundle-Vendor: %plugin.provider
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-ActivationPolicy: lazy
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
index b34d342..a725abc 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 IBM, Composent Inc. and others.
+ * Copyright (c) 2007, 2011 IBM, 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
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    Chris Aniszczyk - initial API and implementation
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session 
  *****************************************************************************/
 package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
 
@@ -37,6 +38,8 @@
 
 	private ISSLSocketFactoryModifier sslSocketFactoryModifier;
 
+	private ConnectionManagerHelper cmHelper;
+
 	/**
 	 * The constructor
 	 */
@@ -64,6 +67,13 @@
 
 	}
 
+	public ConnectionManagerHelper getConnectionManagerHelper() {
+		if (cmHelper == null) {
+			cmHelper = new ConnectionManagerHelper();
+		}
+		return cmHelper;
+	}
+
 	public ISSLSocketFactoryModifier getSSLSocketFactoryModifier() {
 		return sslSocketFactoryModifier;
 	}
@@ -81,6 +91,9 @@
 		if (logServiceTracker != null) {
 			logServiceTracker.close();
 		}
+		if (cmHelper != null) {
+			cmHelper.shutdown();
+		}
 		this.context = null;
 		plugin = null;
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java
new file mode 100644
index 0000000..4a08b8c
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java
@@ -0,0 +1,171 @@
+/*******************************************************************************

+* Copyright (c) 2011 IBM, 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:

+*   IBM Corporation - initial API and implementation

+******************************************************************************/

+

+package org.eclipse.ecf.internal.provider.filetransfer.httpclient;

+

+import java.util.Map;

+import org.apache.commons.httpclient.HttpClient;

+import org.apache.commons.httpclient.HttpConnectionManager;

+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;

+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;

+import org.eclipse.ecf.core.util.Trace;

+import org.eclipse.ecf.filetransfer.IRetrieveFileTransferOptions;

+import org.eclipse.ecf.provider.filetransfer.httpclient.HttpClientOptions;

+

+public class ConnectionManagerHelper {

+

+	public static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_CONNECTION_TIMEOUT;

+	public static final int DEFAULT_READ_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_READ_TIMEOUT;

+

+	private MultiThreadedHttpConnectionManager connectionManager;

+

+	public ConnectionManagerHelper() {

+	}

+

+	private static int getIntegerProperty(String prop, int intDefault) {

+		int retVal = intDefault;

+		String systemProp = System.getProperty(prop);

+		if (systemProp != null) {

+			try {

+				retVal = Integer.parseInt(systemProp);

+			} catch (NumberFormatException e) {

+				Trace.trace(Activator.PLUGIN_ID, "Bad value for property '" + prop + "' : " + e + ". Using default value " + intDefault + "."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$

+			}

+		}

+		return retVal;

+	}

+

+	private static long getLongProperty(String prop, long longDefault) {

+		long retVal = longDefault;

+		String systemProp = System.getProperty(prop);

+		if (systemProp != null) {

+			try {

+				retVal = Long.parseLong(systemProp);

+			} catch (NumberFormatException e) {

+				Trace.trace(Activator.PLUGIN_ID, "Bad value for property '" + prop + "' : " + e + ". Using default value " + longDefault + "."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$

+			}

+		}

+		return retVal;

+	}

+

+	private static boolean shouldReuseConnectionsOption() {

+		boolean retVal = ConnectionOptions.REUSE_CONNECTIONS_DEFAULT;

+		String systemProp = System.getProperty(ConnectionOptions.PROP_REUSE_CONNECTIONS);

+		if (systemProp != null) {

+			retVal = Boolean.valueOf(systemProp).booleanValue();

+		}

+		return retVal;

+	}

+

+	public static int getConnectTimeout(final Map options) {

+		int result = DEFAULT_CONNECTION_TIMEOUT;

+		Map localOptions = options;

+		if (localOptions != null) {

+			// See if the connect timeout option is present, if so set

+			Object o = localOptions.get(IRetrieveFileTransferOptions.CONNECT_TIMEOUT);

+			if (o != null) {

+				if (o instanceof Integer) {

+					result = ((Integer) o).intValue();

+				} else if (o instanceof String) {

+					result = new Integer(((String) o)).intValue();

+				}

+				return result;

+			}

+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout"); //$NON-NLS-1$

+			if (o != null) {

+				if (o instanceof Integer) {

+					result = ((Integer) o).intValue();

+				} else if (o instanceof String) {

+					result = new Integer(((String) o)).intValue();

+				}

+			}

+		}

+		return result;

+	}

+

+	public static int getSocketReadTimeout(Map options) {

+		int result = DEFAULT_READ_TIMEOUT;

+		Map localOptions = options;

+		if (localOptions != null) {

+			// See if the connect timeout option is present, if so set

+			Object o = localOptions.get(IRetrieveFileTransferOptions.READ_TIMEOUT);

+			if (o != null) {

+				if (o instanceof Integer) {

+					result = ((Integer) o).intValue();

+				} else if (o instanceof String) {

+					result = new Integer(((String) o)).intValue();

+				}

+				return result;

+			}

+			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout"); //$NON-NLS-1$

+			if (o != null) {

+				if (o instanceof Integer) {

+					result = ((Integer) o).intValue();

+				} else if (o instanceof String) {

+					result = new Integer(((String) o)).intValue();

+				}

+			}

+		}

+		return result;

+	}

+

+	public synchronized void initConnectionManager(HttpClient httpClient, Map options) {

+		if (!shouldReuseConnectionsOption()) {

+			Trace.trace(Activator.PLUGIN_ID, "Connections are not reused. To reuse connections set system property '" + ConnectionOptions.PROP_REUSE_CONNECTIONS + "' to true."); //$NON-NLS-1$ //$NON-NLS-2$

+			initParameters(httpClient, new MultiThreadedHttpConnectionManager(), false, options);

+			return;

+		}

+		if (connectionManager == null) {

+			connectionManager = new MultiThreadedHttpConnectionManager();

+			Trace.trace(Activator.PLUGIN_ID, "Created shared connection manager."); //$NON-NLS-1$ 

+		} else {

+			Trace.trace(Activator.PLUGIN_ID, "Reusing shared connection manager."); //$NON-NLS-1$ 

+		}

+		initParameters(httpClient, connectionManager, true, options);

+	}

+

+	private static void initParameters(HttpClient httpClient, HttpConnectionManager cm, boolean cmIsShared, Map options) {

+

+		if (cmIsShared) {

+			long closeIdlePeriod = getLongProperty(ConnectionOptions.PROP_POOL_CLOSE_IDLE_PERIOD, ConnectionOptions.POOL_CLOSE_IDLE_PERIOD_DEFAULT);

+			if (closeIdlePeriod > 0) {

+				Trace.trace(Activator.PLUGIN_ID, "Closing connections which were idle at least " + closeIdlePeriod + " milliseconds."); //$NON-NLS-1$ //$NON-NLS-2$

+				cm.closeIdleConnections(closeIdlePeriod);

+			}

+		}

+

+		// HttpClient parameters can be traced independently

+		httpClient.setHttpConnectionManager(cm);

+		int readTimeout = getSocketReadTimeout(options);

+		cm.getParams().setSoTimeout(readTimeout);

+		int connectTimeout = getConnectTimeout(options);

+		cm.getParams().setConnectionTimeout(connectTimeout);

+

+		if (cmIsShared) {

+			HttpConnectionManagerParams cmParams = cm.getParams();

+			int maxHostConnections = getIntegerProperty(ConnectionOptions.PROP_MAX_CONNECTIONS_PER_HOST, ConnectionOptions.MAX_CONNECTIONS_PER_HOST_DEFAULT);

+			int maxTotalConnections = getIntegerProperty(ConnectionOptions.PROP_MAX_TOTAL_CONNECTIONS, ConnectionOptions.MAX_TOTAL_CONNECTIONS_DEFAULT);

+

+			cmParams.setDefaultMaxConnectionsPerHost(maxHostConnections);

+			cmParams.setMaxTotalConnections(maxTotalConnections);

+			long connectionManagerTimeout = getLongProperty(ConnectionOptions.PROP_POOL_CONNECTION_TIMEOUT, ConnectionOptions.POOL_CONNECTION_TIMEOUT_DEFAULT);

+			httpClient.getParams().setConnectionManagerTimeout(connectionManagerTimeout);

+		}

+	}

+

+	public synchronized void shutdown() {

+		if (connectionManager != null) {

+			connectionManager.shutdown();

+			connectionManager = null;

+		}

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionOptions.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionOptions.java
new file mode 100644
index 0000000..500e23d
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionOptions.java
@@ -0,0 +1,127 @@
+/*******************************************************************************

+* Copyright (c) 2011 IBM, 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:

+*   IBM Corporation - initial API and implementation

+******************************************************************************/

+package org.eclipse.ecf.internal.provider.filetransfer.httpclient;

+

+/**

+ * Options to enable reusing socket connections.

+ * <p>

+ * System property {@link #PROP_REUSE_CONNECTIONS} determines whether this file transfer 

+ * provider reuses connections. 

+ * </p> <p>

+ * Without connection reuse each transfer or browse operations uses its 

+ * own connection independent connection. As a result no connections are reused.

+ * </p>

+ * <p> With connection reuse enable a single connection pool is used. Details

+ * of its behavior can be further customized with the following system properties:

+ * <ul>

+ * <li>{@link #PROP_MAX_TOTAL_CONNECTIONS}</li>

+ * <li>{@link #PROP_MAX_CONNECTIONS_PER_HOST}</li>

+ * <li>{@link #PROP_POOL_CONNECTION_TIMEOUT}</li>

+ * <li>{@link #PROP_POOL_CLOSE_IDLE_PERIOD}</li>

+ * </ul>

+ * Changing this and any of the other system properties does not affect connections

+ * already made.  

+ * </p>

+ * @since 4.0.1

+ */

+public interface ConnectionOptions {

+	/**

+	 * System property name to enable connection reuse for this provider.

+	 * <p>

+	 * The boolean value of this system property determines connection reuse. 

+	 * The default value of this property is {@value #REUSE_CONNECTIONS_DEFAULT} as 

+	 * defined by {@link #REUSE_CONNECTIONS_DEFAULT}. </p>

+	 */

+	public String PROP_REUSE_CONNECTIONS = "org.eclipse.ecf.provider.filetransfer.httpclient.reuseConnections.enabled"; //$NON-NLS-1$

+	public boolean REUSE_CONNECTIONS_DEFAULT = true;

+

+	/**

+	 * System property name to specify maximum number of total connections in connection reuse mode.

+	 * <p>

+	 * This property only applies when connection reuse is enabled by {@link #PROP_REUSE_CONNECTIONS}.

+	 * </p><p>

+	 * The default value of this property is {@value #MAX_TOTAL_CONNECTIONS_DEFAULT} as 

+	 * defined by {@link #MAX_TOTAL_CONNECTIONS_DEFAULT}. </p>

+	 * <p>

+	 * When the maximum number of connections are being used simultaneously another connection request 

+	 * waits until a connection becomes available to the connection pool. The maximum wait time can 

+	 * be adjusted using {@link #PROP_POOL_CONNECTION_TIMEOUT}. 

+	 * </p><p>

+	 * </p>     

+	 */

+	public String PROP_MAX_TOTAL_CONNECTIONS = "org.eclipse.ecf.provider.filetransfer.httpclient.maxConnectionsTotal"; //$NON-NLS-1$

+	public int MAX_TOTAL_CONNECTIONS_DEFAULT = 200; // HttpClient default is 20.

+

+	/**

+	 * System property name to specify maximum number of connections per host in connection reuse mode.

+	 * <p>

+	 * This property only applies when connection reuse is enabled by {@link #PROP_REUSE_CONNECTIONS}.

+	 * </p><p>

+	 * The default value of this property is {@value #MAX_CONNECTIONS_PER_HOST_DEFAULT} as 

+	 * defined by {@link #MAX_CONNECTIONS_PER_HOST_DEFAULT}. </p>

+	 * <p>

+	 * When the maximum number of connections are being used simultaneously another connection request 

+	 * waits until a connection becomes available to the connection pool. The maximum wait time can 

+	 * be adjusted using {@link #PROP_POOL_CONNECTION_TIMEOUT}. 

+	 * </p><p>

+	 * </p>     

+	 */

+	public String PROP_MAX_CONNECTIONS_PER_HOST = "org.eclipse.ecf.provider.filetransfer.httpclient.maxConnectionsPerHost"; //$NON-NLS-1$

+	public int MAX_CONNECTIONS_PER_HOST_DEFAULT = 4; // HttpClient default is 2. 

+

+	/**

+	 * Property for connection pool timeout.

+	 * <p>

+	 * This property only applies when connection reuse is enabled by {@link #PROP_REUSE_CONNECTIONS}.

+	 * </p><p>

+	 * This is the name for a system property to change the timeout value for a 

+	 * caller waits until a connection becomes available in the connection pool.

+	 * </p> 

+	 * <p>

+	 * The value is a long value and its unit is milliseconds.

+	 * With the value 0 no timeouts are used so that the caller waits until a connection becomes available.

+	 * </p><p>

+	 * The default value of this property is {@value #POOL_CONNECTION_TIMEOUT_DEFAULT} as 

+	 * defined by {@link #POOL_CONNECTION_TIMEOUT_DEFAULT}. </p>

+	 * </p>

+	 */

+	public String PROP_POOL_CONNECTION_TIMEOUT = "org.eclipse.ecf.provider.filetransfer.httpclient.poolConnectionTimeout"; //$NON-NLS-1$

+

+	public long POOL_CONNECTION_TIMEOUT_DEFAULT = 0;

+

+	/**

+	 * Property to set period after which idle connections are closed. 

+	 * <p>

+	 * This setting only applies when reusing connection is enabled (see {@link #PROP_REUSE_CONNECTIONS}.

+	 * <p></p> 

+	 * This is the name for a system property to change the time period after

+	 * which an idle connection can be closed by the ECF HttpClient based provider. 

+	 * Currently idle connections are only closed when another transfer is made.

+	 * </p> 

+	 * <p>

+	 * The value is a long value and its unit is milliseconds.

+	 * When the value is 0 (or negative) idle connections are never closed except on shutdown.

+	 * </p><p>

+	 * The default is {@value #POOL_CLOSE_IDLE_PERIOD_DEFAULT} as 

+	 * defined by {@link #POOL_CLOSE_IDLE_PERIOD_DEFAULT}.

+	 * </p>

+	 */

+	public String PROP_POOL_CLOSE_IDLE_PERIOD = "org.eclipse.ecf.provider.filetransfer.httpclient.poolCloseIdle"; //$NON-NLS-1$

+

+	/**

+	 * Default period before idle connections are closed.

+	 * <p>

+	 * The default period after which idle connections can be closed is 3 minutes.  

+	 * </p> 

+	 */

+	public long POOL_CLOSE_IDLE_PERIOD_DEFAULT = 3 * 60 * 1000;

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java
index d2edd7c..061a02a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientBrowseFileTransferFactory.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 IBM, Composent Inc. and others.
+ * Copyright (c) 2007, 2011 IBM, 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
@@ -7,13 +7,13 @@
  *
  * Contributors:
  *    Composent, Inc. - initial API and implementation
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session 
  *****************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
@@ -50,7 +50,7 @@
 					throw new RemoteFileSystemException(NLS.bind("Exception creating URL for {0}", directoryOrFileId)); //$NON-NLS-1$
 				}
 
-				HttpClientFileSystemBrowser browser = new HttpClientFileSystemBrowser(new HttpClient(new MultiThreadedHttpConnectionManager()), directoryOrFileId, listener, url, connectContext, proxy);
+				HttpClientFileSystemBrowser browser = new HttpClientFileSystemBrowser(new HttpClient(), directoryOrFileId, listener, url, connectContext, proxy);
 				return browser.sendBrowseRequest();
 			}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
index 8c44535..daa4288 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2008, 2010 Composent, Inc., IBM and others.
+ * Copyright (c) 2008, 2011 Composent, Inc., IBM 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,6 +8,7 @@
  * Contributors:
  *    Composent, Inc. - initial API and implementation
  *    Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session     
  *****************************************************************************/
 
 package org.eclipse.ecf.provider.filetransfer.httpclient;
@@ -17,6 +18,7 @@
 import java.net.Socket;
 import java.net.URL;
 import java.util.Iterator;
+import java.util.Map;
 import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.HostConfiguration;
@@ -152,7 +154,6 @@
 				}
 			}
 		}
-
 	}
 
 	protected boolean hasForceNTLMProxyOption() {
@@ -179,6 +180,11 @@
 			setupProxy(proxy);
 	}
 
+	private void initHttpClientConnectionManager() {
+		Map options = null; //Currently there is no API to pass in options to browse request
+		Activator.getDefault().getConnectionManagerHelper().initConnectionManager(httpClient, options);
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser#runRequest()
 	 */
@@ -186,9 +192,7 @@
 		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "runRequest"); //$NON-NLS-1$
 		setupProxies();
 		// set timeout
-		httpClient.getHttpConnectionManager().getParams().setSoTimeout(DEFAULT_CONNECTION_TIMEOUT);
-		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
-		httpClient.getParams().setConnectionManagerTimeout(DEFAULT_CONNECTION_TIMEOUT);
+		initHttpClientConnectionManager();
 
 		String urlString = directoryOrFile.toString();
 		CredentialsProvider credProvider = new HttpClientProxyCredentialProvider() {
@@ -216,6 +220,7 @@
 		headMethod.getParams().setParameter(CredentialsProvider.PROVIDER, credProvider);
 		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990
 		headMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$
+		headMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 
 		long lastModified = 0;
 		long fileLength = -1;
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
index 5bb12eb..7c951d1 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2010 Composent, Inc., IBM All rights reserved. This
+ * Copyright (c) 2004, 2011 Composent, Inc., IBM 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
@@ -9,6 +9,7 @@
  *  Maarten Meijer - bug 237936, added gzip encoded transfer default
  *  Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy
  *  Henrich Kraemer - bug 263613, [transport] Update site contacting / downloading is not cancelable
+ *  Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session  
  ******************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
@@ -69,6 +70,7 @@
 import org.eclipse.ecf.filetransfer.identity.IFileID;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ConnectingSocketMonitor;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ConnectionManagerHelper;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.DebugOptions;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ECFHttpClientProtocolSocketFactory;
 import org.eclipse.ecf.internal.provider.filetransfer.httpclient.ECFHttpClientSecureProtocolSocketFactory;
@@ -270,11 +272,11 @@
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
 	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout
 	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
-	protected static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_CONNECTION_TIMEOUT;
+	protected static final int DEFAULT_CONNECTION_TIMEOUT = ConnectionManagerHelper.DEFAULT_CONNECTION_TIMEOUT;
 	// changing to 2 minutes (120000) as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=266246
 	// 10/26/2009:  Added being able to set with system property with name org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout
 	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995
-	protected static final int DEFAULT_READ_TIMEOUT = HttpClientOptions.RETRIEVE_DEFAULT_READ_TIMEOUT;
+	protected static final int DEFAULT_READ_TIMEOUT = ConnectionManagerHelper.DEFAULT_READ_TIMEOUT;
 
 	protected static final int HTTP_PORT = 80;
 
@@ -315,9 +317,8 @@
 	private ConnectingSocketMonitor connectingSockets;
 	private FileTransferJob connectJob;
 
-	public HttpClientRetrieveFileTransfer(HttpClient httpClient) {
-		this.httpClient = httpClient;
-		Assert.isNotNull(this.httpClient);
+	public HttpClientRetrieveFileTransfer(HttpClient client) {
+		this.httpClient = client;
 		proxyHelper = new JREProxyHelper();
 		connectingSockets = new ConnectingSocketMonitor(1);
 		socketEventSource = new SocketEventSource() {
@@ -604,58 +605,18 @@
 	}
 
 	protected int getSocketReadTimeout() {
-		int result = DEFAULT_READ_TIMEOUT;
-		Map localOptions = getOptions();
-		if (localOptions != null) {
-			// See if the connect timeout option is present, if so set
-			Object o = localOptions.get(IRetrieveFileTransferOptions.READ_TIMEOUT);
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-				return result;
-			}
-			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout"); //$NON-NLS-1$
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-			}
-		}
-		return result;
+		return ConnectionManagerHelper.getSocketReadTimeout(getOptions());
 	}
 
 	/**
 	 * @since 4.0
 	 */
 	protected int getConnectTimeout() {
-		int result = DEFAULT_CONNECTION_TIMEOUT;
-		Map localOptions = getOptions();
-		if (localOptions != null) {
-			// See if the connect timeout option is present, if so set
-			Object o = localOptions.get(IRetrieveFileTransferOptions.CONNECT_TIMEOUT);
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-				return result;
-			}
-			o = localOptions.get("org.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout"); //$NON-NLS-1$
-			if (o != null) {
-				if (o instanceof Integer) {
-					result = ((Integer) o).intValue();
-				} else if (o instanceof String) {
-					result = new Integer(((String) o)).intValue();
-				}
-			}
-		}
-		return result;
+		return ConnectionManagerHelper.getConnectTimeout(getOptions());
+	}
+
+	private void initHttpClientConnectionManager() {
+		Activator.getDefault().getConnectionManagerHelper().initConnectionManager(httpClient, getOptions());
 	}
 
 	/* (non-Javadoc)
@@ -670,17 +631,14 @@
 		int code = -1;
 
 		try {
-			httpClient.getHttpConnectionManager().getParams().setSoTimeout(getSocketReadTimeout());
-			int connectTimeout = getConnectTimeout();
-			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectTimeout);
-			httpClient.getParams().setConnectionManagerTimeout(connectTimeout);
-
+			initHttpClientConnectionManager();
 			setupAuthentication(urlString);
 
 			CredentialsProvider credProvider = new ECFCredentialsProvider();
 			setupHostAndPort(credProvider, urlString);
 
 			getMethod = new GzipGetMethod(hostConfigHelper.getTargetRelativePath());
+			getMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 			getMethod.setFollowRedirects(true);
 			// Define a CredentialsProvider - found that possibility while debugging in org.apache.commons.httpclient.HttpMethodDirector.processProxyAuthChallenge(HttpMethod)
 			// Seems to be another way to select the credentials.
@@ -917,10 +875,7 @@
 		int code = -1;
 
 		try {
-			httpClient.getHttpConnectionManager().getParams().setSoTimeout(getSocketReadTimeout());
-			int connectTimeout = getConnectTimeout();
-			httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectTimeout);
-			httpClient.getParams().setConnectionManagerTimeout(connectTimeout);
+			initHttpClientConnectionManager();
 
 			CredentialsProvider credProvider = new ECFCredentialsProvider();
 			setupAuthentication(urlString);
@@ -928,6 +883,7 @@
 			setupHostAndPort(credProvider, urlString);
 
 			getMethod = new GzipGetMethod(hostConfigHelper.getTargetRelativePath());
+			getMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$
 			getMethod.setFollowRedirects(true);
 			// Define a CredentialsProvider - found that possibility while debugging in org.apache.commons.httpclient.HttpMethodDirector.processProxyAuthChallenge(HttpMethod)
 			// Seems to be another way to select the credentials.
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java
index bce6b3c..ccb2689 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransferFactory.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2007 IBM, Composent Inc. and others.
+ * Copyright (c) 2007, 2011 IBM, 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
@@ -7,20 +7,18 @@
  *
  * Contributors:
  *    Composent, Inc. - initial API and implementation
+ *    Henrich Kraemer - Bug 297742 - [transport] Investigate how to maintain HTTP session 
  *****************************************************************************/
 package org.eclipse.ecf.provider.filetransfer.httpclient;
 
 import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransfer;
 import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransferFactory;
 
-public class HttpClientRetrieveFileTransferFactory implements
-		IRetrieveFileTransferFactory {
+public class HttpClientRetrieveFileTransferFactory implements IRetrieveFileTransferFactory {
 
 	public IRetrieveFileTransfer newInstance() {
-		return new HttpClientRetrieveFileTransfer(new HttpClient(
-				new MultiThreadedHttpConnectionManager()));
+		return new HttpClientRetrieveFileTransfer(new HttpClient());
 	}
 
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
index 279c140..6a01971 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.jdt.core.prefs
@@ -1,353 +1,357 @@
-#Thu Mar 18 13:43:03 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.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=ignore
-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.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.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=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=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:40:32 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=ignore

+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=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=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/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
index cbf6a1c..12c42d5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF
@@ -26,8 +26,8 @@
  org.eclipse.ecf.provider.filetransfer;x-friends:="org.eclipse.equinox.p2.repository",
  org.eclipse.ecf.provider.filetransfer.browse,
  org.eclipse.ecf.provider.filetransfer.events.socket;version="1.0";x-friends:="org.eclipse.ecf.provider.filetransfer.httpclient",
- org.eclipse.ecf.provider.filetransfer.identity;x-internal:=false,
+ org.eclipse.ecf.provider.filetransfer.identity,
  org.eclipse.ecf.provider.filetransfer.outgoing,
- org.eclipse.ecf.provider.filetransfer.retrieve;x-internal:=false,
+ org.eclipse.ecf.provider.filetransfer.retrieve,
  org.eclipse.ecf.provider.filetransfer.util
 Bundle-ActivationPolicy: lazy
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java b/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
index 58da382..3dc15fe 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc.ui/src/org/eclipse/ecf/internal/irc/ui/wizards/IRCConnectWizardPage.java
@@ -36,7 +36,8 @@
 
 	private Combo connectTimeOut;
 
-	private String[] connectTimeOutValues = { "10", "15", "20", "25", "30" };
+	private String[] connectTimeOutValues = { "10", "20", "30", "40", "50",
+			"60" };
 
 	IRCConnectWizardPage() {
 		super("IRCConnectWizardPage"); //$NON-NLS-1$
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF
index db12ffc..dd843ab 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.irc; singleton:=true
-Bundle-Version: 1.3.0.qualifier
+Bundle-Version: 1.3.100.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.irc.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
index 4716a3e..f98c3c5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCChannelContainer.java
@@ -33,7 +33,7 @@
 		IChatMessageSender, IChatRoomContainer {
 
 	private static final long CONNECT_TIMEOUT = new Long(System.getProperty(
-			"org.eclipse.ecf.provider.irc.connectTimeout", "30000"))
+			"org.eclipse.ecf.provider.irc.connectTimeout", "60000"))
 			.longValue();
 
 	protected List participantListeners = new ArrayList();
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
index 3c9729b..2201c9a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
@@ -11,8 +11,6 @@
  ******************************************************************************/
 package org.eclipse.ecf.internal.provider.irc.container;
 
-import java.util.StringTokenizer;
-
 import java.net.InetSocketAddress;
 import java.util.*;
 import org.eclipse.ecf.core.*;
@@ -29,8 +27,8 @@
 import org.eclipse.ecf.presence.chatroom.*;
 import org.eclipse.ecf.presence.history.IHistory;
 import org.eclipse.ecf.presence.history.IHistoryManager;
-import org.eclipse.ecf.presence.im.IChatMessageSender;
 import org.eclipse.ecf.presence.im.IChatMessage.Type;
+import org.eclipse.ecf.presence.im.IChatMessageSender;
 import org.eclipse.equinox.concurrent.future.TimeoutException;
 import org.eclipse.osgi.util.NLS;
 import org.osgi.framework.Bundle;
@@ -49,7 +47,9 @@
 		IChatRoomManager, IChatRoomContainer, IRCMessageChannel,
 		IChatRoomContainerOptionsAdapter {
 
-	private static final long CONNECT_TIMEOUT = 20000;
+	private static final long CONNECT_TIMEOUT = new Long(System.getProperty(
+			"org.eclipse.ecf.provider.irc.connectTimeout", "60000"))
+			.longValue();
 
 	protected IRCConnection connection = null;
 
@@ -73,7 +73,8 @@
 	private IIRCDatashareContainer datashareContainer;
 
 	/**
-	 * Used for determining whether the USERHOST reply should be hijacked or not.
+	 * Used for determining whether the USERHOST reply should be hijacked or
+	 * not.
 	 */
 	private boolean retrieveUserhost;
 
@@ -89,7 +90,8 @@
 	/**
 	 * Creates and returns a datashare container implementation.
 	 * 
-	 * @return a datashare container implementation for this container, or <code>null</code> if it could not be created
+	 * @return a datashare container implementation for this container, or
+	 *         <code>null</code> if it could not be created
 	 */
 	private IIRCDatashareContainer createDatashareContainer() {
 		if (hasDatashare() && hasNIO()) {
@@ -99,18 +101,25 @@
 	}
 
 	/**
-	 * Checks and returns whether the datashare NIO APIs are available in the current OSGi environment.
-	 * @return <code>true</code> if the datashare NIO APIs are available, <code>false</code> otherwise
+	 * Checks and returns whether the datashare NIO APIs are available in the
+	 * current OSGi environment.
+	 * 
+	 * @return <code>true</code> if the datashare NIO APIs are available,
+	 *         <code>false</code> otherwise
 	 */
 	private boolean hasDatashare() {
 		PackageAdmin admin = Activator.getDefault().getPackageAdmin();
-		Bundle[] bundles = admin.getBundles("org.eclipse.ecf.provider.datashare.nio", null); //$NON-NLS-1$
+		Bundle[] bundles = admin.getBundles(
+				"org.eclipse.ecf.provider.datashare.nio", null); //$NON-NLS-1$
 		return bundles != null && bundles.length != 0;
 	}
 
 	/**
-	 * Checks and returns there is Java 1.4 NIO support in the current Java runtime environment.
-	 * @return <code>true</code> if the Java 1.4 NIO APIs are available, <code>false</code> otherwise
+	 * Checks and returns there is Java 1.4 NIO support in the current Java
+	 * runtime environment.
+	 * 
+	 * @return <code>true</code> if the Java 1.4 NIO APIs are available,
+	 *         <code>false</code> otherwise
 	 */
 	private boolean hasNIO() {
 		try {
@@ -183,8 +192,8 @@
 				}
 				if (connectWaiting)
 					throw new TimeoutException(NLS.bind(
-							Messages.IRCRootContainer_Connect_Timeout, tID
-									.getName()), CONNECT_TIMEOUT);
+							Messages.IRCRootContainer_Connect_Timeout,
+							tID.getName()), CONNECT_TIMEOUT);
 				if (connectException != null)
 					throw connectException;
 				this.targetID = tID;
@@ -196,7 +205,7 @@
 					// message to the server so that we can attempt to retrieve
 					// our current IP
 					retrieveUserhost = true;
-					connection.doUserhost(nick);	
+					connection.doUserhost(nick);
 				}
 			} catch (Exception e) {
 				this.targetID = null;
@@ -249,30 +258,30 @@
 				}
 				if (targetID != null) {
 					showMessage(null, NLS.bind(
-							Messages.IRCRootContainer_Disconnected, targetID
-									.getName()));
+							Messages.IRCRootContainer_Disconnected,
+							targetID.getName()));
 					handleDisconnected();
 				}
 			}
 
 			public void onError(String arg0) {
 				trace("handleOnError(" + arg0 + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Error,
-						arg0));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Error, arg0));
 				handleErrorIfConnecting(arg0);
 			}
 
 			public void onError(int arg0, String arg1) {
 				String msg = arg0 + "," + arg1; //$NON-NLS-1$
 				trace("handleOnError(" + msg + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				showMessage(null, NLS
-						.bind(Messages.IRCRootContainer_Error, msg));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Error, msg));
 				handleErrorIfConnecting(arg0 + msg);
 			}
 
 			public void onInvite(String arg0, IRCUser arg1, String arg2) {
-				handleInvite(createIDFromString(arg0), createIDFromString(arg1
-						.getNick()));
+				handleInvite(createIDFromString(arg0),
+						createIDFromString(arg1.getNick()));
 			}
 
 			public void onJoin(String arg0, IRCUser arg1) {
@@ -299,14 +308,12 @@
 					// check if we are the ones that have been kicked
 					if (kicked.equals(((IRCID) targetID).getUsername())) {
 						// fire disconnection events for this channel container
-						channel
-								.fireContainerEvent(new ContainerDisconnectingEvent(
-										channel.getID(), channel.targetID));
+						channel.fireContainerEvent(new ContainerDisconnectingEvent(
+								channel.getID(), channel.targetID));
 						channel.firePresenceListeners(false,
 								new String[] { kicked });
-						channel
-								.fireContainerEvent(new ContainerDisconnectedEvent(
-										channel.getID(), channel.targetID));
+						channel.fireContainerEvent(new ContainerDisconnectedEvent(
+								channel.getID(), channel.targetID));
 					} else {
 						channel.firePresenceListeners(false,
 								new String[] { kicked });
@@ -362,9 +369,11 @@
 						// remote peer and initiate a socket connection
 						String identifier = arg2
 								.substring(5, arg2.length() - 1);
-						StringTokenizer tokenizer = new StringTokenizer(identifier, ":"); //$NON-NLS-1$
-						datashareContainer.enqueue(new InetSocketAddress(tokenizer.nextToken(),
-								Integer.parseInt(tokenizer.nextToken())));
+						StringTokenizer tokenizer = new StringTokenizer(
+								identifier, ":"); //$NON-NLS-1$
+						datashareContainer.enqueue(new InetSocketAddress(
+								tokenizer.nextToken(), Integer
+										.parseInt(tokenizer.nextToken())));
 					}
 				} else {
 					showMessage(arg0, arg1.toString(), arg2);
@@ -430,7 +439,8 @@
 			return null;
 		} else if (serviceType.isInstance(this)) {
 			return this;
-		} else if (datashareContainer != null && serviceType.isInstance(datashareContainer)) {
+		} else if (datashareContainer != null
+				&& serviceType.isInstance(datashareContainer)) {
 			return datashareContainer;
 		}
 		return null;
@@ -640,19 +650,17 @@
 						commandMessage = commandMessage.substring(5);
 						int index = commandMessage.indexOf(COMMAND_DELIM);
 						if (index != -1) {
-							connection
-									.doPrivmsg(commandMessage.substring(0,
-											index), commandMessage
-											.substring(index + 1));
+							connection.doPrivmsg(
+									commandMessage.substring(0, index),
+									commandMessage.substring(index + 1));
 						}
 					} else if (lowerCase.startsWith("/privmsg ")) { //$NON-NLS-1$
 						commandMessage = commandMessage.substring(9);
 						int index = commandMessage.indexOf(COMMAND_DELIM);
 						if (index != -1) {
-							connection
-									.doPrivmsg(commandMessage.substring(0,
-											index), commandMessage
-											.substring(index + 1));
+							connection.doPrivmsg(
+									commandMessage.substring(0, index),
+									commandMessage.substring(index + 1));
 						}
 					} else if (lowerCase.startsWith("/op ")) { //$NON-NLS-1$
 						nextToken(command); // skip command
@@ -881,8 +889,8 @@
 	protected void handle353Reply(String channel, String[] strings) {
 		IRCChannelContainer container = getChannel(channel);
 		if (container == null) {
-			showMessage(null, NLS.bind(Messages.IRCRootContainer_353_Error,
-					channel));
+			showMessage(null,
+					NLS.bind(Messages.IRCRootContainer_353_Error, channel));
 		} else
 			container.firePresenceListeners(true, strings);
 	}
@@ -895,8 +903,8 @@
 				handle353Reply(users[2], parseUserNames(arg2));
 				break;
 			case 311:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Whois,
-						users[1]));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Whois, users[1]));
 				showMessage(null, trimUsername(users[2]) + "@" + users[3]); //$NON-NLS-1$
 				break;
 			case 312:
@@ -904,15 +912,15 @@
 						new Object[] { users[2], arg2 }));
 				break;
 			case 317:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Idle,
-						users[2]));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Idle, users[2]));
 				break;
 			case 318:
 				showMessage(null, Messages.IRCRootContainer_Whois_End);
 				break;
 			case 319:
-				showMessage(null, NLS.bind(Messages.IRCRootContainer_Channels,
-						arg2));
+				showMessage(null,
+						NLS.bind(Messages.IRCRootContainer_Channels, arg2));
 				break;
 			case 320:
 				break;
@@ -927,7 +935,7 @@
 			case 302:
 				if (retrieveUserhost) {
 					if (datashareContainer != null) {
-						// set the retrieved ip address from the 
+						// set the retrieved ip address from the
 						arg2 = arg2.trim();
 						String ip = arg2.substring(arg2.lastIndexOf('@') + 1);
 						datashareContainer.setIP(ip);
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.classpath b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.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/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.project b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.project
deleted file mode 100644
index 5729054..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.provider.localdiscovery</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/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index b753aeb..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Tue Apr 20 22:28:50 PDT 2010
-eclipse.preferences.version=1
-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.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=warning
-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=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.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
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index 7ba0fd8..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,94 +0,0 @@
-#Tue Apr 20 22:28:22 PDT 2010
-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_REEXPORTED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_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=Warning
-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
-automatically_removed_unused_problem_filters=false
-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/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.core.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 57d5040..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Fri Mar 13 19:37:30 CET 2009
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index 1a89716..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,31 +0,0 @@
-#Sat Apr 24 17:41:38 PDT 2010
-compilers.f.unresolved-features=1
-compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=2
-compilers.p.build=1
-compilers.p.build.bin.includes=1
-compilers.p.build.java.compliance=1
-compilers.p.build.missing.output=2
-compilers.p.build.output.library=1
-compilers.p.build.source.library=1
-compilers.p.build.src.includes=1
-compilers.p.deprecated=1
-compilers.p.discouraged-class=2
-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
-eclipse.preferences.version=1
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/META-INF/MANIFEST.MF
deleted file mode 100644
index eb1e621..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.ecf.provider.localdiscovery;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %Bundle-Vendor.0
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Import-Package: org.eclipse.ecf.core.identity,
- org.eclipse.ecf.discovery.identity,
- org.eclipse.ecf.osgi.services.discovery
-Require-Bundle: org.eclipse.equinox.common
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/OSGI-INF/l10n/bundle.properties b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/OSGI-INF/l10n/bundle.properties
deleted file mode 100644
index b3ceef5..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/OSGI-INF/l10n/bundle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-#Properties file for org.eclipse.ecf.provider.localdiscovery
-Bundle-Vendor.0 = Eclipse.org - ECF
-Bundle-Name.0 = ECF Local Discovery Provider
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/about.html b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/about.html
deleted file mode 100644
index ada977b..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/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/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties
deleted file mode 100644
index 7bd6a9b..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               OSGI-INF/l10n/bundle.properties,\
-               about.html,\
-               OSGI-INF/
-src.includes = about.html,\
-               OSGI-INF/l10n/bundle.properties
-jre.compilation.profile = J2SE-1.4
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/plugin.xml
deleted file mode 100644
index 9dcdd7e..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/plugin.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.3"?>
-<plugin>
-   <extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory
-            adaptableType="org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription"
-            class="org.eclipse.ecf.provider.localdiscovery.ServiceEndpointDescriptionFactory">
-         <adapter
-               type="org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription">
-         </adapter>
-      </factory>
-   </extension>
-</plugin>
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/RemoteServiceEndpointDescriptionImpl.java b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/RemoteServiceEndpointDescriptionImpl.java
deleted file mode 100644
index 68360ca..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/RemoteServiceEndpointDescriptionImpl.java
+++ /dev/null
@@ -1,148 +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.provider.localdiscovery;
-
-import java.net.URI;
-import java.util.Collection;
-import java.util.Map;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class RemoteServiceEndpointDescriptionImpl extends
-		RemoteServiceEndpointDescription {
-
-	private final ID endpointId;
-	private final ServiceEndpointDescription serviceEndpoint;
-
-	public RemoteServiceEndpointDescriptionImpl(ServiceEndpointDescription sed,
-			ID anEndpointId) {
-		super(sed.getProperties());
-		serviceEndpoint = sed;
-		endpointId = anEndpointId;
-	}
-
-	public RemoteServiceEndpointDescriptionImpl(ServiceEndpointDescription sed,
-			ID anEndpointId, Map properties) {
-		super(properties);
-		serviceEndpoint = sed;
-		endpointId = anEndpointId;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getProperties()
-	 */
-	public Map getProperties() {
-		return serviceEndpoint.getProperties();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getProperty(java.lang.String)
-	 */
-	public Object getProperty(String key) {
-		return serviceEndpoint.getProperty(key);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getPropertyKeys()
-	 */
-	public Collection getPropertyKeys() {
-		return serviceEndpoint.getPropertyKeys();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getEndpointID()
-	 */
-	public String getEndpointID() {
-		return serviceEndpoint.getEndpointID();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getEndpointInterfaceName(java.lang.String)
-	 */
-	public String getEndpointInterfaceName(String interfaceName) {
-		return serviceEndpoint.getEndpointInterfaceName(interfaceName);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getLocation()
-	 */
-	public URI getLocation() {
-		return serviceEndpoint.getLocation();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getProvidedInterfaces()
-	 */
-	public Collection getProvidedInterfaces() {
-		return serviceEndpoint.getProvidedInterfaces();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getVersion(java.lang.String)
-	 */
-	public String getVersion(String interfaceName) {
-		return serviceEndpoint.getVersion(interfaceName);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getECFEndpointID()
-	 */
-	public ID getEndpointAsID() {
-		return endpointId;
-	}
-
-	public ID getConnectTargetID() {
-		return null;
-	}
-
-	public IServiceID getServiceID() {
-		return null;
-	}
-}
diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/ServiceEndpointDescriptionFactory.java b/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/ServiceEndpointDescriptionFactory.java
deleted file mode 100644
index ba94d31..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/src/org/eclipse/ecf/provider/localdiscovery/ServiceEndpointDescriptionFactory.java
+++ /dev/null
@@ -1,76 +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.provider.localdiscovery;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class ServiceEndpointDescriptionFactory implements IAdapterFactory {
-
-	private static final String ECF_IDENTITY_STRING_ID = "org.eclipse.ecf.core.identity.StringID"; //$NON-NLS-1$
-	private static final String ECF_SP_ECT = "ecf.sp.ect"; //$NON-NLS-1$
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object,
-	 * java.lang.Class)
-	 */
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
-		if (adapterType.equals(RemoteServiceEndpointDescription.class)
-				&& adaptableObject instanceof ServiceEndpointDescription) {
-			final ServiceEndpointDescription sed = (ServiceEndpointDescription) adaptableObject;
-			final Map properties = sed.getProperties();
-			Object obj1 = properties
-					.get(RemoteServicePublication.ENDPOINT_CONTAINERID);
-			final Object obj2 = properties
-					.get(RemoteServicePublication.ENDPOINT_CONTAINERID_NAMESPACE);
-			if (obj1 instanceof byte[]) {
-				obj1 = new String(((byte[]) obj1));
-			}
-			if (obj2 != null && obj1 instanceof String && obj2 instanceof String) {
-				// create the endpoint id
-				final String endpointStr = (String) obj1;
-				final String namespaceStr = (String) obj2;
-				return new RemoteServiceEndpointDescriptionImpl(sed, IDFactory
-						.getDefault().createID(namespaceStr, endpointStr));
-			} else if(obj2 == null && obj1 instanceof String) {
-				// create the endpoint id via the endpoint str for known containers
-				final String endpointStr = (String) obj1;
-				if (endpointStr.startsWith("ecftcp://")) { //$NON-NLS-1$
-					properties.put(ECF_SP_ECT, "ecf.generic.server"); //$NON-NLS-1$
-				} else if(endpointStr.startsWith("r-osgi://")) { //$NON-NLS-1$
-					properties.put(ECF_SP_ECT, "ecf.r_osgi.peer"); //$NON-NLS-1$
-				} else {
-					return null;
-				}
-				return new RemoteServiceEndpointDescriptionImpl(sed, IDFactory
-						.getDefault().createID(ECF_IDENTITY_STRING_ID, endpointStr), properties); //$NON-NLS-1$
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
-	 */
-	public Class[] getAdapterList() {
-		return new Class[] { ServiceEndpointDescription.class };
-	}
-}
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java
index 8c2650b..e5d33c2 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java
@@ -12,8 +12,8 @@
 package org.eclipse.ecf.internal.provider.r_osgi;
 
 import ch.ethz.iks.r_osgi.RemoteOSGiService;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
+import org.eclipse.equinox.concurrent.future.IExecutor;
+import org.osgi.framework.*;
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
@@ -23,6 +23,17 @@
  */
 public final class Activator implements BundleActivator {
 
+	// This is a service property that is used to find any IExecutor service instances
+	// to be used for synchronous or asynchronous execution.  The use of the IExecutor
+	// The type of the value for this property is String, and valid values are 'sync' or 'async'
+	// For example, to setup one's own executor implementation to use for async invocation
+	// on a consumer would look like this
+	// 
+	// props.put("org.eclipse.ecf.provider.r_osgi.consumerExecutor","async");
+	// bundleContext.registerService(IExecutor.class.getName(), new MyExecutor(), props);
+	// 
+	public static final String CONSUMER_SYNC_EXECUTOR_TYPE = "org.eclipse.ecf.provider.r_osgi.consumerExecutor"; //$NON-NLS-1$
+
 	// The plug-in ID
 	public static final String PLUGIN_ID = "org.eclipse.ecf.provider.r_osgi"; //$NON-NLS-1$
 
@@ -65,6 +76,12 @@
 	public void stop(final BundleContext bc) throws Exception {
 		r_osgi_tracker.close();
 		r_osgi_tracker = null;
+		synchronized (executorServiceTrackerLock) {
+			if (executorServiceTracker != null) {
+				executorServiceTracker.close();
+				executorServiceTracker = null;
+			}
+		}
 		this.context = null;
 		plugin = null;
 	}
@@ -101,4 +118,27 @@
 		}
 		return plugin;
 	}
+
+	private ServiceTracker executorServiceTracker;
+	private final Object executorServiceTrackerLock = new Object();
+
+	private Filter createExecutorFilter(boolean sync) {
+		try {
+			return getContext().createFilter("(&(" + Constants.OBJECTCLASS + "=" + IExecutor.class.getName() + ")(" + CONSUMER_SYNC_EXECUTOR_TYPE + "=" + ((sync) ? "sync" : "async") + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+		} catch (InvalidSyntaxException e) {
+			// should not happen
+			return null;
+		}
+	}
+
+	public IExecutor getExecutor(boolean sync) {
+		synchronized (executorServiceTrackerLock) {
+			if (executorServiceTracker == null) {
+				Filter syncExecutorFilter = createExecutorFilter(sync);
+				executorServiceTracker = new ServiceTracker(getContext(), syncExecutorFilter, null);
+				executorServiceTracker.open();
+			}
+		}
+		return (IExecutor) executorServiceTracker.getService();
+	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java
index 24c67bd..db3bd9e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java
@@ -47,20 +47,20 @@
 	 */
 	public IContainer createInstance(final ContainerTypeDescription description, final Object[] parameters) throws ContainerCreateException {
 		try {
-			final RemoteOSGiService remoteOsGiService = Activator.getDefault().getRemoteOSGiService();
+			final RemoteOSGiService remoteOSGiService = Activator.getDefault().getRemoteOSGiService();
 			if (parameters == null) {
 				//TODO factor localHost and protocol out?
-				final String localHost = InetAddress.getLocalHost().getHostName();
+				final String localHost = InetAddress.getLocalHost().getCanonicalHostName();
 				final String protocol = "r-osgi"; //$NON-NLS-1$
 
-				final int port = remoteOsGiService.getListeningPort(protocol);
+				final int port = remoteOSGiService.getListeningPort(protocol);
 				final ID containerID = new R_OSGiID(protocol + "://" + localHost + ":" + port); //$NON-NLS-1$ //$NON-NLS-2$
-				return new R_OSGiRemoteServiceContainer(remoteOsGiService, containerID);
+				return new R_OSGiRemoteServiceContainer(remoteOSGiService, containerID);
 			} else if (parameters.length > 0) {
 				if (parameters[0] instanceof ID) {
-					return new R_OSGiRemoteServiceContainer(remoteOsGiService, (ID) parameters[0]);
+					return new R_OSGiRemoteServiceContainer(remoteOSGiService, (ID) parameters[0]);
 				} else if (parameters[0] instanceof String) {
-					return new R_OSGiRemoteServiceContainer(remoteOsGiService, new R_OSGiID((String) parameters[0]));
+					return new R_OSGiRemoteServiceContainer(remoteOSGiService, new R_OSGiID((String) parameters[0]));
 				}
 			}
 			throw new ContainerCreateException("Unsupported arguments " //$NON-NLS-1$
@@ -124,4 +124,4 @@
 		return null;
 	}
 
-}
\ No newline at end of file
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java
index 0a5ab38..0e05ded 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceImpl.java
@@ -83,14 +83,37 @@
 	 * @see org.eclipse.ecf.remoteservice.IRemoteService#callAsync(org.eclipse.ecf.remoteservice.IRemoteCall)
 	 */
 	public IFuture callAsync(final IRemoteCall call) {
-		final AbstractExecutor executor = new ThreadsExecutor();
-		return executor.execute(new IProgressRunnable() {
+		return getAsyncExecutor().execute(new IProgressRunnable() {
 			public Object run(IProgressMonitor monitor) throws Exception {
 				return callSync(call);
 			}
 		}, null);
 	}
 
+	private IExecutor asyncExecutor;
+	private IExecutor syncExecutor;
+	private final Object executorLock = new Object();
+
+	private IExecutor getAsyncExecutor() {
+		synchronized (executorLock) {
+			if (asyncExecutor == null) {
+				IExecutor executor = Activator.getDefault().getExecutor(false);
+				asyncExecutor = (executor == null) ? new ThreadsExecutor() : executor;
+			}
+			return asyncExecutor;
+		}
+	}
+
+	private IExecutor getSyncExecutor() {
+		synchronized (executorLock) {
+			if (syncExecutor == null) {
+				IExecutor executor = Activator.getDefault().getExecutor(true);
+				syncExecutor = (executor == null) ? new ImmediateExecutor() : executor;
+			}
+			return syncExecutor;
+		}
+	}
+
 	/**
 	 * call the service synchronously.
 	 * 
@@ -106,8 +129,7 @@
 		for (int i = 0; i < formalParams.length; i++) {
 			formalParams[i] = call.getParameters()[i].getClass();
 		}
-		IExecutor executor = new ThreadsExecutor();
-		IFuture future = executor.execute(new IProgressRunnable() {
+		IFuture future = getSyncExecutor().execute(new IProgressRunnable() {
 			public Object run(IProgressMonitor monitor) throws Exception {
 				final Method method = ClassUtil.getMethod(service.getClass(), call.getMethod(), formalParams);
 				return method.invoke(service, parameters);
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/about.html b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/about.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/about.html
copy to providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties
index 4c4f98f..5bb55b7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/build.properties
@@ -1,5 +1,7 @@
 bin.includes = META-INF/,\
                .,\
                fragment.xml,\
-               plugin.properties
-src.includes = fragment.xml
+               plugin.properties,\
+               about.html
+src.includes = fragment.xml,\
+               about.html
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/about.html
similarity index 100%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
copy to providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties
index 08c1199..7c663ae 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/build.properties
@@ -3,5 +3,7 @@
 bin.includes = META-INF/,\
                .,\
                plugin.properties,\
-               fragment.xml
-src.includes = fragment.xml
+               fragment.xml,\
+               about.html
+src.includes = fragment.xml,\
+               about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java
index 99dac02..f85b693 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/Messages.java
@@ -1,84 +1,85 @@
-/*******************************************************************************
- * Copyright (c) 2004, 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.internal.provider.xmpp.ui;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.provider.xmpp.ui.messages"; //$NON-NLS-1$
-
-	public static String XMPPConnectWizardPage_WIZARD_TITLE;
-	public static String XMPPConnectWizardPage_WIZARD_DESCRIPTION;
-	public static String XMPPCompoundContributionItem_CHOOSE_FILE;
-	public static String XMPPConnectWizard_RECEIVE_ERROR_MESSAGE;
-
-	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE;
-
-	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE;
-
-	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE;
-
-	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE;
-
-	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE;
-
-	public static String XMPPHyperlink_MESSAGING_ERROR_MESSAGE;
-
-	public static String XMPPHyperlink_MESSAGING_ERROR_TITLE;
-
-	public static String XMPPHyperlink_SELECT_ACCOUNT_MESSAGE;
-
-	public static String XMPPHyperlink_SELECT_ACCOUNT_TITLE;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE;
-
-	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE;
-
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TITLE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_STATUS;
-	public static String XMPPConnectWizardPage_LABEL_USERID;
-	public static String XMPPConnectWizard_FILE_SAVE_TITLE;
-	public static String XMPPConnectWizardPage_WIZARD_STATUS;
-	public static String XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE;
-	public static String XMPPConnectWizardPage_USERID_TEMPLATE;
-	public static String XMPPConnectWizardPage_WIZARD_PASSWORD;
-	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER;
-	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT;
-	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE;
-	public static String XMPPConnectWizard_FILE_RECEIVE_TITLE;
-	public static String XMPPConnectWizard_FILE_RECEIVE_MESSAGE;
-	public static String XMPPCompoundContributionItem_SEND_FILE;
-	public static String XMPPConnectWizard_RECEIVE_ERROR_TITLE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION;
-	public static String XMPPCompoundContributionItem_SEND_ERROR_TITLE;
-	public static String XMPPCompoundContributionItem_SEND_ERROR_MESSAGE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE;
-	public static String XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD;
-	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE;
-	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE;
-
-	public static String XMPPConnectWizard_WIZARD_TITLE;
-	public static String XMPPSConnectWizard_WIZARD_TITLE;
-
-	private Messages() {
-	}
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
+/*******************************************************************************

+ * Copyright (c) 2004, 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.internal.provider.xmpp.ui;

+

+import org.eclipse.osgi.util.NLS;

+

+public class Messages extends NLS {

+	private static final String BUNDLE_NAME = "org.eclipse.ecf.internal.provider.xmpp.ui.messages"; //$NON-NLS-1$

+

+	public static String XMPPConnectWizardPage_WIZARD_TITLE;

+	public static String XMPPConnectWizardPage_WIZARD_DESCRIPTION;

+	public static String XMPPCompoundContributionItem_CHOOSE_FILE;

+	public static String XMPPConnectWizard_RECEIVE_ERROR_MESSAGE;

+

+	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE;

+

+	public static String XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE;

+

+	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE;

+

+	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE;

+

+	public static String XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE;

+

+	public static String XMPPHyperlink_MESSAGING_ERROR_MESSAGE;

+

+	public static String XMPPHyperlink_MESSAGING_ERROR_TITLE;

+

+	public static String XMPPHyperlink_SELECT_ACCOUNT_MESSAGE;

+

+	public static String XMPPHyperlink_SELECT_ACCOUNT_TITLE;

+

+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL;

+

+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT;

+

+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE;

+

+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE;

+

+	public static String XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE;

+

+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TITLE;

+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_STATUS;

+	public static String XMPPConnectWizardPage_LABEL_USERID;

+	public static String XMPPConnectWizard_FILE_SAVE_TITLE;

+	public static String XMPPConnectWizardPage_WIZARD_STATUS;

+	public static String XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE;

+	public static String XMPPConnectWizardPage_USERID_TEMPLATE;

+	public static String XMPPConnectWizardPage_WIZARD_PASSWORD;

+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD;

+	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER;

+	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT;

+	public static String XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE;

+	public static String XMPPConnectWizard_FILE_RECEIVE_TITLE;

+	public static String XMPPConnectWizard_FILE_RECEIVE_MESSAGE;

+	public static String XMPPCompoundContributionItem_SEND_FILE;

+	public static String XMPPConnectWizard_RECEIVE_ERROR_TITLE;

+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION;

+	public static String XMPPCompoundContributionItem_SEND_ERROR_TITLE;

+	public static String XMPPCompoundContributionItem_SEND_ERROR_MESSAGE;

+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE;

+	public static String XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD;

+	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE;

+	public static String XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE;

+

+	public static String XMPPConnectWizard_WIZARD_TITLE;

+	public static String XMPPSConnectWizard_WIZARD_TITLE;

+

+	private Messages() {

+	}

+

+	static {

+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties
index 1ea13a8..59dc50a 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/messages.properties
@@ -1,54 +1,55 @@
-################################################################################
-# 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
-################################################################################
-
-XMPPConnectWizardPage_WIZARD_TITLE=XMPP Connection Wizard
-XMPPConnectWizardPage_WIZARD_DESCRIPTION=Specify an XMPP account to connect to.
-XMPPCompoundContributionItem_CHOOSE_FILE=Choose File For {0}
-XMPPConnectWizard_RECEIVE_ERROR_MESSAGE=Error receiving file {0} from {1}.  Error: {2}
-XMPPSConnectWizardPage_WIZARD_PAGE_TITLE=XMPPS Connection Wizard
-XMPPSConnectWizardPage_WIZARD_PAGE_STATUS=A valid User ID must be specified.
-XMPPConnectWizardPage_LABEL_USERID=User ID:
-XMPPConnectWizard_FILE_SAVE_TITLE=Save File From {0}
-XMPPConnectWizardPage_WIZARD_STATUS=A valid connect ID must be specified.
-XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE=The User ID is malformed.
-XMPPConnectWizardPage_USERID_TEMPLATE=<user>@<xmppserver>[:port]
-XMPPConnectWizardPage_WIZARD_PASSWORD=Password:
-XMPPConnectWizardPage_WIZARD_ALT_SERVER=Alternative Server (optional):
-XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT=(use 'talk.google.com' if User ID is a Google for Domains account)
-XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE=The Alternative Server name is malformed.
-XMPPConnectWizard_FILE_RECEIVE_TITLE=File Receive Request From {0}
-XMPPConnectWizard_FILE_RECEIVE_MESSAGE=User {0} would like to send you a file called {1}\n\nThe size of the file is {2}\nDescription: {3}\n\nDo you want to receive this file?
-XMPPCompoundContributionItem_SEND_FILE=Send File
-XMPPConnectWizard_RECEIVE_ERROR_TITLE=Receive Error
-XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION=Specify an XMPPS account to connect to.
-XMPPCompoundContributionItem_SEND_ERROR_TITLE=Send Error
-XMPPCompoundContributionItem_SEND_ERROR_MESSAGE=Error sending file {0}.  Error: {1}
-XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE=<user>@<xmppsserver>[:port]
-XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD=Password:
-XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE=File Send Refused
-XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE=Error opening view
-XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT=Connect to Account
-XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL=Cancel
-XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE=You are not currently connected so messages cannot be sent.\n\nDo you want to connect and login to {0}?
-XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE=Error opening view: {0}.  See Error Log for Details
-XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE=Send of {0} refused by {1}
-XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE=Error opening messages view
-XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE=Send Message
-XMPPHyperlink_SELECT_ACCOUNT_TITLE=Select Account
-XMPPHyperlink_SELECT_ACCOUNT_MESSAGE=Select Account to Use
-XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE=Select Action
-XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE=The target host {0} is not the same as {1}.\n\nDo you want to:\n\n1) Send message to {2} from {3}?\n\n2) Connect and login to account {2}?
-XMPPHyperlink_MESSAGING_ERROR_TITLE=Messaging Error
-XMPPHyperlink_MESSAGING_ERROR_MESSAGE=You don't want to talk to yourself, do you?
-XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE=Connect To Account
-
-XMPPConnectWizard_WIZARD_TITLE=New XMPP Connection
-XMPPSConnectWizard_WIZARD_TITLE=New XMPPS Connection
+################################################################################

+# 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

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

+

+XMPPConnectWizardPage_WIZARD_TITLE=XMPP Connection Wizard

+XMPPConnectWizardPage_WIZARD_DESCRIPTION=Specify an XMPP account to connect to.

+XMPPCompoundContributionItem_CHOOSE_FILE=Choose File For {0}

+XMPPConnectWizard_RECEIVE_ERROR_MESSAGE=Error receiving file {0} from {1}.  Error: {2}

+XMPPSConnectWizardPage_WIZARD_PAGE_TITLE=XMPPS Connection Wizard

+XMPPSConnectWizardPage_WIZARD_PAGE_STATUS=A valid User ID must be specified.

+XMPPConnectWizardPage_LABEL_USERID=User ID:

+XMPPConnectWizard_FILE_SAVE_TITLE=Save File From {0}

+XMPPConnectWizardPage_WIZARD_STATUS=A valid connect ID must be specified.

+XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE=The User ID is malformed.

+XMPPConnectWizardPage_USERID_TEMPLATE=<user>@<xmppserver>[:port]

+XMPPConnectWizardPage_WIZARD_PASSWORD=Password:

+XMPPConnectWizardPage_WIZARD_ALT_SERVER=Alternative Server (optional):

+XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT=(use 'talk.google.com' if User ID is a Google for Domains account)

+XMPPConnectWizardPage_WIZARD_ALT_SERVER_INCOMPLETE=The Alternative Server name is malformed.

+XMPPConnectWizard_FILE_RECEIVE_TITLE=File Receive Request From {0}

+XMPPConnectWizard_FILE_RECEIVE_MESSAGE=User {0} would like to send you a file called {1}\n\nThe size of the file is {2}\nDescription: {3}\n\nDo you want to receive this file?

+XMPPCompoundContributionItem_SEND_FILE=Send File

+XMPPConnectWizard_RECEIVE_ERROR_TITLE=Receive Error

+XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION=Specify an XMPPS account to connect to.

+XMPPCompoundContributionItem_SEND_ERROR_TITLE=Send Error

+XMPPCompoundContributionItem_SEND_ERROR_MESSAGE=Error sending file {0}.  Error: {1}

+XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE=<user>@<xmppsserver>[:port]

+XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD=Password:

+XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD=Keystore Passphrase (optional):

+XMPPCompoundContributionItem_FILE_SEND_REFUSED_TITLE=File Send Refused

+XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_TITLE=Error opening view

+XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CONNECT=Connect to Account

+XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_CANCEL=Cancel

+XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_MESSAGE=You are not currently connected so messages cannot be sent.\n\nDo you want to connect and login to {0}?

+XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_DIALOG_MESSAGE=Error opening view: {0}.  See Error Log for Details

+XMPPCompoundContributionItem_FILE_SEND_REFUSED_MESSAGE=Send of {0} refused by {1}

+XMPPHyperlink_ERROR_OPEN_MESSAGE_VIEW_LOG_STATUS_MESSAGE=Error opening messages view

+XMPPHyperlink_SELECT_ACTION_DIALOG_BUTTON_SEND_MESSAGE=Send Message

+XMPPHyperlink_SELECT_ACCOUNT_TITLE=Select Account

+XMPPHyperlink_SELECT_ACCOUNT_MESSAGE=Select Account to Use

+XMPPHyperlink_SELECT_ACTION_DIALOG_TITLE=Select Action

+XMPPHyperlink_SELECT_ACTION_DIALOG_MESSAGE=The target host {0} is not the same as {1}.\n\nDo you want to:\n\n1) Send message to {2} from {3}?\n\n2) Connect and login to account {2}?

+XMPPHyperlink_MESSAGING_ERROR_TITLE=Messaging Error

+XMPPHyperlink_MESSAGING_ERROR_MESSAGE=You don't want to talk to yourself, do you?

+XMPPHyperlink_CONNECT_ACCOUNT_DIALOG_TITLE=Connect To Account

+

+XMPPConnectWizard_WIZARD_TITLE=New XMPP Connection

+XMPPSConnectWizard_WIZARD_TITLE=New XMPPS Connection

diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java
index 9bb2935..59782dd 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPConnectWizard.java
@@ -1,278 +1,324 @@
-/****************************************************************************
- * Copyright (c) 2007, 2009 Remy Suen, 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:
- *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
-
-import java.io.*;
-import org.eclipse.ecf.core.*;
-import org.eclipse.ecf.core.events.IContainerConnectedEvent;
-import org.eclipse.ecf.core.events.IContainerEvent;
-import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.core.security.ConnectContextFactory;
-import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.filetransfer.*;
-import org.eclipse.ecf.filetransfer.events.*;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Activator;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
-import org.eclipse.ecf.presence.*;
-import org.eclipse.ecf.presence.im.*;
-import org.eclipse.ecf.presence.ui.MessagesView;
-import org.eclipse.ecf.presence.ui.MultiRosterView;
-import org.eclipse.ecf.ui.IConnectWizard;
-import org.eclipse.ecf.ui.actions.AsynchContainerConnectAction;
-import org.eclipse.ecf.ui.dialogs.IDCreateErrorDialog;
-import org.eclipse.ecf.ui.util.PasswordCacheHelper;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-
-public class XMPPConnectWizard extends Wizard implements IConnectWizard, INewWizard {
-
-	XMPPConnectWizardPage page;
-
-	private Shell shell;
-
-	//private IContainer container;
-	protected IContainer container;
-
-	private ID targetID;
-
-	private IConnectContext connectContext;
-
-	protected String usernameAtHost;
-
-	public XMPPConnectWizard() {
-		super();
-	}
-
-	public XMPPConnectWizard(String usernameAtHost) {
-		this();
-		this.usernameAtHost = usernameAtHost;
-	}
-
-	protected IIncomingFileTransferRequestListener requestListener = new IIncomingFileTransferRequestListener() {
-		public void handleFileTransferRequest(final IFileTransferRequestEvent event) {
-			Display.getDefault().asyncExec(new Runnable() {
-				public void run() {
-					final String username = event.getRequesterID().getName();
-					final IFileTransferInfo transferInfo = event.getFileTransferInfo();
-					final String fileName = transferInfo.getFile().getName();
-					final Object[] bindings = new Object[] {username, fileName, ((transferInfo.getFileSize() == -1) ? "unknown" //$NON-NLS-1$
-							: (transferInfo.getFileSize() + " bytes")), //$NON-NLS-1$
-							(transferInfo.getDescription() == null) ? "none" //$NON-NLS-1$
-									: transferInfo.getDescription()};
-					if (MessageDialog.openQuestion(shell, NLS.bind(Messages.XMPPConnectWizard_FILE_RECEIVE_TITLE, username), NLS.bind(Messages.XMPPConnectWizard_FILE_RECEIVE_MESSAGE, bindings))) {
-						final FileDialog fd = new FileDialog(shell, SWT.OPEN);
-						// XXX this should be some default path gotten from
-						// preference. For now we'll have it be the user.home
-						// system property
-						fd.setFilterPath(System.getProperty("user.home")); //$NON-NLS-1$
-						fd.setFileName(fileName);
-						final int suffixLoc = fileName.lastIndexOf('.');
-						if (suffixLoc != -1) {
-							final String ext = fileName.substring(fileName.lastIndexOf('.'));
-							fd.setFilterExtensions(new String[] {ext});
-						}
-						fd.setText(NLS.bind(Messages.XMPPConnectWizard_FILE_SAVE_TITLE, username));
-						final String res = fd.open();
-						if (res == null)
-							event.reject();
-						else {
-							try {
-								final FileOutputStream fos = new FileOutputStream(new File(res));
-								event.accept(fos, new IFileTransferListener() {
-									public void handleTransferEvent(IFileTransferEvent event) {
-										// XXX Should have some some UI
-										// for transfer events
-										if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
-											try {
-												fos.close();
-											} catch (final IOException e) {
-											}
-										}
-									}
-								});
-							} catch (final Exception e) {
-								MessageDialog.openError(shell, Messages.XMPPConnectWizard_RECEIVE_ERROR_TITLE, NLS.bind(Messages.XMPPConnectWizard_RECEIVE_ERROR_MESSAGE, new Object[] {fileName, username, e.getLocalizedMessage()}));
-							}
-						}
-					} else
-						event.reject();
-				}
-			});
-		}
-
-	};
-
-	public void addPages() {
-		page = new XMPPConnectWizardPage(usernameAtHost);
-		addPage(page);
-	}
-
-	public void init(IWorkbench workbench, IContainer container) {
-		shell = workbench.getActiveWorkbenchWindow().getShell();
-		this.container = container;
-		this.workbench = workbench;
-
-		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);
-	}
-
-	public void init(IWorkbench workbench, IStructuredSelection selection) {
-		shell = workbench.getActiveWorkbenchWindow().getShell();
-		this.workbench = workbench;
-		this.container = null;
-		try {
-			this.container = ContainerFactory.getDefault().createContainer("ecf.xmpp.smack");
-		} catch (final ContainerCreateException e) {
-			// None
-		}
-
-		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);
-	}
-
-	private IWorkbench workbench;
-	private IChatMessageSender icms;
-	private ITypingMessageSender itms;
-
-	private void openView() {
-		try {
-			final MultiRosterView view = (MultiRosterView) workbench.getActiveWorkbenchWindow().getActivePage().showView(MultiRosterView.VIEW_ID);
-			view.addContainer(container);
-		} catch (final PartInitException e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void displayMessage(IChatMessageEvent e) {
-		final IChatMessage message = e.getChatMessage();
-		Display.getDefault().asyncExec(new Runnable() {
-			public void run() {
-				MessagesView view = (MessagesView) workbench.getActiveWorkbenchWindow().getActivePage().findView(MessagesView.VIEW_ID);
-				if (view != null) {
-					final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view.getSite().getAdapter(IWorkbenchSiteProgressService.class);
-					view.openTab(icms, itms, targetID, message.getFromID());
-					view.showMessage(message);
-					service.warnOfContentChange();
-				} else {
-					try {
-
-						final IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
-						view = (MessagesView) page.showView(MessagesView.VIEW_ID, null, IWorkbenchPage.VIEW_CREATE);
-						if (!page.isPartVisible(view)) {
-							final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view.getSite().getAdapter(IWorkbenchSiteProgressService.class);
-							service.warnOfContentChange();
-						}
-						view.openTab(icms, itms, targetID, message.getFromID());
-						view.showMessage(message);
-					} catch (final PartInitException e) {
-						e.printStackTrace();
-					}
-				}
-			}
-		});
-	}
-
-	private void displayTypingNotification(final ITypingMessageEvent e) {
-		Display.getDefault().asyncExec(new Runnable() {
-			public void run() {
-				final MessagesView view = (MessagesView) workbench.getActiveWorkbenchWindow().getActivePage().findView(MessagesView.VIEW_ID);
-				if (view != null)
-					view.displayTypingNotification(e);
-			}
-		});
-	}
-
-	public boolean performCancel() {
-		if (container != null) {
-			container.dispose();
-
-			IContainerManager containerManager = Activator.getDefault()
-					.getContainerManager();
-			if (containerManager != null) {
-				containerManager.removeContainer(container);
-			}
-		}
-
-		return super.performCancel();
-	}
-
-	public boolean performFinish() {
-
-		final String connectID = page.getConnectID();
-		final String password = page.getPassword();
-
-		// Save combo text even if we don't successfully login
-		page.saveComboText();
-
-		connectContext = ConnectContextFactory.createPasswordConnectContext(password);
-
-		try {
-			targetID = IDFactory.getDefault().createID(container.getConnectNamespace(), connectID);
-		} catch (final IDCreateException e) {
-			new IDCreateErrorDialog(null, connectID, e).open();
-			return false;
-		}
-
-		// Save combo items if targetID created successfully
-		page.saveComboItems();
-
-		final IPresenceContainerAdapter adapter = (IPresenceContainerAdapter) container.getAdapter(IPresenceContainerAdapter.class);
-
-		container.addListener(new IContainerListener() {
-			public void handleEvent(IContainerEvent event) {
-				if (event instanceof IContainerConnectedEvent) {
-					Display.getDefault().asyncExec(new Runnable() {
-						public void run() {
-							openView();
-						}
-					});
-				}
-			}
-		});
-
-		final IChatManager icm = adapter.getChatManager();
-		icms = icm.getChatMessageSender();
-		itms = icm.getTypingMessageSender();
-
-		icm.addMessageListener(new IIMMessageListener() {
-			public void handleMessageEvent(IIMMessageEvent e) {
-				if (e instanceof IChatMessageEvent) {
-					displayMessage((IChatMessageEvent) e);
-				} else if (e instanceof ITypingMessageEvent) {
-					displayTypingNotification((ITypingMessageEvent) e);
-				}
-			}
-		});
-
-		final ISendFileTransferContainerAdapter ioftca = (ISendFileTransferContainerAdapter) container.getAdapter(ISendFileTransferContainerAdapter.class);
-		ioftca.addListener(requestListener);
-		// Connect
-		new AsynchContainerConnectAction(container, targetID, connectContext, null, new Runnable() {
-			public void run() {
-				cachePassword(connectID, password);
-			}
-		}).run();
-
-		return true;
-	}
-
-	protected void cachePassword(final String connectID, String password) {
-		if (password != null && !password.equals("")) {
-			final PasswordCacheHelper pwStorage = new PasswordCacheHelper(connectID);
-			pwStorage.savePassword(password);
-		}
-	}
-
-}
+/****************************************************************************

+ * Copyright (c) 2007, 2009 Remy Suen, 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:

+ *    Remy Suen <remy.suen@gmail.com> - initial API and implementation

+ *****************************************************************************/

+package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;

+

+import java.io.*;

+import org.eclipse.ecf.core.*;

+import org.eclipse.ecf.core.events.IContainerConnectedEvent;

+import org.eclipse.ecf.core.events.IContainerEvent;

+import org.eclipse.ecf.core.identity.*;

+import org.eclipse.ecf.core.security.ConnectContextFactory;

+import org.eclipse.ecf.core.security.IConnectContext;

+import org.eclipse.ecf.filetransfer.*;

+import org.eclipse.ecf.filetransfer.events.*;

+import org.eclipse.ecf.internal.provider.xmpp.ui.Activator;

+import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;

+import org.eclipse.ecf.presence.*;

+import org.eclipse.ecf.presence.im.*;

+import org.eclipse.ecf.presence.ui.MessagesView;

+import org.eclipse.ecf.presence.ui.MultiRosterView;

+import org.eclipse.ecf.ui.IConnectWizard;

+import org.eclipse.ecf.ui.actions.AsynchContainerConnectAction;

+import org.eclipse.ecf.ui.dialogs.IDCreateErrorDialog;

+import org.eclipse.ecf.ui.util.PasswordCacheHelper;

+import org.eclipse.jface.dialogs.MessageDialog;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.jface.wizard.Wizard;

+import org.eclipse.osgi.util.NLS;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.widgets.*;

+import org.eclipse.ui.*;

+import org.eclipse.ui.progress.IWorkbenchSiteProgressService;

+

+public class XMPPConnectWizard extends Wizard implements IConnectWizard,

+		INewWizard {

+

+	XMPPConnectWizardPage page;

+

+	private Shell shell;

+

+	// private IContainer container;

+	protected IContainer container;

+

+	private ID targetID;

+

+	private IConnectContext connectContext;

+

+	protected String usernameAtHost;

+

+	public XMPPConnectWizard() {

+		super();

+	}

+

+	public XMPPConnectWizard(String usernameAtHost) {

+		this();

+		this.usernameAtHost = usernameAtHost;

+	}

+

+	protected IIncomingFileTransferRequestListener requestListener = new IIncomingFileTransferRequestListener() {

+		public void handleFileTransferRequest(

+				final IFileTransferRequestEvent event) {

+			Display.getDefault().asyncExec(new Runnable() {

+				public void run() {

+					final String username = event.getRequesterID().getName();

+					final IFileTransferInfo transferInfo = event

+							.getFileTransferInfo();

+					final String fileName = transferInfo.getFile().getName();

+					final Object[] bindings = new Object[] { username,

+							fileName,

+							((transferInfo.getFileSize() == -1) ? "unknown" //$NON-NLS-1$

+									: (transferInfo.getFileSize() + " bytes")), //$NON-NLS-1$

+							(transferInfo.getDescription() == null) ? "none" //$NON-NLS-1$

+									: transferInfo.getDescription() };

+					if (MessageDialog.openQuestion(shell, NLS.bind(

+							Messages.XMPPConnectWizard_FILE_RECEIVE_TITLE,

+							username), NLS.bind(

+							Messages.XMPPConnectWizard_FILE_RECEIVE_MESSAGE,

+							bindings))) {

+						final FileDialog fd = new FileDialog(shell, SWT.OPEN);

+						// XXX this should be some default path gotten from

+						// preference. For now we'll have it be the user.home

+						// system property

+						fd.setFilterPath(System.getProperty("user.home")); //$NON-NLS-1$

+						fd.setFileName(fileName);

+						final int suffixLoc = fileName.lastIndexOf('.');

+						if (suffixLoc != -1) {

+							final String ext = fileName.substring(fileName

+									.lastIndexOf('.'));

+							fd.setFilterExtensions(new String[] { ext });

+						}

+						fd.setText(NLS.bind(

+								Messages.XMPPConnectWizard_FILE_SAVE_TITLE,

+								username));

+						final String res = fd.open();

+						if (res == null)

+							event.reject();

+						else {

+							try {

+								final FileOutputStream fos = new FileOutputStream(

+										new File(res));

+								event.accept(fos, new IFileTransferListener() {

+									public void handleTransferEvent(

+											IFileTransferEvent event) {

+										// XXX Should have some some UI

+										// for transfer events

+										if (event instanceof IIncomingFileTransferReceiveDoneEvent) {

+											try {

+												fos.close();

+											} catch (final IOException e) {

+											}

+										}

+									}

+								});

+							} catch (final Exception e) {

+								MessageDialog

+										.openError(

+												shell,

+												Messages.XMPPConnectWizard_RECEIVE_ERROR_TITLE,

+												NLS.bind(

+														Messages.XMPPConnectWizard_RECEIVE_ERROR_MESSAGE,

+														new Object[] {

+																fileName,

+																username,

+																e.getLocalizedMessage() }));

+							}

+						}

+					} else

+						event.reject();

+				}

+			});

+		}

+

+	};

+

+	public void addPages() {

+		page = new XMPPConnectWizardPage(usernameAtHost);

+		addPage(page);

+	}

+

+	public void init(IWorkbench workbench, IContainer container) {

+		shell = workbench.getActiveWorkbenchWindow().getShell();

+		this.container = container;

+		this.workbench = workbench;

+

+		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);

+	}

+

+	public void init(IWorkbench workbench, IStructuredSelection selection) {

+		shell = workbench.getActiveWorkbenchWindow().getShell();

+		this.workbench = workbench;

+		this.container = null;

+		try {

+			this.container = ContainerFactory.getDefault().createContainer(

+					"ecf.xmpp.smack");

+		} catch (final ContainerCreateException e) {

+			// None

+		}

+

+		setWindowTitle(Messages.XMPPConnectWizard_WIZARD_TITLE);

+	}

+

+	private IWorkbench workbench;

+	private IChatMessageSender icms;

+	private ITypingMessageSender itms;

+

+	private void openView() {

+		try {

+			final MultiRosterView view = (MultiRosterView) workbench

+					.getActiveWorkbenchWindow().getActivePage()

+					.showView(MultiRosterView.VIEW_ID);

+			view.addContainer(container);

+		} catch (final PartInitException e) {

+			e.printStackTrace();

+		}

+	}

+

+	private void displayMessage(IChatMessageEvent e) {

+		final IChatMessage message = e.getChatMessage();

+		Display.getDefault().asyncExec(new Runnable() {

+			public void run() {

+				MessagesView view = (MessagesView) workbench

+						.getActiveWorkbenchWindow().getActivePage()

+						.findView(MessagesView.VIEW_ID);

+				if (view != null) {

+					final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view

+							.getSite().getAdapter(

+									IWorkbenchSiteProgressService.class);

+					view.openTab(icms, itms, targetID, message.getFromID());

+					view.showMessage(message);

+					service.warnOfContentChange();

+				} else {

+					try {

+

+						final IWorkbenchPage page = workbench

+								.getActiveWorkbenchWindow().getActivePage();

+						view = (MessagesView) page.showView(

+								MessagesView.VIEW_ID, null,

+								IWorkbenchPage.VIEW_CREATE);

+						if (!page.isPartVisible(view)) {

+							final IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) view

+									.getSite()

+									.getAdapter(

+											IWorkbenchSiteProgressService.class);

+							service.warnOfContentChange();

+						}

+						view.openTab(icms, itms, targetID, message.getFromID());

+						view.showMessage(message);

+					} catch (final PartInitException e) {

+						e.printStackTrace();

+					}

+				}

+			}

+		});

+	}

+

+	private void displayTypingNotification(final ITypingMessageEvent e) {

+		Display.getDefault().asyncExec(new Runnable() {

+			public void run() {

+				final MessagesView view = (MessagesView) workbench

+						.getActiveWorkbenchWindow().getActivePage()

+						.findView(MessagesView.VIEW_ID);

+				if (view != null)

+					view.displayTypingNotification(e);

+			}

+		});

+	}

+

+	public boolean performCancel() {

+		if (container != null) {

+			container.dispose();

+

+			IContainerManager containerManager = Activator.getDefault()

+					.getContainerManager();

+			if (containerManager != null) {

+				containerManager.removeContainer(container);

+			}

+		}

+

+		return super.performCancel();

+	}

+

+	public boolean performFinish() {

+		final String connectID = page.getConnectID();

+		final String password = page.getPassword();

+

+		// Save combo text even if we don't successfully login

+		page.saveComboText();

+

+		connectContext = createConnectContext();

+

+		try {

+			targetID = IDFactory.getDefault().createID(

+					container.getConnectNamespace(), connectID);

+		} catch (final IDCreateException e) {

+			new IDCreateErrorDialog(null, connectID, e).open();

+			return false;

+		}

+

+		// Save combo items if targetID created successfully

+		page.saveComboItems();

+

+		final IPresenceContainerAdapter adapter = (IPresenceContainerAdapter) container

+				.getAdapter(IPresenceContainerAdapter.class);

+

+		container.addListener(new IContainerListener() {

+			public void handleEvent(IContainerEvent event) {

+				if (event instanceof IContainerConnectedEvent) {

+					Display.getDefault().asyncExec(new Runnable() {

+						public void run() {

+							openView();

+						}

+					});

+				}

+			}

+		});

+

+		final IChatManager icm = adapter.getChatManager();

+		icms = icm.getChatMessageSender();

+		itms = icm.getTypingMessageSender();

+

+		icm.addMessageListener(new IIMMessageListener() {

+			public void handleMessageEvent(IIMMessageEvent e) {

+				if (e instanceof IChatMessageEvent) {

+					displayMessage((IChatMessageEvent) e);

+				} else if (e instanceof ITypingMessageEvent) {

+					displayTypingNotification((ITypingMessageEvent) e);

+				}

+			}

+		});

+

+		final ISendFileTransferContainerAdapter ioftca = (ISendFileTransferContainerAdapter) container

+				.getAdapter(ISendFileTransferContainerAdapter.class);

+		ioftca.addListener(requestListener);

+		// Connect

+		new AsynchContainerConnectAction(container, targetID, connectContext,

+				null, new Runnable() {

+					public void run() {

+						cachePassword(connectID, password);

+					}

+				}).run();

+

+		return true;

+	}

+

+	protected void cachePassword(final String connectID, String password) {

+		if (password != null && !password.equals("")) {

+			final PasswordCacheHelper pwStorage = new PasswordCacheHelper(

+					connectID);

+			pwStorage.savePassword(password);

+		}

+	}

+

+	protected IConnectContext createConnectContext() {

+		return ConnectContextFactory.createPasswordConnectContext(page

+				.getPassword());

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java
index 16e792c..c58b941 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizard.java
@@ -1,52 +1,117 @@
-/****************************************************************************
- * Copyright (c) 2007 Remy Suen, 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:
- *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
-
-import org.eclipse.ecf.core.ContainerCreateException;
-import org.eclipse.ecf.core.ContainerFactory;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbench;
-
-
-public final class XMPPSConnectWizard extends XMPPConnectWizard {
-
-	public XMPPSConnectWizard() {
-		super();
-	}
-	
-	public XMPPSConnectWizard(String uri) {
-		super(uri);
-	}
-	
-	public void addPages() {
-		page = new XMPPSConnectWizardPage(usernameAtHost);
-		addPage(page);
-	}
-
-	public void init(IWorkbench workbench, IContainer container) {
-		super.init(workbench, container);
-
-		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);
-	}
-
-	public void init(IWorkbench workbench, IStructuredSelection selection) {
-		super.init(workbench, selection);
-		try {
-			this.container = ContainerFactory.getDefault().createContainer("ecf.xmpps.smack");
-		} catch (ContainerCreateException e) {
-			// None
-		}
-
-		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);
-	}
-}
+/****************************************************************************

+ * Copyright (c) 2007 Remy Suen, 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:

+ *    Remy Suen <remy.suen@gmail.com> - initial API and implementation

+ *****************************************************************************/

+package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;

+

+import java.io.IOException;

+import javax.security.auth.callback.Callback;

+import javax.security.auth.callback.UnsupportedCallbackException;

+import org.eclipse.ecf.core.*;

+import org.eclipse.ecf.core.security.*;

+import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;

+import org.eclipse.jface.viewers.IStructuredSelection;

+import org.eclipse.ui.IWorkbench;

+

+public final class XMPPSConnectWizard extends XMPPConnectWizard {

+

+	public XMPPSConnectWizard() {

+		super();

+	}

+

+	public XMPPSConnectWizard(String uri) {

+		super(uri);

+	}

+

+	public void addPages() {

+		page = new XMPPSConnectWizardPage(usernameAtHost);

+		addPage(page);

+	}

+

+	public void init(IWorkbench workbench, IContainer container) {

+		super.init(workbench, container);

+

+		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);

+	}

+

+	public void init(IWorkbench workbench, IStructuredSelection selection) {

+		super.init(workbench, selection);

+		try {

+			this.container = ContainerFactory.getDefault().createContainer(

+					"ecf.xmpps.smack");

+		} catch (ContainerCreateException e) {

+			// None

+		}

+

+		setWindowTitle(Messages.XMPPSConnectWizard_WIZARD_TITLE);

+	}

+

+	protected IConnectContext createConnectContext() {

+		// Extract passwords from page prior to widget disposal:

+		final String password = page.getPassword();

+		final String keystorePassword = ((XMPPSConnectWizardPage) page)

+				.getKeystorePassword();

+

+		// Use a context capable of both ECF and javax.security Callback:

+		return new IConnectContext() {

+			public CallbackHandler getCallbackHandler() {

+				return new DualCallbackHandler(password, keystorePassword);

+			}

+		};

+	}

+

+	/**

+	 * <p>

+	 * Wrapper class for handling both ECF and javax.security Callback needs.

+	 * Will delegate ECF Callback to a handler created by

+	 * {@link ConnectContextFactory}.

+	 * </p>

+	 * <p>

+	 * Currently only handles

+	 * {@link javax.security.auth.callback.PasswordCallback} for javax.security

+	 * Callback for XMPPConnection class from org.jivesoftware.smack.

+	 * </p>

+	 * 

+	 * @author T. Yueh

+	 */

+	class DualCallbackHandler implements CallbackHandler,

+			javax.security.auth.callback.CallbackHandler {

+		/**

+		 * Handler for all ECF Callback.

+		 */

+		CallbackHandler delegate;

+

+		/**

+		 * User input for keystore password. Since keystore impl (PKI vs JKS vs

+		 * etc) is hidden via interface, all that is necessary is a password.

+		 */

+		String keystorePassword;

+

+		public DualCallbackHandler(String password, String keystorePassword) {

+			delegate = ConnectContextFactory.createPasswordConnectContext(

+					password).getCallbackHandler();

+			this.keystorePassword = keystorePassword;

+		}

+

+		public void handle(Callback[] acallback) throws IOException,

+				UnsupportedCallbackException {

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

+				if (acallback[i] instanceof PasswordCallback)

+					((javax.security.auth.callback.PasswordCallback) acallback[i])

+							.setPassword(keystorePassword.toCharArray());

+

+		}

+

+		public void handle(org.eclipse.ecf.core.security.Callback[] callbacks)

+				throws IOException,

+				org.eclipse.ecf.core.security.UnsupportedCallbackException {

+			delegate.handle(callbacks);

+		}

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java
index 0d91872..fbbccc0 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.ui/src/org/eclipse/ecf/internal/provider/xmpp/ui/wizards/XMPPSConnectWizardPage.java
@@ -1,133 +1,144 @@
-/****************************************************************************
- * Copyright (c) 2007 Remy Suen, 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:
- *    Remy Suen <remy.suen@gmail.com> - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;
-
-import java.util.regex.Matcher;
-import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-
-final class XMPPSConnectWizardPage extends XMPPConnectWizardPage {
-
-	XMPPSConnectWizardPage() {
-		super();
-		setTitle(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TITLE);
-		setDescription(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION);
-		setPageComplete(false);
-	}
-
-	XMPPSConnectWizardPage(String usernameAtHost) {
-		this();
-		this.usernameAtHost = usernameAtHost;
-	}
-
-	private void verify() {
-		final String text = connectText.getText();
-		if (text.equals("")) { //$NON-NLS-1$
-			updateStatus(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_STATUS);
-		} else {
-			final Matcher matcher = emailPattern.matcher(text);
-			if (!matcher.matches()) {
-				updateStatus(Messages.XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE);
-			} else {
-				restorePassword(text);
-				updateStatus(null);
-			}
-		}
-	}
-
-	public void createControl(Composite parent) {
-
-		parent = new Composite(parent, SWT.NONE);
-
-		parent.setLayout(new GridLayout());
-		final GridData fillData = new GridData(SWT.FILL, SWT.CENTER, true,
-				false);
-		final GridData endData = new GridData(SWT.FILL, SWT.CENTER, true,
-				false, 2, 1);
-
-		Label label = new Label(parent, SWT.LEFT);
-		label.setText(Messages.XMPPConnectWizardPage_LABEL_USERID);
-
-		connectText = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.DROP_DOWN);
-		connectText.setLayoutData(fillData);
-		connectText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				verify();
-			}
-		});
-		connectText.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-				verify();
-			}
-
-			public void widgetSelected(SelectionEvent e) {
-				verify();
-			}
-		});
-
-		label = new Label(parent, SWT.RIGHT);
-		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE);
-		label.setLayoutData(endData);
-
-		label = new Label(parent, SWT.LEFT);
-		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER);
-
-		serverText = new Text(parent, SWT.SINGLE | SWT.BORDER);
-		serverText.setLayoutData(fillData);
-		serverText.addModifyListener(new ModifyListener() {
-			public void modifyText(ModifyEvent e) {
-				verify();
-			}
-		});
-		serverText.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-				verify();
-			}
-
-			public void widgetSelected(SelectionEvent e) {
-				verify();
-			}
-		});
-
-		label = new Label(parent, SWT.RIGHT);
-		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT);
-		label.setLayoutData(endData);
-
-		label = new Label(parent, SWT.LEFT);
-		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD);
-		passwordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER);
-		passwordText.setLayoutData(fillData);
-
-		restoreCombo();
-
-		if (usernameAtHost != null) {
-			connectText.setText(usernameAtHost);
-			restorePassword(usernameAtHost);
-			passwordText.setFocus();
-		}
-
-		verify();
-
-		if (connectText.getText().equals("")) {
-			updateStatus(null);
-			setPageComplete(false);
-		} else if (isPageComplete())
-			passwordText.setFocus();
-
-		org.eclipse.jface.dialogs.Dialog.applyDialogFont(parent);
-		setControl(parent);
-	}
-
-}
+/****************************************************************************

+ * Copyright (c) 2007 Remy Suen, 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:

+ *    Remy Suen <remy.suen@gmail.com> - initial API and implementation

+ *****************************************************************************/

+package org.eclipse.ecf.internal.provider.xmpp.ui.wizards;

+

+import java.util.regex.Matcher;

+import org.eclipse.ecf.internal.provider.xmpp.ui.Messages;

+import org.eclipse.swt.SWT;

+import org.eclipse.swt.events.*;

+import org.eclipse.swt.layout.GridData;

+import org.eclipse.swt.layout.GridLayout;

+import org.eclipse.swt.widgets.*;

+

+final class XMPPSConnectWizardPage extends XMPPConnectWizardPage {

+

+	private Text keystorePasswordText;

+

+	XMPPSConnectWizardPage() {

+		super();

+		setTitle(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TITLE);

+		setDescription(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_DESCRIPTION);

+		setPageComplete(false);

+	}

+

+	XMPPSConnectWizardPage(String usernameAtHost) {

+		this();

+		this.usernameAtHost = usernameAtHost;

+	}

+

+	private void verify() {

+		final String text = connectText.getText();

+		if (text.equals("")) { //$NON-NLS-1$

+			updateStatus(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_STATUS);

+		} else {

+			final Matcher matcher = emailPattern.matcher(text);

+			if (!matcher.matches()) {

+				updateStatus(Messages.XMPPConnectWizardPage_WIZARD_STATUS_INCOMPLETE);

+			} else {

+				restorePassword(text);

+				updateStatus(null);

+			}

+		}

+	}

+

+	public void createControl(Composite parent) {

+

+		parent = new Composite(parent, SWT.NONE);

+

+		parent.setLayout(new GridLayout());

+		final GridData fillData = new GridData(SWT.FILL, SWT.CENTER, true,

+				false);

+		final GridData endData = new GridData(SWT.FILL, SWT.CENTER, true,

+				false, 2, 1);

+

+		Label label = new Label(parent, SWT.LEFT);

+		label.setText(Messages.XMPPConnectWizardPage_LABEL_USERID);

+

+		connectText = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.DROP_DOWN);

+		connectText.setLayoutData(fillData);

+		connectText.addModifyListener(new ModifyListener() {

+			public void modifyText(ModifyEvent e) {

+				verify();

+			}

+		});

+		connectText.addSelectionListener(new SelectionListener() {

+			public void widgetDefaultSelected(SelectionEvent e) {

+				verify();

+			}

+

+			public void widgetSelected(SelectionEvent e) {

+				verify();

+			}

+		});

+

+		label = new Label(parent, SWT.RIGHT);

+		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_TEMPLATE);

+		label.setLayoutData(endData);

+

+		label = new Label(parent, SWT.LEFT);

+		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER);

+

+		serverText = new Text(parent, SWT.SINGLE | SWT.BORDER);

+		serverText.setLayoutData(fillData);

+		serverText.addModifyListener(new ModifyListener() {

+			public void modifyText(ModifyEvent e) {

+				verify();

+			}

+		});

+		serverText.addSelectionListener(new SelectionListener() {

+			public void widgetDefaultSelected(SelectionEvent e) {

+				verify();

+			}

+

+			public void widgetSelected(SelectionEvent e) {

+				verify();

+			}

+		});

+

+		label = new Label(parent, SWT.RIGHT);

+		label.setText(Messages.XMPPConnectWizardPage_WIZARD_ALT_SERVER_TEXT);

+		label.setLayoutData(endData);

+

+		label = new Label(parent, SWT.LEFT);

+		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_PASSWORD);

+		passwordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER);

+		passwordText.setLayoutData(fillData);

+

+		restoreCombo();

+

+		label = new Label(parent, SWT.LEFT);

+		label.setText(Messages.XMPPSConnectWizardPage_WIZARD_PAGE_KEYSTORE_PASSWORD);

+		keystorePasswordText = new Text(parent, SWT.SINGLE | SWT.PASSWORD

+				| SWT.BORDER);

+		keystorePasswordText.setLayoutData(fillData);

+

+		if (usernameAtHost != null) {

+			connectText.setText(usernameAtHost);

+			restorePassword(usernameAtHost);

+			passwordText.setFocus();

+		}

+

+		verify();

+

+		if (connectText.getText().equals("")) {

+			updateStatus(null);

+			setPageComplete(false);

+		} else if (isPageComplete())

+			passwordText.setFocus();

+

+		org.eclipse.jface.dialogs.Dialog.applyDialogFont(parent);

+		setControl(parent);

+	}

+

+	String getKeystorePassword() {

+		return keystorePasswordText.getText();

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java
index 65525f7..620938d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnection.java
@@ -1,508 +1,522 @@
-/*******************************************************************************
- * 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
- ******************************************************************************/
-package org.eclipse.ecf.internal.provider.xmpp.smack;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.ecf.core.ContainerConnectException;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.core.util.ECFException;
-import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;
-import org.eclipse.ecf.provider.comm.DisconnectEvent;
-import org.eclipse.ecf.provider.comm.IAsynchEventHandler;
-import org.eclipse.ecf.provider.comm.IConnectionListener;
-import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;
-import org.eclipse.ecf.provider.xmpp.identity.XMPPID;
-import org.eclipse.ecf.provider.xmpp.identity.XMPPRoomID;
-import org.jivesoftware.smack.Chat;
-import org.jivesoftware.smack.ConnectionConfiguration;
-import org.jivesoftware.smack.ConnectionListener;
-import org.jivesoftware.smack.MessageListener;
-import org.jivesoftware.smack.PacketListener;
-import org.jivesoftware.smack.Roster;
-import org.jivesoftware.smack.RosterEntry;
-import org.jivesoftware.smack.SASLAuthentication;
-import org.jivesoftware.smack.SmackConfiguration;
-import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.packet.Bind;
-import org.jivesoftware.smack.packet.IQ;
-import org.jivesoftware.smack.packet.Message;
-import org.jivesoftware.smack.packet.Message.Type;
-import org.jivesoftware.smack.packet.Packet;
-import org.jivesoftware.smack.packet.Presence;
-
-public class ECFConnection implements ISynchAsynchConnection {
-
-	/**
-	 * 
-	 */
-	private static final String GOOGLE_TALK_HOST = "talk.google.com";
-	public static final String CLIENT_TYPE = "ecf.";
-	public static final boolean DEBUG = Boolean.getBoolean("smack.debug");
-
-	protected static final String STRING_ENCODING = "UTF-8";
-	public static final String OBJECT_PROPERTY_NAME = ECFConnection.class
-			.getName() + ".object";
-	protected static final int XMPP_DEFAULT_PORT = 5222;
-	protected static final int XMPPS_DEFAULT_PORT = 5223;
-
-	private XMPPConnection connection = null;
-	private IAsynchEventHandler handler = null;
-	private boolean isStarted = false;
-	private int serverPort = -1;
-	private String serverResource;
-	private final Map properties = null;
-	private boolean isConnected = false;
-	private Namespace namespace = null;
-
-	private boolean google = false;
-
-	private boolean disconnecting = false;
-
-	private int BIND_TIMEOUT = new Integer(System.getProperty(
-			"org.eclipse.ecf.provider.xmpp.ECFConnection.bindTimeout", "15000"))
-			.intValue();
-
-	private Object bindLock = new Object();
-
-	private String jid;
-
-	private final PacketListener packetListener = new PacketListener() {
-		public void processPacket(Packet arg0) {
-			handlePacket(arg0);
-		}
-	};
-
-	private final ConnectionListener connectionListener = new ConnectionListener() {
-		public void connectionClosed() {
-			handleConnectionClosed(new IOException("Connection reset by peer"));
-		}
-
-		public void connectionClosedOnError(Exception e) {
-			handleConnectionClosed(e);
-		}
-
-		public void reconnectingIn(int seconds) {
-		}
-
-		public void reconnectionFailed(Exception e) {
-		}
-
-		public void reconnectionSuccessful() {
-		}
-	};
-
-	protected void logException(String msg, Throwable t) {
-		XmppPlugin.log(msg, t);
-	}
-
-	public Map getProperties() {
-		return properties;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	public Object getAdapter(Class adapter) {
-		if (adapter == null)
-			return null;
-		if (adapter.isInstance(this))
-			return this;
-		final IAdapterManager adapterManager = XmppPlugin.getDefault()
-				.getAdapterManager();
-		return (adapterManager == null) ? null : adapterManager.loadAdapter(
-				this, adapter.getName());
-	}
-
-	public XMPPConnection getXMPPConnection() {
-		return connection;
-	}
-
-	public ECFConnection(boolean google, Namespace ns, IAsynchEventHandler h) {
-		this.handler = h;
-		this.namespace = ns;
-		this.google = google;
-		if (DEBUG)
-			XMPPConnection.DEBUG_ENABLED = true;
-	}
-
-	protected String getPasswordForObject(Object data) {
-		String password = null;
-		try {
-			password = (String) data;
-		} catch (final ClassCastException e) {
-			return null;
-		}
-		return password;
-	}
-
-	private XMPPID getXMPPID(ID remote) throws ECFException {
-		XMPPID jabberID = null;
-		try {
-			jabberID = (XMPPID) remote;
-		} catch (final ClassCastException e) {
-			throw new ECFException(e);
-		}
-		return jabberID;
-	}
-
-	public synchronized Object connect(ID remote, Object data, int timeout)
-			throws ECFException {
-		if (connection != null)
-			throw new ECFException("already connected");
-		if (timeout > 0)
-			SmackConfiguration.setPacketReplyTimeout(timeout);
-		Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);
-
-		final XMPPID jabberURI = getXMPPID(remote);
-
-		String username = jabberURI.getNodename();
-		String hostname = jabberURI.getHostname();
-		String hostnameOverride = null;
-
-		// Check for the URI form of "joe@bloggs.org;talk.google.com", which
-		// would at this point would have
-		// - username = "joe"
-		// - hostname = "blogs.org;talk.google.com"
-		// - hostnameOverride = null
-		//
-		// We need to turn this into:
-		// - username = "joe"
-		// - hostname = "bloggs.org"
-		// - hostnameOverride = "talk.google.com"
-
-		int semiColonIdx = hostname.lastIndexOf(';');
-		if (semiColonIdx != -1) {
-			hostnameOverride = hostname.substring(semiColonIdx + 1);
-			hostname = hostname.substring(0, semiColonIdx);
-		}
-
-		if (google && hostnameOverride == null) {
-			hostnameOverride = GOOGLE_TALK_HOST;
-		}
-		final String serviceName = hostname;
-
-		serverPort = jabberURI.getPort();
-		serverResource = jabberURI.getResourceName();
-		if (serverResource == null
-				|| serverResource.equals(XMPPID.PATH_DELIMITER)) {
-			serverResource = getClientIdentifier();
-			jabberURI.setResourceName(serverResource);
-		}
-		try {
-			ConnectionConfiguration config;
-			if (hostnameOverride != null) {
-				config = new ConnectionConfiguration(hostnameOverride,
-						XMPP_DEFAULT_PORT, serviceName);
-			} else if (serverPort == -1) {
-				config = new ConnectionConfiguration(serviceName);
-			} else {
-				config = new ConnectionConfiguration(serviceName, serverPort);
-			}
-			config.setSendPresence(true);
-			connection = new XMPPConnection(config);
-			connection.connect();
-
-			SASLAuthentication.supportSASLMechanism("PLAIN", 0);
-
-			if (google || GOOGLE_TALK_HOST.equals(hostnameOverride)) {
-				username = username + "@" + serviceName;
-			}
-
-			connection.addPacketListener(packetListener, null);
-			connection.addConnectionListener(connectionListener);
-
-			// Login
-			connection.login(username, (String) data, serverResource);
-
-			waitForBindResult();
-
-		} catch (final XMPPException e) {
-			throw new ContainerConnectException("Login attempt failed", e);
-		}
-		return jid;
-	}
-
-	private void waitForBindResult() throws XMPPException {
-		// We'll wait a maximum of
-		long bindTimeout = System.currentTimeMillis() + BIND_TIMEOUT;
-		synchronized (bindLock) {
-			while (jid == null && System.currentTimeMillis() < bindTimeout) {
-				try {
-					bindLock.wait(1000);
-				} catch (InterruptedException e) {
-				}
-			}
-			if (jid == null)
-				throw new XMPPException(
-						"timeout waiting for server bind result");
-			isConnected = true;
-		}
-	}
-
-	private String getClientIdentifier() {
-		return CLIENT_TYPE + handler.getEventHandlerID().getName();
-	}
-
-	public void sendPacket(Packet packet) throws XMPPException {
-		if (connection != null)
-			connection.sendPacket(packet);
-	}
-
-	public synchronized void disconnect() {
-		disconnecting = true;
-		if (isStarted()) {
-			stop();
-		}
-		if (connection != null) {
-			connection.removePacketListener(packetListener);
-			connection.removeConnectionListener(connectionListener);
-			connection.disconnect();
-			connection = null;
-			synchronized (bindLock) {
-				jid = null;
-				isConnected = false;
-			}
-		}
-	}
-
-	public synchronized boolean isConnected() {
-		return (isConnected);
-	}
-
-	public synchronized ID getLocalID() {
-		if (!isConnected())
-			return null;
-		try {
-			return IDFactory.getDefault().createID(namespace.getName(),
-					new Object[] { connection.getConnectionID() });
-		} catch (final Exception e) {
-			logException("Exception in getLocalID", e);
-			return null;
-		}
-	}
-
-	public synchronized void start() {
-		if (isStarted())
-			return;
-		isStarted = true;
-	}
-
-	public boolean isStarted() {
-		return isStarted;
-	}
-
-	public synchronized void stop() {
-		isStarted = false;
-	}
-
-	protected void handleConnectionClosed(Exception e) {
-		if (!disconnecting) {
-			disconnecting = true;
-			handler.handleDisconnectEvent(new DisconnectEvent(this, e, null));
-		}
-	}
-
-	protected void handlePacket(Packet arg0) {
-		handleJidPacket(arg0);
-		try {
-			final Object val = arg0.getProperty(OBJECT_PROPERTY_NAME);
-			if (val != null) {
-				handler.handleAsynchEvent(new ECFConnectionObjectPacketEvent(
-						this, arg0, val));
-			} else {
-				handler.handleAsynchEvent(new ECFConnectionPacketEvent(this,
-						arg0));
-			}
-		} catch (final IOException e) {
-			logException("Exception in handleAsynchEvent", e);
-			try {
-				disconnect();
-			} catch (final Exception e1) {
-				logException("Exception in disconnect()", e1);
-			}
-		}
-	}
-
-	private void handleJidPacket(Packet packet) {
-		if (jid != null)
-			return;
-		if (packet instanceof IQ) {
-			IQ iqPacket = (IQ) packet;
-			if (iqPacket.getType().equals(IQ.Type.RESULT)
-					&& iqPacket instanceof Bind) {
-				Bind bindPacket = (Bind) iqPacket;
-				synchronized (bindLock) {
-					jid = bindPacket.getJid();
-					bindLock.notify();
-				}
-			}
-		}
-	}
-
-	public synchronized void sendAsynch(ID receiver, byte[] data)
-			throws IOException {
-		if (data == null)
-			throw new IOException("no data");
-		final Message aMsg = new Message();
-		aMsg.setProperty(OBJECT_PROPERTY_NAME, data);
-		sendMessage(receiver, aMsg);
-	}
-
-	protected void sendMessage(ID receiver, Message aMsg) throws IOException {
-		synchronized (this) {
-			if (!isConnected())
-				throw new IOException("not connected");
-			try {
-				if (receiver == null)
-					throw new IOException(
-							"receiver cannot be null for xmpp instant messaging");
-				else if (receiver instanceof XMPPID) {
-					final XMPPID rcvr = (XMPPID) receiver;
-					aMsg.setType(Message.Type.chat);
-					final String receiverName = rcvr.getFQName();
-					final Chat localChat = connection.getChatManager()
-							.createChat(receiverName, new MessageListener() {
-								public void processMessage(Chat chat,
-										Message message) {
-								}
-							});
-					localChat.sendMessage(aMsg);
-				} else if (receiver instanceof XMPPRoomID) {
-					final XMPPRoomID roomID = (XMPPRoomID) receiver;
-					aMsg.setType(Message.Type.groupchat);
-					final String to = roomID.getMucString();
-					aMsg.setTo(to);
-					connection.sendPacket(aMsg);
-				} else
-					throw new IOException(
-							"receiver must be of type XMPPID or XMPPRoomID");
-			} catch (final XMPPException e) {
-				final IOException result = new IOException(
-						"XMPPException in sendMessage: " + e.getMessage());
-				result.setStackTrace(e.getStackTrace());
-				throw result;
-			}
-		}
-	}
-
-	public synchronized Object sendSynch(ID receiver, byte[] data)
-			throws IOException {
-		if (data == null)
-			throw new IOException("data cannot be null");
-		// This is assumed to be disconnect...so we'll just disconnect
-		// disconnect();
-		return null;
-	}
-
-	public void addListener(IConnectionListener listener) {
-		// XXX Not yet implemented
-	}
-
-	public void removeListener(IConnectionListener listener) {
-		// XXX Not yet implemented
-	}
-
-	public void sendMessage(ID target, String message) throws IOException {
-		if (target == null)
-			throw new IOException("target cannot be null");
-		if (message == null)
-			throw new IOException("message cannot be null");
-		final Message aMsg = new Message();
-		aMsg.setBody(message);
-		sendMessage(target, aMsg);
-	}
-
-	public static Map getPropertiesFromPacket(Packet packet) {
-		final Map result = new HashMap();
-		final Iterator i = packet.getPropertyNames().iterator();
-		for (; i.hasNext();) {
-			final String name = (String) i.next();
-			result.put(name, packet.getProperty(name));
-		}
-		return result;
-	}
-
-	public static Packet setPropertiesInPacket(Packet input, Map properties) {
-		if (properties != null) {
-			for (final Iterator i = properties.keySet().iterator(); i.hasNext();) {
-				final Object keyo = i.next();
-				final Object val = properties.get(keyo);
-				final String key = (keyo instanceof String) ? (String) keyo
-						: keyo.toString();
-				input.setProperty(key, val);
-			}
-		}
-		return input;
-	}
-
-	public void sendMessage(ID target, ID thread, Type type, String subject,
-			String body, Map properties2) throws IOException {
-		if (target == null)
-			throw new IOException("XMPP target for message cannot be null");
-		if (body == null)
-			body = "";
-		final Message aMsg = new Message();
-		aMsg.setBody(body);
-		if (thread != null)
-			aMsg.setThread(thread.getName());
-		if (type != null)
-			aMsg.setType(type);
-		if (subject != null)
-			aMsg.setSubject(subject);
-		setPropertiesInPacket(aMsg, properties2);
-		sendMessage(target, aMsg);
-	}
-
-	public void sendPresenceUpdate(ID target, Presence presence)
-			throws IOException {
-		if (presence == null)
-			throw new IOException("presence cannot be null");
-		presence.setFrom(connection.getUser());
-		if (target != null)
-			presence.setTo(target.getName());
-		synchronized (this) {
-			if (!isConnected())
-				throw new IOException("not connected");
-			connection.sendPacket(presence);
-		}
-	}
-
-	public void sendRosterAdd(String user, String name, String[] groups)
-			throws IOException, XMPPException {
-		final Roster r = getRoster();
-		r.createEntry(user, name, groups);
-	}
-
-	public void sendRosterRemove(String user) throws XMPPException, IOException {
-		final Roster r = getRoster();
-		final RosterEntry re = r.getEntry(user);
-		r.removeEntry(re);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ecf.provider.xmpp.IIMMessageSender#getRoster()
-	 */
-	public Roster getRoster() throws IOException {
-		if (connection == null || !connection.isConnected())
-			return null;
-		return connection.getRoster();
-	}
-
-}
+/*******************************************************************************

+ * 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

+ ******************************************************************************/

+package org.eclipse.ecf.internal.provider.xmpp.smack;

+

+import java.io.IOException;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.Map;

+import org.eclipse.core.runtime.IAdapterManager;

+import org.eclipse.ecf.core.ContainerConnectException;

+import org.eclipse.ecf.core.identity.ID;

+import org.eclipse.ecf.core.identity.IDFactory;

+import org.eclipse.ecf.core.identity.Namespace;

+import org.eclipse.ecf.core.security.CallbackHandler;

+import org.eclipse.ecf.core.util.ECFException;

+import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;

+import org.eclipse.ecf.provider.comm.DisconnectEvent;

+import org.eclipse.ecf.provider.comm.IAsynchEventHandler;

+import org.eclipse.ecf.provider.comm.IConnectionListener;

+import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;

+import org.eclipse.ecf.provider.xmpp.identity.XMPPID;

+import org.eclipse.ecf.provider.xmpp.identity.XMPPRoomID;

+import org.jivesoftware.smack.Chat;

+import org.jivesoftware.smack.ConnectionConfiguration;

+import org.jivesoftware.smack.ConnectionListener;

+import org.jivesoftware.smack.MessageListener;

+import org.jivesoftware.smack.PacketListener;

+import org.jivesoftware.smack.Roster;

+import org.jivesoftware.smack.RosterEntry;

+import org.jivesoftware.smack.SASLAuthentication;

+import org.jivesoftware.smack.SmackConfiguration;

+import org.jivesoftware.smack.XMPPConnection;

+import org.jivesoftware.smack.XMPPException;

+import org.jivesoftware.smack.packet.Bind;

+import org.jivesoftware.smack.packet.IQ;

+import org.jivesoftware.smack.packet.Message;

+import org.jivesoftware.smack.packet.Message.Type;

+import org.jivesoftware.smack.packet.Packet;

+import org.jivesoftware.smack.packet.Presence;

+

+public class ECFConnection implements ISynchAsynchConnection {

+

+	/**

+	 * 

+	 */

+	private static final String GOOGLE_TALK_HOST = "talk.google.com";

+	public static final String CLIENT_TYPE = "ecf.";

+	public static final boolean DEBUG = Boolean.getBoolean("smack.debug");

+

+	protected static final String STRING_ENCODING = "UTF-8";

+	public static final String OBJECT_PROPERTY_NAME = ECFConnection.class

+			.getName() + ".object";

+	protected static final int XMPP_DEFAULT_PORT = 5222;

+	protected static final int XMPPS_DEFAULT_PORT = 5223;

+

+	private XMPPConnection connection = null;

+	private IAsynchEventHandler handler = null;

+	private boolean isStarted = false;

+	private int serverPort = -1;

+	private String serverResource;

+	private final Map properties = null;

+	private boolean isConnected = false;

+	private Namespace namespace = null;

+

+	private boolean google = false;

+

+	private boolean disconnecting = false;

+

+	private int BIND_TIMEOUT = new Integer(System.getProperty(

+			"org.eclipse.ecf.provider.xmpp.ECFConnection.bindTimeout", "15000"))

+			.intValue();

+

+	private Object bindLock = new Object();

+

+	private String jid;

+

+	private CallbackHandler callbackHandler;

+

+	private final PacketListener packetListener = new PacketListener() {

+		public void processPacket(Packet arg0) {

+			handlePacket(arg0);

+		}

+	};

+

+	private final ConnectionListener connectionListener = new ConnectionListener() {

+		public void connectionClosed() {

+			handleConnectionClosed(new IOException("Connection reset by peer"));

+		}

+

+		public void connectionClosedOnError(Exception e) {

+			handleConnectionClosed(e);

+		}

+

+		public void reconnectingIn(int seconds) {

+		}

+

+		public void reconnectionFailed(Exception e) {

+		}

+

+		public void reconnectionSuccessful() {

+		}

+	};

+

+	protected void logException(String msg, Throwable t) {

+		XmppPlugin.log(msg, t);

+	}

+

+	public Map getProperties() {

+		return properties;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)

+	 */

+	public Object getAdapter(Class adapter) {

+		if (adapter == null)

+			return null;

+		if (adapter.isInstance(this))

+			return this;

+		final IAdapterManager adapterManager = XmppPlugin.getDefault()

+				.getAdapterManager();

+		return (adapterManager == null) ? null : adapterManager.loadAdapter(

+				this, adapter.getName());

+	}

+

+	public XMPPConnection getXMPPConnection() {

+		return connection;

+	}

+

+	public ECFConnection(boolean google, Namespace ns, IAsynchEventHandler h) {

+		this(google, ns, h, null);

+	}

+

+	public ECFConnection(boolean google, Namespace ns, IAsynchEventHandler h,

+			CallbackHandler ch) {

+		this.handler = h;

+		this.namespace = ns;

+		this.google = google;

+		this.callbackHandler = ch;

+		if (DEBUG)

+			XMPPConnection.DEBUG_ENABLED = true;

+	}

+

+	protected String getPasswordForObject(Object data) {

+		String password = null;

+		try {

+			password = (String) data;

+		} catch (final ClassCastException e) {

+			return null;

+		}

+		return password;

+	}

+

+	private XMPPID getXMPPID(ID remote) throws ECFException {

+		XMPPID jabberID = null;

+		try {

+			jabberID = (XMPPID) remote;

+		} catch (final ClassCastException e) {

+			throw new ECFException(e);

+		}

+		return jabberID;

+	}

+

+	public synchronized Object connect(ID remote, Object data, int timeout)

+			throws ECFException {

+		if (connection != null)

+			throw new ECFException("already connected");

+		if (timeout > 0)

+			SmackConfiguration.setPacketReplyTimeout(timeout);

+		Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);

+

+		final XMPPID jabberURI = getXMPPID(remote);

+

+		String username = jabberURI.getNodename();

+		String hostname = jabberURI.getHostname();

+		String hostnameOverride = null;

+

+		// Check for the URI form of "joe@bloggs.org;talk.google.com", which

+		// would at this point would have

+		// - username = "joe"

+		// - hostname = "blogs.org;talk.google.com"

+		// - hostnameOverride = null

+		//

+		// We need to turn this into:

+		// - username = "joe"

+		// - hostname = "bloggs.org"

+		// - hostnameOverride = "talk.google.com"

+

+		int semiColonIdx = hostname.lastIndexOf(';');

+		if (semiColonIdx != -1) {

+			hostnameOverride = hostname.substring(semiColonIdx + 1);

+			hostname = hostname.substring(0, semiColonIdx);

+		}

+

+		if (google && hostnameOverride == null) {

+			hostnameOverride = GOOGLE_TALK_HOST;

+		}

+		final String serviceName = hostname;

+

+		serverPort = jabberURI.getPort();

+		serverResource = jabberURI.getResourceName();

+		if (serverResource == null

+				|| serverResource.equals(XMPPID.PATH_DELIMITER)) {

+			serverResource = getClientIdentifier();

+			jabberURI.setResourceName(serverResource);

+		}

+		try {

+			ConnectionConfiguration config;

+			if (hostnameOverride != null) {

+				config = new ConnectionConfiguration(hostnameOverride,

+						XMPP_DEFAULT_PORT, serviceName);

+			} else if (serverPort == -1) {

+				config = new ConnectionConfiguration(serviceName);

+			} else {

+				config = new ConnectionConfiguration(serviceName, serverPort);

+			}

+			config.setSendPresence(true);

+			// Handler is only used if server requires certificate for

+			// authentication; handler should provide keystore password:

+			if (callbackHandler instanceof javax.security.auth.callback.CallbackHandler) {

+				config.setCallbackHandler((javax.security.auth.callback.CallbackHandler) callbackHandler);

+			}

+			connection = new XMPPConnection(config);

+			connection.connect();

+

+			SASLAuthentication.supportSASLMechanism("PLAIN", 0);

+

+			if (google || GOOGLE_TALK_HOST.equals(hostnameOverride)) {

+				username = username + "@" + serviceName;

+			}

+

+			connection.addPacketListener(packetListener, null);

+			connection.addConnectionListener(connectionListener);

+

+			// Login

+			connection.login(username, (String) data, serverResource);

+

+			waitForBindResult();

+

+		} catch (final XMPPException e) {

+			throw new ContainerConnectException("Login attempt failed", e);

+		}

+		return jid;

+	}

+

+	private void waitForBindResult() throws XMPPException {

+		// We'll wait a maximum of

+		long bindTimeout = System.currentTimeMillis() + BIND_TIMEOUT;

+		synchronized (bindLock) {

+			while (jid == null && System.currentTimeMillis() < bindTimeout) {

+				try {

+					bindLock.wait(1000);

+				} catch (InterruptedException e) {

+				}

+			}

+			if (jid == null)

+				throw new XMPPException(

+						"timeout waiting for server bind result");

+			isConnected = true;

+		}

+	}

+

+	private String getClientIdentifier() {

+		return CLIENT_TYPE + handler.getEventHandlerID().getName();

+	}

+

+	public void sendPacket(Packet packet) throws XMPPException {

+		if (connection != null)

+			connection.sendPacket(packet);

+	}

+

+	public synchronized void disconnect() {

+		disconnecting = true;

+		if (isStarted()) {

+			stop();

+		}

+		if (connection != null) {

+			connection.removePacketListener(packetListener);

+			connection.removeConnectionListener(connectionListener);

+			connection.disconnect();

+			connection = null;

+			synchronized (bindLock) {

+				jid = null;

+				isConnected = false;

+			}

+		}

+	}

+

+	public synchronized boolean isConnected() {

+		return (isConnected);

+	}

+

+	public synchronized ID getLocalID() {

+		if (!isConnected())

+			return null;

+		try {

+			return IDFactory.getDefault().createID(namespace.getName(),

+					new Object[] { connection.getConnectionID() });

+		} catch (final Exception e) {

+			logException("Exception in getLocalID", e);

+			return null;

+		}

+	}

+

+	public synchronized void start() {

+		if (isStarted())

+			return;

+		isStarted = true;

+	}

+

+	public boolean isStarted() {

+		return isStarted;

+	}

+

+	public synchronized void stop() {

+		isStarted = false;

+	}

+

+	protected void handleConnectionClosed(Exception e) {

+		if (!disconnecting) {

+			disconnecting = true;

+			handler.handleDisconnectEvent(new DisconnectEvent(this, e, null));

+		}

+	}

+

+	protected void handlePacket(Packet arg0) {

+		handleJidPacket(arg0);

+		try {

+			final Object val = arg0.getProperty(OBJECT_PROPERTY_NAME);

+			if (val != null) {

+				handler.handleAsynchEvent(new ECFConnectionObjectPacketEvent(

+						this, arg0, val));

+			} else {

+				handler.handleAsynchEvent(new ECFConnectionPacketEvent(this,

+						arg0));

+			}

+		} catch (final IOException e) {

+			logException("Exception in handleAsynchEvent", e);

+			try {

+				disconnect();

+			} catch (final Exception e1) {

+				logException("Exception in disconnect()", e1);

+			}

+		}

+	}

+

+	private void handleJidPacket(Packet packet) {

+		if (jid != null)

+			return;

+		if (packet instanceof IQ) {

+			IQ iqPacket = (IQ) packet;

+			if (iqPacket.getType().equals(IQ.Type.RESULT)

+					&& iqPacket instanceof Bind) {

+				Bind bindPacket = (Bind) iqPacket;

+				synchronized (bindLock) {

+					jid = bindPacket.getJid();

+					bindLock.notify();

+				}

+			}

+		}

+	}

+

+	public synchronized void sendAsynch(ID receiver, byte[] data)

+			throws IOException {

+		if (data == null)

+			throw new IOException("no data");

+		final Message aMsg = new Message();

+		aMsg.setProperty(OBJECT_PROPERTY_NAME, data);

+		sendMessage(receiver, aMsg);

+	}

+

+	protected void sendMessage(ID receiver, Message aMsg) throws IOException {

+		synchronized (this) {

+			if (!isConnected())

+				throw new IOException("not connected");

+			try {

+				if (receiver == null)

+					throw new IOException(

+							"receiver cannot be null for xmpp instant messaging");

+				else if (receiver instanceof XMPPID) {

+					final XMPPID rcvr = (XMPPID) receiver;

+					aMsg.setType(Message.Type.chat);

+					final String receiverName = rcvr.getFQName();

+					final Chat localChat = connection.getChatManager()

+							.createChat(receiverName, new MessageListener() {

+								public void processMessage(Chat chat,

+										Message message) {

+								}

+							});

+					localChat.sendMessage(aMsg);

+				} else if (receiver instanceof XMPPRoomID) {

+					final XMPPRoomID roomID = (XMPPRoomID) receiver;

+					aMsg.setType(Message.Type.groupchat);

+					final String to = roomID.getMucString();

+					aMsg.setTo(to);

+					connection.sendPacket(aMsg);

+				} else

+					throw new IOException(

+							"receiver must be of type XMPPID or XMPPRoomID");

+			} catch (final XMPPException e) {

+				final IOException result = new IOException(

+						"XMPPException in sendMessage: " + e.getMessage());

+				result.setStackTrace(e.getStackTrace());

+				throw result;

+			}

+		}

+	}

+

+	public synchronized Object sendSynch(ID receiver, byte[] data)

+			throws IOException {

+		if (data == null)

+			throw new IOException("data cannot be null");

+		// This is assumed to be disconnect...so we'll just disconnect

+		// disconnect();

+		return null;

+	}

+

+	public void addListener(IConnectionListener listener) {

+		// XXX Not yet implemented

+	}

+

+	public void removeListener(IConnectionListener listener) {

+		// XXX Not yet implemented

+	}

+

+	public void sendMessage(ID target, String message) throws IOException {

+		if (target == null)

+			throw new IOException("target cannot be null");

+		if (message == null)

+			throw new IOException("message cannot be null");

+		final Message aMsg = new Message();

+		aMsg.setBody(message);

+		sendMessage(target, aMsg);

+	}

+

+	public static Map getPropertiesFromPacket(Packet packet) {

+		final Map result = new HashMap();

+		final Iterator i = packet.getPropertyNames().iterator();

+		for (; i.hasNext();) {

+			final String name = (String) i.next();

+			result.put(name, packet.getProperty(name));

+		}

+		return result;

+	}

+

+	public static Packet setPropertiesInPacket(Packet input, Map properties) {

+		if (properties != null) {

+			for (final Iterator i = properties.keySet().iterator(); i.hasNext();) {

+				final Object keyo = i.next();

+				final Object val = properties.get(keyo);

+				final String key = (keyo instanceof String) ? (String) keyo

+						: keyo.toString();

+				input.setProperty(key, val);

+			}

+		}

+		return input;

+	}

+

+	public void sendMessage(ID target, ID thread, Type type, String subject,

+			String body, Map properties2) throws IOException {

+		if (target == null)

+			throw new IOException("XMPP target for message cannot be null");

+		if (body == null)

+			body = "";

+		final Message aMsg = new Message();

+		aMsg.setBody(body);

+		if (thread != null)

+			aMsg.setThread(thread.getName());

+		if (type != null)

+			aMsg.setType(type);

+		if (subject != null)

+			aMsg.setSubject(subject);

+		setPropertiesInPacket(aMsg, properties2);

+		sendMessage(target, aMsg);

+	}

+

+	public void sendPresenceUpdate(ID target, Presence presence)

+			throws IOException {

+		if (presence == null)

+			throw new IOException("presence cannot be null");

+		presence.setFrom(connection.getUser());

+		if (target != null)

+			presence.setTo(target.getName());

+		synchronized (this) {

+			if (!isConnected())

+				throw new IOException("not connected");

+			connection.sendPacket(presence);

+		}

+	}

+

+	public void sendRosterAdd(String user, String name, String[] groups)

+			throws IOException, XMPPException {

+		final Roster r = getRoster();

+		r.createEntry(user, name, groups);

+	}

+

+	public void sendRosterRemove(String user) throws XMPPException, IOException {

+		final Roster r = getRoster();

+		final RosterEntry re = r.getEntry(user);

+		r.removeEntry(re);

+	}

+

+	/*

+	 * (non-Javadoc)

+	 * 

+	 * @see org.eclipse.ecf.provider.xmpp.IIMMessageSender#getRoster()

+	 */

+	public Roster getRoster() throws IOException {

+		if (connection == null || !connection.isConnected())

+			return null;

+		return connection.getRoster();

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java
index 498fbb3..ffe2741 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/XMPPSContainer.java
@@ -1,54 +1,58 @@
-/****************************************************************************
- * 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
- *****************************************************************************/
-package org.eclipse.ecf.provider.xmpp;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;
-import org.eclipse.ecf.internal.provider.xmpp.smack.ECFConnection;
-import org.eclipse.ecf.provider.comm.ConnectionCreateException;
-import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;
-
-public class XMPPSContainer extends XMPPContainer {
-	public XMPPSContainer() throws Exception {
-		super();
-	}
-
-	/**
-	 * @param ka
-	 * @throws Exception
-	 */
-	public XMPPSContainer(int ka) throws Exception {
-		super(ka);
-	}
-
-	/**
-	 * @param userhost
-	 * @param ka
-	 * @throws Exception
-	 */
-	public XMPPSContainer(String userhost, int ka) throws Exception {
-		super(userhost, ka);
-	}
-
-	public Namespace getConnectNamespace() {
-		return IDFactory.getDefault().getNamespaceByName(
-				XmppPlugin.getDefault().getSecureNamespaceIdentifier());
-	}
-
-	protected ISynchAsynchConnection createConnection(ID remoteSpace,
-			Object data) throws ConnectionCreateException {
-		boolean google = isGoogle(remoteSpace);
-		return new ECFConnection(google, getConnectNamespace(), receiver);
-	}
-
-}
+/****************************************************************************

+ * 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

+ *****************************************************************************/

+package org.eclipse.ecf.provider.xmpp;

+

+import org.eclipse.ecf.core.identity.ID;

+import org.eclipse.ecf.core.identity.IDFactory;

+import org.eclipse.ecf.core.identity.Namespace;

+import org.eclipse.ecf.core.security.CallbackHandler;

+import org.eclipse.ecf.core.security.IConnectContext;

+import org.eclipse.ecf.internal.provider.xmpp.XmppPlugin;

+import org.eclipse.ecf.internal.provider.xmpp.smack.ECFConnection;

+import org.eclipse.ecf.provider.comm.ConnectionCreateException;

+import org.eclipse.ecf.provider.comm.ISynchAsynchConnection;

+

+public class XMPPSContainer extends XMPPContainer {

+	public XMPPSContainer() throws Exception {

+		super();

+	}

+

+	/**

+	 * @param ka

+	 * @throws Exception

+	 */

+	public XMPPSContainer(int ka) throws Exception {

+		super(ka);

+	}

+

+	/**

+	 * @param userhost

+	 * @param ka

+	 * @throws Exception

+	 */

+	public XMPPSContainer(String userhost, int ka) throws Exception {

+		super(userhost, ka);

+	}

+

+	public Namespace getConnectNamespace() {

+		return IDFactory.getDefault().getNamespaceByName(

+				XmppPlugin.getDefault().getSecureNamespaceIdentifier());

+	}

+

+	protected ISynchAsynchConnection createConnection(ID remoteSpace,

+			Object data) throws ConnectionCreateException {

+		boolean google = isGoogle(remoteSpace);

+		CallbackHandler ch = data instanceof IConnectContext ? ((IConnectContext) data)

+				.getCallbackHandler() : null;

+		return new ECFConnection(google, getConnectNamespace(), receiver, ch);

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java
index dc128bb..637d963 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java
@@ -1,116 +1,121 @@
-/*******************************************************************************
- *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
- *  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:
- *     Wim Jongman - initial API and implementation   
- *     Ahmed Aadel - initial API and implementation     
- *******************************************************************************/
-package org.eclipse.ecf.provider.zookeeper;
-
-import java.util.Dictionary;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
-import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
-import org.eclipse.ecf.discovery.IDiscoveryLocator;
-import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;
-import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator;
-import org.eclipse.ecf.provider.zookeeper.core.internal.BundleStoppingListener;
-import org.eclipse.ecf.provider.zookeeper.util.Logger;
-import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
-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;
-
-public class DiscoveryActivator implements BundleActivator {
-
-	private static BundleContext context;
-	private ServiceRegistration discoveryRegistration;
-	private static Set<BundleStoppingListener> stopListeners = new HashSet<BundleStoppingListener>();
-	private ServiceTracker confTracker, logServiceTraker;
-
-	public void start(final BundleContext ctxt) {
-		context = ctxt;
-		//spawn asynchronously to avoid deadlocks during OSGi bundle startup
-		new Thread(new Runnable() {
-			public void run() {
-				startup(ctxt);
-			}
-		}).start();
-	}
-
-	private void startup(final BundleContext ctxt) {
-		Properties props = new Properties();
-		props.put(IDiscoveryLocator.CONTAINER_NAME,
-				ZooDiscoveryContainerInstantiator.NAME);
-		props.put(IDiscoveryAdvertiser.CONTAINER_NAME,
-				ZooDiscoveryContainerInstantiator.NAME);
-		/*
-		 * Make us available as IDiscoveryLocator and IDiscoveryAdvertiser
-		 * services for OSGi trackers
-		 */
-		discoveryRegistration = ctxt.registerService(new String[] {
-				IDiscoveryLocator.class.getName(),
-				IDiscoveryAdvertiser.class.getName() }, ZooDiscoveryContainer
-				.getSingleton(), (Dictionary) props);
-		ZooDiscoveryContainer.getSingleton().setDiscoveryProperties(props);
-
-		// track OSGi log services
-		DiscoveryActivator.this.logServiceTraker = new ServiceTracker(ctxt,
-				org.osgi.service.log.LogService.class.getName(), null) {
-			public Object addingService(ServiceReference reference) {
-				Logger.bindLogService((LogService) context
-						.getService(reference));
-				return super.addingService(reference);
-			}
-
-			public void removedService(ServiceReference reference,
-					Object service) {
-				Logger.unbindLogService((LogService) service);
-				removedService(reference, service);
-				super.removedService(reference, service); 
-			}
-		};
-		logServiceTraker.open(true);
-	}
-
-	public void stop(BundleContext c) throws Exception {
-		dispose();
-		// prompt we'r gone!
-		PrettyPrinter.prompt(PrettyPrinter.DEACTIVATED, null);
-	}
-
-	private void dispose() {
-		for (BundleStoppingListener l : stopListeners) {
-			l.bundleStopping();
-		}
-		stopListeners.clear();
-		ZooDiscoveryContainer.getSingleton().shutdown();
-		if (this.discoveryRegistration != null) {
-			this.discoveryRegistration.unregister();
-		}
-		if (this.confTracker != null) {
-			this.confTracker.close();
-		}
-		// Initiates an orderly shutdown of all our cached threads
-		ZooDiscoveryContainer.CACHED_THREAD_POOL.shutdown();
-
-	}
-
-	public static BundleContext getContext() {
-		return context;
-	}
-
-	public static void registerBundleStoppingListner(BundleStoppingListener l) {
-		stopListeners.add(l);
-	}
-
-}
+/*******************************************************************************

+ *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).

+ *  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:

+ *     Wim Jongman - initial API and implementation   

+ *     Ahmed Aadel - initial API and implementation     

+ *******************************************************************************/

+package org.eclipse.ecf.provider.zookeeper;

+

+import java.util.Dictionary;

+import java.util.HashSet;

+import java.util.Properties;

+import java.util.Set;

+

+import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;

+import org.eclipse.ecf.discovery.IDiscoveryLocator;

+import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;

+import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator;

+import org.eclipse.ecf.provider.zookeeper.core.internal.BundleStoppingListener;

+import org.eclipse.ecf.provider.zookeeper.util.Logger;

+import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;

+import org.osgi.framework.Bundle;

+import org.osgi.framework.BundleActivator;

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.ServiceFactory;

+import org.osgi.framework.ServiceReference;

+import org.osgi.framework.ServiceRegistration;

+import org.osgi.service.log.LogService;

+import org.osgi.util.tracker.ServiceTracker;

+

+public class DiscoveryActivator implements BundleActivator {

+

+	private static BundleContext context;

+	private ServiceRegistration discoveryRegistration;

+	private static Set<BundleStoppingListener> stopListeners = new HashSet<BundleStoppingListener>();

+	private ServiceTracker confTracker, logServiceTracker;

+

+	public void start(final BundleContext ctxt) {

+		context = ctxt;

+		

+		final Properties props = new Properties();

+		props.put(IDiscoveryLocator.CONTAINER_NAME,

+				ZooDiscoveryContainerInstantiator.NAME);

+		props.put(IDiscoveryAdvertiser.CONTAINER_NAME,

+				ZooDiscoveryContainerInstantiator.NAME);

+		// register ourselves using a service factory 

+		discoveryRegistration = ctxt.registerService(new String[] {

+				IDiscoveryLocator.class.getName(),

+				IDiscoveryAdvertiser.class.getName() }, new ServiceFactory() {

+					private volatile ZooDiscoveryContainer zdc;

+					

+					public Object getService(Bundle bundle,

+							ServiceRegistration registration) {

+						if (zdc == null) {

+							zdc = ZooDiscoveryContainer.getSingleton();

+							zdc.setDiscoveryProperties(props);

+						}

+						return zdc;

+					}

+

+					public void ungetService(Bundle bundle,

+							ServiceRegistration registration, Object service) {

+		                //TODO-slewis we later might want to dispose zoodiscovery when the last!!! consumer ungets the service

+		                //Though don't forget about the (ECF) Container which might still be in use

+					}}, (Dictionary) props);

+

+		// setup and open log service tracker

+		logServiceTracker = new ServiceTracker(ctxt,

+				org.osgi.service.log.LogService.class.getName(), null) {

+			public Object addingService(ServiceReference reference) {

+				Logger.bindLogService((LogService) context

+						.getService(reference));

+				return super.addingService(reference);

+			}

+

+			public void removedService(ServiceReference reference,

+					Object service) {

+				Logger.unbindLogService((LogService) service);

+				super.removedService(reference, service); 

+			}

+		};

+		logServiceTracker.open(true);

+	}

+

+	public void stop(BundleContext c) throws Exception {

+		dispose();

+		// prompt we'r gone!

+		PrettyPrinter.prompt(PrettyPrinter.DEACTIVATED, null);

+	}

+

+	private void dispose() {

+		for (BundleStoppingListener l : stopListeners) {

+			l.bundleStopping();

+		}

+		stopListeners.clear();

+		ZooDiscoveryContainer.getSingleton().shutdown();

+		if (this.discoveryRegistration != null) {

+			this.discoveryRegistration.unregister();

+		}

+		if (this.confTracker != null) {

+			this.confTracker.close();

+		}

+		// Initiates an orderly shutdown of all our cached threads

+		ZooDiscoveryContainer.CACHED_THREAD_POOL.shutdown();

+

+	}

+

+	public static BundleContext getContext() {

+		return context;

+	}

+

+	public static void registerBundleStoppingListner(BundleStoppingListener l) {

+		stopListeners.add(l);

+	}

+

+}

+

diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java
index ad1763f..1c21fd8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/Configuration.java
@@ -60,7 +60,8 @@
 		String ss[] = propsAsString.split(";");//$NON-NLS-1$
 		for (String s : ss) {
 			String key_value[] = s.split("=");//$NON-NLS-1$
-			defaultConfigProperties.put(key_value[0], key_value[1]);
+			if (key_value.length == 2)
+				defaultConfigProperties.put(key_value[0], key_value[1]);
 		}
 	}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java
index 692ea14..0e892df 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/internal/IService.java
@@ -12,23 +12,45 @@
 package org.eclipse.ecf.provider.zookeeper.core.internal;
 
 import org.eclipse.ecf.discovery.IServiceInfo;
+import org.eclipse.ecf.discovery.identity.IServiceTypeID;
 
 public interface IService extends IServiceInfo {
 
-	String LOCATION = "discovery.service.location"; //$NON-NLS-1$	
-	String WEIGHT = "discovery.service.weight"; //$NON-NLS-1$
-	String PRIORITY = "discovery.service.priority"; //$NON-NLS-1$
-	String PROTOCOLS = "discovery.service.protocol"; //$NON-NLS-1$
-	Object SERVICE_NAME = "discovery.service.name";;
-
-	// Properties getProperties();
+	/**
+	 * Holds the service location ( {@link IServiceInfo#getLocation()} ) in the
+	 * zooKeeper node
+	 **/
+	String LOCATION = "discovery.service.location"; //$NON-NLS-1$ 
 
 	/**
-	 * Stored as value of a zookeeper node
+	 * Holds the service weight ( {@link IServiceInfo#getWeight()} ) in the
+	 * zooKeeper node
+	 **/
+	String WEIGHT = "discovery.service.weight"; //$NON-NLS-1$
+
+	/**
+	 * Holds the service priority ({@link IServiceInfo#getPriority()()} ) in the
+	 * zooKeeper node
+	 **/
+	String PRIORITY = "discovery.service.priority"; //$NON-NLS-1$
+
+	/**
+	 * Holds the service-type protocols ({@link IServiceTypeID#getProtocols()} )
+	 * in the zooKeeper node
+	 **/
+	String PROTOCOLS = "discovery.service.protocol"; //$NON-NLS-1$
+
+	/**
+	 * Holds the service name ({@link IServiceInfo#getServiceName()}) in the
+	 * zooKeeper node
+	 **/
+	String SERVICE_NAME = "discovery.service.name"; //$NON-NLS-1$
+
+	/**
+	 * The byte representation of the service properties, appropriate to be
+	 * stored in the zooKeeper node
 	 * 
-	 * @return byte value of string
+	 * @return byte representation of the properties
 	 */
 	byte[] getPropertiesAsBytes();
-
-	// String getPropertiesAsString();
-}
+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java
index 8e6449c..5006b80 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/ReadRoot.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
+ *  Copyright (c)2011 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
  *  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
@@ -11,15 +11,16 @@
  *******************************************************************************/
 package org.eclipse.ecf.provider.zookeeper.node.internal;
 
+import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.zookeeper.AsyncCallback.ChildrenCallback;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.AsyncCallback.ChildrenCallback;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.ecf.provider.zookeeper.core.DiscoverdService;
 import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;
@@ -36,6 +37,7 @@
 			.synchronizedMap(new HashMap<String, NodeReader>());
 	private Map<String, DiscoverdService> discoverdServices;
 	private Map<String, List<DiscoverdService>> perTypeDiscoverdServices;
+	private Object connectionLock = new Object();
 
 	ReadRoot(String ip, WatchManager watchManager) {
 		Assert.isNotNull(ip);
@@ -49,106 +51,119 @@
 		connect();
 	}
 
-	public synchronized void process(final WatchedEvent event) {
-		if (watchManager.isDisposed())
-			return;
+	public void process(final WatchedEvent event) {
 		ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {
 			public void run() {
-				switch (event.getState()) {
-				case Disconnected:
-					ReadRoot.this.isConnected = false;
-					connect();
-					break;
-				case Expired:
-					ReadRoot.this.isConnected = false;
-					connect();
-					break;
-				case SyncConnected:
-					if (!ReadRoot.this.isConnected) {
-						ReadRoot.this.isConnected = true;
-						ReadRoot.this.watchManager
-								.addZooKeeper(ReadRoot.this.readKeeper);
-						ReadRoot.this.readKeeper.exists(INode.ROOT,
-								ReadRoot.this, null, null);
-						ReadRoot.this.readKeeper.getChildren(INode.ROOT,
-								ReadRoot.this, ReadRoot.this, null);
-					}
-					break;
+				synchronized (connectionLock) {
+					if (watchManager.isDisposed())
+						return;
 
-				// ignore @deprecated cases
-				}
-				switch (event.getType()) {
-				case NodeDeleted:
-					if (event.getPath() == null
-							|| event.getPath().equals(INode.ROOT))
+					switch (event.getState()) {
+					case Disconnected:
+						ReadRoot.this.isConnected = false;
+						connect();
 						break;
-					ReadRoot.this.nodeReaders.remove(event.getPath());
-					break;
-				case NodeChildrenChanged:
-					if (ReadRoot.this.isConnected) {
-						ReadRoot.this.readKeeper.exists(INode.ROOT,
-								ReadRoot.this, null, null);
-						ReadRoot.this.readKeeper.getChildren(INode.ROOT,
-								ReadRoot.this, ReadRoot.this, null);
+					case Expired:
+						ReadRoot.this.isConnected = false;
+						connect();
+						break;
+					case SyncConnected:
+						if (!ReadRoot.this.isConnected) {
+							ReadRoot.this.isConnected = true;
+							ReadRoot.this.watchManager
+									.addZooKeeper(ReadRoot.this.readKeeper);
+							ReadRoot.this.readKeeper.exists(INode.ROOT,
+									ReadRoot.this, null, null);
+							ReadRoot.this.readKeeper.getChildren(INode.ROOT,
+									ReadRoot.this, ReadRoot.this, null);
+						}
+						break;
+
+					// ignore @deprecated cases
 					}
-					break;
+					switch (event.getType()) {
+					case NodeDeleted:
+						if (event.getPath() == null
+								|| event.getPath().equals(INode.ROOT))
+							break;
+						ReadRoot.this.nodeReaders.remove(event.getPath());
+						break;
+					case NodeChildrenChanged:
+						if (ReadRoot.this.isConnected) {
+							ReadRoot.this.readKeeper.exists(INode.ROOT,
+									ReadRoot.this, null, null);
+							ReadRoot.this.readKeeper.getChildren(INode.ROOT,
+									ReadRoot.this, ReadRoot.this, null);
+						}
+						break;
+					}
 				}
 			}
 		});
 	}
 
-	private synchronized void connect() {
-		if (this.isConnected || watchManager.isDisposed()) {
-			return;
-		}
-		try {
+	private void connect() {
+		synchronized (connectionLock) {
+			if (this.isConnected || watchManager.isDisposed())
+				return;
+
 			this.nodeReaders.clear();
 			if (this.readKeeper != null) {
 				// discard the current stale reader
-				this.readKeeper.close();
-				this.readKeeper = null;
+				try {
+					this.readKeeper.close();
+				} catch (InterruptedException e) {
+					Logger.log(
+							LogService.LOG_ERROR,
+							"Error while closing the current ZooKeeper: "
+									+ e.getMessage(), e);
+				}
 				this.watchManager.removeZooKeeper(this.readKeeper);
+				this.readKeeper = null;
 			}
-			// try reconnecting
-			this.readKeeper = new ZooKeeper(this.ip, 3000, this);
-
-		} catch (Exception e) {
-			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
+			try {
+				// try reconnecting
+				this.readKeeper = new ZooKeeper(this.ip, 3000, this);
+			} catch (IOException ioe) {
+				Logger.log(LogService.LOG_ERROR,
+						"Cannot initiate a new ZooKeeper: " + ioe.getMessage(),
+						ioe);
+			}
 		}
 	}
 
-	public synchronized void processResult(int rc, final String path,
-			Object ctx, final List<String> children) {
-
-		if (watchManager.isDisposed()) {
-			return;
-		}
-
+	public void processResult(int rc, final String path, Object ctx,
+			final List<String> children) {
 		ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {
 			public void run() {
-				if (path == null || children == null || children.size() == 0) {
-					/* No children available yet, set a watch on it */
-					ReadRoot.this.readKeeper.getChildren(INode.ROOT,
-							ReadRoot.this, ReadRoot.this, null);
-					return;
-				}
-				for (String p : children) {
-					if (Geo.isOwnPublication(p)) {
-						/* own publications need not to be discovered */
-						continue;
+				synchronized (connectionLock) {
+					if (watchManager.isDisposed())
+						return;
+					if (path == null || children == null
+							|| children.size() == 0) {
+						/* No children available yet, set a watch on it */
+						ReadRoot.this.readKeeper.getChildren(INode.ROOT,
+								ReadRoot.this, ReadRoot.this, null);
+						return;
 					}
-					if (!ReadRoot.this.nodeReaders.containsKey(p)) {
-						/* launch a new reader to handle this node's data */
-						NodeReader nr = new NodeReader(p, ReadRoot.this);
-						/* watch this very path for deletion */
-						ReadRoot.this.readKeeper.exists(nr.getAbsolutePath(),
-								ReadRoot.this, null, null);
-						ReadRoot.this.nodeReaders.put(nr.getPath(), nr);
+					for (String p : children) {
+						if (Geo.isOwnPublication(p)) {
+							/* own publications need not to be discovered */
+							continue;
+						}
+						if (!ReadRoot.this.nodeReaders.containsKey(p)) {
+							/* launch a new reader to handle this node's data */
+							NodeReader nr = new NodeReader(p, ReadRoot.this);
+							/* watch this very path for deletion */
+							ReadRoot.this.readKeeper.exists(
+									nr.getAbsolutePath(), ReadRoot.this, null,
+									null);
+							ReadRoot.this.nodeReaders.put(nr.getPath(), nr);
+						}
 					}
 				}
 			}
 		});
-
 	}
 
 	public ZooKeeper getReadKeeper() {
@@ -166,5 +181,4 @@
 	public Map<String, List<DiscoverdService>> getPerTypeDiscoverdServices() {
 		return perTypeDiscoverdServices;
 	}
-
 }
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java
index 7c643e5..985fe3c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WatchManager.java
@@ -75,25 +75,21 @@
 		nodeWriter.publish();
 	}
 
-	public synchronized void publish(final AdvertisedService published) {
+	public void publish(AdvertisedService published) {
 		Assert.isNotNull(published);
 		String serviceid = published.getServiceID().getServiceTypeID()
 				.getInternal();
-		if (WatchManager.this.getNodeWriters().containsKey(serviceid))
+		if (getNodeWriters().containsKey(serviceid))
 			return;
-		if (!WatchManager.this.writeRootLock.isOpen()) {
-			synchronized (WatchManager.this.writeRootLock) {
-				try {
-					/* wait for the server to get ready */
-					WatchManager.this.writeRootLock.wait();
-				} catch (InterruptedException e) {
-					Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
-				}
-			}
+		try {
+			/* wait for the server to get ready */
+			while (!writeRootLock.isOpen())
+				Thread.sleep(300);
+		} catch (InterruptedException e) {
+			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
 		}
-		NodeWriter nodeWriter = new NodeWriter(published,
-				WatchManager.this.writeRoot);
-		WatchManager.this.getNodeWriters().put(serviceid, nodeWriter);
+		NodeWriter nodeWriter = new NodeWriter(published, writeRoot);
+		getNodeWriters().put(serviceid, nodeWriter);
 		allKnownServices.put(published.getServiceID().getName(), published);
 		nodeWriter.publish();
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java
index c29cf31..3d362e6 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/WriteRoot.java
@@ -1,153 +1,166 @@
-/*******************************************************************************
- *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).
- *  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:
- *     Wim Jongman - initial API and implementation 
- *     Ahmed Aadel - initial API and implementation     
- *******************************************************************************/
-
-package org.eclipse.ecf.provider.zookeeper.node.internal;
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooDefs.Ids;
-import org.apache.zookeeper.ZooKeeper;
-import org.apache.zookeeper.data.Stat;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ecf.provider.zookeeper.util.Logger;
-import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
-import org.osgi.service.log.LogService;
-
-class WriteRoot implements Watcher {
-	private ZooKeeper writeKeeper;
-	private String ip;
-	private WatchManager watchManager;
-
-	private boolean isConnected;
-
-	WriteRoot(String ip, WatchManager watchManager) {
-		Assert.isNotNull(ip);
-		Assert.isNotNull(watchManager);
-		this.ip = ip;
-		this.watchManager = watchManager;
-		initWriteKeeper();
-	}
-
-	@SuppressWarnings({ "incomplete-switch" })
-	public void process(WatchedEvent event) {
-		switch (event.getState()) {
-		case Disconnected:
-			this.isConnected = false;
-			this.watchManager.unpublishAll();
-			connect();
-			break;
-		case Expired:
-			this.isConnected = false;
-			this.watchManager.unpublishAll();
-
-			connect();
-			break;
-		case SyncConnected:
-			if (!this.isConnected) {
-				this.isConnected = true;
-				this.watchManager.republishAll();
-			}
-			break;
-		// ignore @deprecated cases
-		}
-	}
-
-	private void connect() {
-		if (this.isConnected || watchManager.isDisposed()) {
-			return;
-		}
-		try {
-			if (this.writeKeeper != null) {
-				this.writeKeeper.close();
-				this.writeKeeper = null;
-				this.watchManager.removeZooKeeper(this.writeKeeper);
-			}
-			this.writeKeeper = new ZooKeeper(this.ip, 3000, this);
-
-		} catch (Exception e) {
-			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
-		}
-	}
-
-	private void initWriteKeeper() {
-
-		if (watchManager.getConfig().isQuorum()
-				|| watchManager.getConfig().isStandAlone()) {
-			// we write nodes locally but we should check for client port.
-			int port = watchManager.getConfig().getClientPort();
-			if (port != 0)
-				ip += ":" + port;//$NON-NLS-1$
-		} else if (watchManager.getConfig().isCentralized()) {
-			// we write nodes to the machine with this specified IP address.
-			ip = watchManager.getConfig().getServerIps();
-		}
-		try {
-			this.writeKeeper = new ZooKeeper(this.ip, 3000, this);
-		} catch (Exception e) {
-			// FATAL
-			Logger.log(LogService.LOG_ERROR,
-					"Fatal error while initializing a zookeeper client to write to: "
-							+ ip, e);
-			// halt here before the NPE's get out of house in
-			// Publisher.publish()
-			throw new IllegalStateException(e);
-		}
-		while (!this.isConnected) {
-			if (watchManager.isDisposed()) {
-				// no need for connecting, we're disposed.
-				try {
-					this.writeKeeper.close();
-				} catch (Throwable t) {
-					// ignore
-				}
-				break;
-			}
-			try {
-				Stat s = this.writeKeeper.exists(INode.ROOT, this);
-				this.isConnected = true;
-				if (s == null) {
-					this.writeKeeper.create(INode.ROOT, new byte[0],
-							Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
-				}
-
-			} catch (KeeperException e) {
-				if (e.code().equals(KeeperException.Code.CONNECTIONLOSS)) {
-					this.isConnected = false;
-					PrettyPrinter.attemptingConnectionTo(this.ip);
-				} else
-					Logger.log(LogService.LOG_ERROR,
-							"Error while trying to connect to " + this.ip, e); //$NON-NLS-1$
-			} catch (InterruptedException e) {
-				// ignore
-			}
-		}
-		synchronized (this) {
-			this.notifyAll();
-		}
-		this.watchManager.addZooKeeper(this.writeKeeper);
-	}
-
-	public ZooKeeper getWriteKeeper() {
-		return this.writeKeeper;
-	}
-
-	public boolean isConnected() {
-		return this.isConnected;
-	}
-
-	public WatchManager getWatchManager() {
-		return watchManager;
-	}
-
+/*******************************************************************************

+ *  Copyright (c)2010 REMAIN B.V. The Netherlands. (http://www.remainsoftware.com).

+ *  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:

+ *     Wim Jongman - initial API and implementation 

+ *     Ahmed Aadel - initial API and implementation     

+ *******************************************************************************/

+

+package org.eclipse.ecf.provider.zookeeper.node.internal;

+

+import org.apache.zookeeper.CreateMode;

+import org.apache.zookeeper.KeeperException;

+import org.apache.zookeeper.WatchedEvent;

+import org.apache.zookeeper.Watcher;

+import org.apache.zookeeper.ZooDefs.Ids;

+import org.apache.zookeeper.ZooKeeper;

+import org.apache.zookeeper.data.Stat;

+import org.eclipse.core.runtime.Assert;

+import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;

+import org.eclipse.ecf.provider.zookeeper.util.Logger;

+import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;

+import org.osgi.service.log.LogService;

+

+class WriteRoot implements Watcher {

+	private ZooKeeper writeKeeper;

+	private String ip;

+	private WatchManager watchManager;

+	private boolean isConnected;

+	private Object connectionLock = new Object();

+

+	WriteRoot(String ip, WatchManager watchManager) {

+		Assert.isNotNull(ip);

+		Assert.isNotNull(watchManager);

+		this.ip = ip;

+		this.watchManager = watchManager;

+		initWriteKeeper();

+	}

+

+	@SuppressWarnings({ "incomplete-switch" })

+	public void process(final WatchedEvent event) {

+		ZooDiscoveryContainer.CACHED_THREAD_POOL.execute(new Runnable() {

+			public void run() {

+				synchronized (connectionLock) {

+					switch (event.getState()) {

+					case Disconnected:

+						isConnected = false;

+						watchManager.unpublishAll();

+						connect();

+						break;

+					case Expired:

+						isConnected = false;

+						watchManager.unpublishAll();

+						connect();

+						break;

+					case SyncConnected:

+						if (!isConnected) {

+							isConnected = true;

+							watchManager.addZooKeeper(writeKeeper);

+							watchManager.republishAll();

+						}

+						break;

+					// ignore @deprecated cases

+					}

+				}

+			}

+		});

+	}

+

+	private void connect() {

+		synchronized (connectionLock) {

+			if (this.isConnected || watchManager.isDisposed()) {

+				return;

+			}

+			try {

+				if (writeKeeper != null) {

+					writeKeeper.close();

+					watchManager.removeZooKeeper(writeKeeper);

+					writeKeeper = null;

+				}

+				writeKeeper = new ZooKeeper(this.ip, 3000, this);

+

+			} catch (Exception e) {

+				Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);

+			}

+		}

+	}

+

+	private void initWriteKeeper() {

+		try {

+			if (watchManager.getConfig().isQuorum()

+					|| watchManager.getConfig().isStandAlone()) {

+				// we write nodes locally but we should check for client port.

+				int port = watchManager.getConfig().getClientPort();

+				if (port != 0)

+					ip += ":" + port;//$NON-NLS-1$

+			} else if (watchManager.getConfig().isCentralized()) {

+				// we write nodes to the machine with this specified IP address.

+				ip = watchManager.getConfig().getServerIps();

+			}

+			try {

+				writeKeeper = new ZooKeeper(this.ip, 3000, this);

+			} catch (Exception e) {

+				// FATAL

+				Logger.log(LogService.LOG_ERROR,

+						"Fatal error while initializing a zookeeper client to write to: "

+								+ ip, e);

+				// halt here before the NPE's get out of house in

+				// Publisher.publish()

+				throw new IllegalStateException(e);

+			}

+			while (!this.isConnected) {

+				synchronized (connectionLock) {

+					if (watchManager.isDisposed()) {

+						// no need for connecting, we're disposed.

+						try {

+							writeKeeper.close();

+						} catch (Throwable t) {

+							// ignore

+						}

+						break;

+					}

+					try {

+						Stat s = this.writeKeeper.exists(INode.ROOT, this);

+						this.isConnected = true;

+						if (s == null) {

+							writeKeeper.create(INode.ROOT, new byte[0],

+									Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

+						}

+

+					} catch (KeeperException e) {

+						if (e.code()

+								.equals(KeeperException.Code.CONNECTIONLOSS)) {

+							isConnected = false;

+							PrettyPrinter.attemptingConnectionTo(this.ip);

+						} else

+							Logger.log(

+									LogService.LOG_ERROR,

+									"Error while trying to connect to " + this.ip, e); //$NON-NLS-1$

+					}

+				}

+			}

+			synchronized (this) {

+				this.notifyAll();

+			}

+

+		} catch (Exception e) {

+			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);

+		}

+	}

+

+	public ZooKeeper getWriteKeeper() {

+		return writeKeeper;

+	}

+

+	public boolean isConnected() {

+		return isConnected;

+	}

+

+	public WatchManager getWatchManager() {

+		return watchManager;

+	}

 }
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties b/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
index 6e51da1..21b41a6 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF 3.2 Patch for Eclipse 3.5.X and 3.6.x
+featureName=ECF Filetransfer Patch for Eclipse
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
index 5a579e1..40a2796 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <feature

       id="org.eclipse.ecf.core.featurepatch"

-      label="ECF 3.5 Patch for Eclipse"

-      version="3.5.0.qualifier"

+      label="ECF Filetransfer Patch for Eclipse"

+      version="3.5.3.qualifier"

       provider-name="%providerName">

 

    <description url="http://www.eclipse.org/ecf">

-      This feature provides a patch of Eclipse 3.5-3.6 ECF Core Bundles.  This allows the ECF 3.4 Target Components to function properly.

+      This feature provides a patch update of the ECF Core and Filetransfer
+bundles.  Use this feature to update ECF core, identity, and filetransfer bundles within Eclipse.

    </description>

 

    <copyright>

diff --git a/releng/features/org.eclipse.ecf.core/feature.properties b/releng/features/org.eclipse.ecf.core/feature.properties
index 4064bbc..90abed0 100644
--- a/releng/features/org.eclipse.ecf.core/feature.properties
+++ b/releng/features/org.eclipse.ecf.core/feature.properties
@@ -6,8 +6,8 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=Eclipse Communication Framework Target Components
-providerName=Eclipse.org
+featureName=ECF Target Components for Eclipse
+providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/releng/features/org.eclipse.ecf.core/feature.xml b/releng/features/org.eclipse.ecf.core/feature.xml
index df3c167..ff965a1 100644
--- a/releng/features/org.eclipse.ecf.core/feature.xml
+++ b/releng/features/org.eclipse.ecf.core/feature.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <feature

       id="org.eclipse.ecf.core"

-      label="Eclipse Communication Framework Target Components"

-      version="3.5.0.qualifier"

+      label="ECF Target Components for Eclipse"

+      version="3.5.3.qualifier"

       provider-name="%providerName"

       plugin="org.eclipse.ecf">

 

    <description url="http://www.eclipse.org/ecf">

-      This feature provides a core set of APIs for writing ECF-enabled applications.  This feature and the ECF Application feature are required to run ECF applications.

+      This feature provides all of the ECF APIs, providers, and examples for Eclipse.  Use this feature if you want to install all of ECF into Eclipse.

    </description>

 

    <copyright>

@@ -263,20 +263,6 @@
          unpack="false"/>

 

    <plugin

-         id="org.eclipse.ecf.examples.updatesite.client"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-   <plugin

-         id="org.eclipse.ecf.examples.updatesite.server"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-   <plugin

          id="org.eclipse.team.ecf.core"

          download-size="0"

          install-size="0"

diff --git a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
index 6958898..59f34c1 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
@@ -1,16 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.datashare.feature"
-      label="ECF Datashare"
-      provider-name="%providerName"
-      version="1.0.0.qualifier">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Datashare API
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.datashare.feature"

+      label="ECF Datashare"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Datashare API for asynchronous
+messaging within a channel.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,32 +19,32 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.datashare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.datashare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.datashare.nio"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <plugin

+         id="org.eclipse.ecf.datashare"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.datashare"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.datashare.nio"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties
index 49dfc15..2a8b18a 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/build.properties
@@ -2,9 +2,11 @@
                notice.html,\
                license.html,\
                feature.properties,\
-               about.html
+               about.html,\
+               epl-v10.html
 src.includes = about.html,\
                feature.properties,\
                feature.xml,\
                license.html,\
-               notice.html
+               notice.html,\
+               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html
rename to releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
index 92795fd..96fa53c 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.dnssd.feature"
-      label="ECF Discovery DNS-SD Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery DNS-SD Provider
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.discovery.dnssd.feature"

+      label="ECF Discovery DNS-SD Provider"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Discovery DNS-SD Provider.

+   </description>

+

+   <copyright>

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,29 +18,29 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.dnssd"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.xbill.dns"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf.provider.dnssd"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.xbill.dns"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
index 9b9ed63..732bf10 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.feature"
-      label="ECF Discovery"
-      provider-name="%providerName"
-      version="1.0.0.qualifier">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery API
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.discovery.feature"

+      label="ECF Discovery"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Discovery API.  The ECF Discovery API gives a transport-independent network discovery API.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,32 +18,32 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.discovery"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.discovery"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.concurrent"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <plugin

+         id="org.eclipse.ecf.discovery"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.discovery"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.equinox.concurrent"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
index f8f4b76..b085669 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Discovery Zeroconf Provider
+featureName=ECF Discovery SLP (RFC 2608) Provider
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
index cff6021..0cb64c8 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.jmdns.feature"
-      label="ECF Discovery Zeroconf Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery Zeroconf Provider
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.discovery.jmdns.feature"

+      label="ECF Discovery Zeroconf Provider"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Discovery Zeroconf Provider.

+   </description>

+

+   <copyright>

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,22 +18,22 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.jmdns"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf.provider.jmdns"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/.project b/releng/features/org.eclipse.ecf.discovery.local.feature/.project
deleted file mode 100644
index 9e5fb36..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.discovery.local.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
deleted file mode 100644
index 77efb6c..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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>
-		<!-- the feature -->
-		<dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
-		<dependency name="org.eclipse.ecf.discovery.feature" componentType="eclipse.feature"/>
-		<dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
-		<!-- tests -->
-		<dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.discovery.local" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2" componentType="osgi.bundle"/>
-		<dependency name="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery" 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/releng/features/org.eclipse.ecf.discovery.local.feature/build.properties b/releng/features/org.eclipse.ecf.discovery.local.feature/build.properties
deleted file mode 100644
index 2a8b18a..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-bin.includes = feature.xml,\
-               notice.html,\
-               license.html,\
-               feature.properties,\
-               about.html,\
-               epl-v10.html
-src.includes = about.html,\
-               feature.properties,\
-               feature.xml,\
-               license.html,\
-               notice.html,\
-               epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml
deleted file mode 100644
index e592927..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<feature

-      id="org.eclipse.ecf.discovery.local.feature"

-      label="ECF Discovery Local File Provider"

-      version="2.0.0.qualifier"

-      provider-name="%providerName">

-

-   <description url="http://www.eclipse.org/ecf">

-      This feature provides the ECF Discovery Local File Provider

-   </description>

-

-   <copyright>

-      #################################################
-# 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
-#################################################

-   </copyright>

-

-   <license url="%licenseURL">

-      %license

-   </license>

-

-   <requires>

-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>

-   </requires>

-

-</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.cquery b/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.cquery
deleted file mode 100644
index d0494be..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.cquery
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0" resourceMap="ecf.rmap">
-    <cq:rootRequest name="org.eclipse.ecf.discovery.local.feature" componentType="eclipse.feature"/>
-    
-    <cq:property key="target.arch" value="*"/>
-    <cq:property key="target.os" value="*"/>
-    <cq:property key="target.ws" value="*"/>
-
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.discovery\.local\.feature?" useTargetPlatform="false" useWorkspace="false"/>
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.provider\.localdiscovery?" useTargetPlatform="false" useWorkspace="false"/>
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.osgi\.services\.discovery\.local?" useTargetPlatform="false" useWorkspace="false"/>
-    
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.discovery\.local(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
-    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.localdiscovery?" useTargetPlatform="false" useWorkspace="false"/>
-
-    <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false"/>
-    
-    <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT"/>
-</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.mspec b/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.mspec
deleted file mode 100644
index 1ee7c91..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/org.eclipse.ecf.discovery.local.mspec
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 

-    name="org.eclipse.ecf.discovery.local" 

-    materializer="p2" 

-    url="org.eclipse.ecf.discovery.local.cquery">

-    

-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.discovery\.local\.feature?" materializer="workspace"/>

-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.provider\.localdiscovery?" materializer="workspace"/>

-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.osgi\.services\.discovery\.local?" materializer="workspace"/>

-    

-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.discovery\.local(\..+)?" materializer="workspace"/>

-    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.osgi\.services\.distribution\.localdiscovery?" materializer="workspace"/>

-

-    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>

-</md:mspec>

-	

diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
index 4fb27fc..d2cdf84 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
@@ -1,15 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.slp.feature"
-      label="ECF Discovery SLP Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Discovery Service Location Protocol (SLP) Provider
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.discovery.slp.feature"

+      label="ECF Discovery SLP (RFC 2608) Provider"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Discovery Service Location Protocol
+(RFC 2608) Provider.

+   </description>

+

+   <copyright>

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,29 +19,29 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="ch.ethz.iks.slp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.jslp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>

+   </requires>

+

+   <plugin

+         id="ch.ethz.iks.slp"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.jslp"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
index ecdee87..f451219 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
@@ -6,8 +6,7 @@
       provider-name="%providerName">

 

    <description url="http://wiki.eclipse.org/Zookeeper_Based_ECF_Discovery">

-      This feature provides the Apache Zookeeper Discovery Provider
-implementation

+      This feature provides the Apache Zookeeper Discovery Provider.

    </description>

 

    <copyright url="http://www.eclipse.org/legal/epl-v10.html">

diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
index dbbb3f5..342799a 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF EventAdmin Examples
+featureName=ECF Distributed EventAdmin Examples
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
index 45f9f2f..01ae455 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.eventadmin.examples.feature"
-      label="ECF EventAdmin Examples"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Distributed EventAdmin Examples
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.eventadmin.examples.feature"

+      label="ECF Distributed EventAdmin Examples"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Distributed EventAdmin Examples.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,22 +18,22 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.eventadmin.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.eventadmin.app"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.eventadmin.feature"

+         version="0.0.0"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.eventadmin.app"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
index 3bb7fba..0818cc8 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF EventAdmin 
+featureName=ECF Distributed EventAdmin 
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
index 2dd3758..14b487a 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.eventadmin.feature"
-      label="ECF EventAdmin"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Distributed EventAdmin
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.eventadmin.feature"

+      label="ECF Distributed EventAdmin"

+      version="2.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Distributed EventAdmin API.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,32 +18,32 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.provider"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.eventadmin"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.sharedobject"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <plugin

+         id="org.eclipse.ecf.provider"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.remoteservice.eventadmin"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.sharedobject"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.examples/feature.xml b/releng/features/org.eclipse.ecf.examples/feature.xml
index d97837a..5a03ebd 100644
--- a/releng/features/org.eclipse.ecf.examples/feature.xml
+++ b/releng/features/org.eclipse.ecf.examples/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.examples"
-      label="%featureName"
-      version="3.2.0.qualifier"
-      provider-name="%providerName"
-      plugin="org.eclipse.ecf.example.collab">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides ECF application functionality...e.g. instant messaging, real-time collaboration. This feature and the ECF Core API feature are required to run ECF applications.
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.examples"

+      label="%featureName"

+      version="3.2.0.qualifier"

+      provider-name="%providerName"

+      plugin="org.eclipse.ecf.example.collab">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides ECF example applications and providers.

+   </description>

+

+   <copyright>

       ##########################################################################
 # Copyright (c) 2004, 2007 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -19,103 +19,89 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-##########################################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.presence"/>
-      <import plugin="org.eclipse.ecf.provider.xmpp"/>
-      <import plugin="org.eclipse.ecf.sharedobject"/>
-      <import plugin="org.eclipse.ecf.presence.ui"/>
-      <import plugin="org.eclipse.ui"/>
-      <import plugin="org.eclipse.ecf.ui"/>
-      <import plugin="org.eclipse.core.runtime"/>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.core.resources"/>
-      <import plugin="org.eclipse.jface.text"/>
-      <import plugin="org.eclipse.ui.ide"/>
-      <import plugin="org.eclipse.ui.editors"/>
-      <import plugin="org.eclipse.ecf.discovery"/>
-      <import plugin="org.eclipse.ecf.discovery.ui"/>
-      <import plugin="org.eclipse.ecf.discovery.ui.edit"/>
-      <import plugin="org.eclipse.ecf.discovery.ui.model"/>
-      <import plugin="org.eclipse.ecf.provider"/>
-      <import plugin="org.eclipse.ecf.server.generic"/>
-      <import plugin="org.eclipse.ecf.datashare"/>
-      <import plugin="org.eclipse.ecf.provider.datashare"/>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.discovery"/>
-      <import plugin="org.eclipse.ecf.remoteservice"/>
-      <import plugin="org.eclipse.ecf.examples.remoteservices.common"/>
-      <import plugin="org.eclipse.ecf.ui"/>
-      <import plugin="org.eclipse.update.ui"/>
-      <import plugin="org.eclipse.equinox.common"/>
-      <import plugin="javax.servlet"/>
-      <import plugin="org.eclipse.osgi.services"/>
-      <import plugin="org.eclipse.ecf.remoteservice.ui"/>
-      <import plugin="org.eclipse.equinox.app"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.example.clients"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.example.collab"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.example.collab.editor"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.client"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.common"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.updatesite.client"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.updatesite.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+##########################################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

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

+      <import plugin="org.eclipse.ecf.presence"/>

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

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

+      <import plugin="org.eclipse.ecf.presence.ui"/>

+      <import plugin="org.eclipse.ui"/>

+      <import plugin="org.eclipse.ecf.ui"/>

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

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

+      <import plugin="org.eclipse.core.resources"/>

+      <import plugin="org.eclipse.jface.text"/>

+      <import plugin="org.eclipse.ui.ide"/>

+      <import plugin="org.eclipse.ui.editors"/>

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

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

+      <import plugin="org.eclipse.ecf.discovery.ui.edit"/>

+      <import plugin="org.eclipse.ecf.discovery.ui.model"/>

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

+      <import plugin="org.eclipse.ecf.server.generic"/>

+      <import plugin="org.eclipse.ecf.datashare"/>

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

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

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

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

+      <import plugin="org.eclipse.ecf.examples.remoteservices.common"/>

+      <import plugin="org.eclipse.ecf.ui"/>

+      <import plugin="org.eclipse.update.ui"/>

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

+      <import plugin="javax.servlet"/>

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

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

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

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf.example.clients"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.example.collab"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.example.collab.editor"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.client"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.common"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.server"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
index 2265bae..334b336 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF OSGi 4.2 Remote Services
+featureName=ECF OSGi 4.2 Remote Services Admin
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
index 9ec58fc..787158c 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>

 <feature

       id="org.eclipse.ecf.osgi.services.feature"

-      label="ECF OSGi 4.2 Remote Services"

-      version="2.0.0.qualifier"

+      label="ECF OSGi 4.2 Remote Services Admin"

+      version="2.0.1.qualifier"

       provider-name="%providerName">

 

    <description url="http://www.eclipse.org/ecf">

-      This feature provides the ECF Implementation of OSGi 4.2 Remote Services

+      This feature provides the ECF Implementation of OSGi 4.2 Remote
+Services.  Remote Services are specified in chapter 13 of the OSGi compendium specification.  See http://www.osgi.org/download/r4v42/r4.cmpn.pdf.

    </description>

 

    <copyright>

@@ -30,13 +31,6 @@
          version="0.0.0"/>

 

    <plugin

-         id="org.eclipse.ecf.osgi.services.discovery"

-         download-size="0"

-         install-size="0"

-         version="0.0.0"

-         unpack="false"/>

-

-   <plugin

          id="org.eclipse.ecf.osgi.services.distribution"

          download-size="0"

          install-size="0"

@@ -57,4 +51,11 @@
          version="0.0.0"

          unpack="false"/>

 

+   <plugin

+         id="org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

 </feature>

diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
index b8cf592..c84d397 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
@@ -1,15 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.provider.filetransfer.httpclient.feature"
-      label="%featureName"
-      version="2.1.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides an ECF filetransfer provider based upon Apache HttpClient 3.0.1.
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.provider.filetransfer.httpclient.feature"

+      label="%featureName"

+      version="2.1.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides an ECF filetransfer provider based upon
+Apache HttpClient 3.1.0.

+   </description>

+

+   <copyright url="http://www.example.com/copyright">

       Copyright (c) 2004, 2007 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -17,57 +18,57 @@
 this distribution, and is available at 
 http://www.eclipse.org/legal/epl-v10.html
  
-Contributors: Composent, Inc. - initial API and implementation
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.equinox.common"/>
-      <import plugin="org.eclipse.ecf.provider.filetransfer"/>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.filetransfer"/>
-      <import plugin="org.eclipse.core.jobs"/>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.osgi.services"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.codec"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.httpclient"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.logging"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+Contributors: Composent, Inc. - initial API and implementation

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

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

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

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

+      <import plugin="org.eclipse.ecf.filetransfer"/>

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

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

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

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf.provider.filetransfer.httpclient"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.commons.codec"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.commons.httpclient"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.commons.logging"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
index 14af2da..837f2a4 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
@@ -6,7 +6,7 @@
       provider-name="%providerName">

 

    <description url="http://www.eclipse.org/ecf">

-      This feature provides ECF Remote Service Examples

+      This feature provides ECF Remote Service Examples.  These are examples of the use of OSGi 4.2 Remote Services.  OSGi 4.2 Remote Services is specified in the OSGi 4.2 compendium.  See http://www.osgi.org/download/r4v42/r4.cmpn.pdf.

    </description>

 

    <copyright>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
index 91a01f8..dbfb0c3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.feature"
-      label="ECF Remote Services"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.remoteservice.feature"

+      label="ECF Remote Services"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Remote Services.  The ECF Remote Services API allows distribution of services over a network.

+   </description>

+

+   <copyright>

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,50 +18,50 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.remoteservice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.sharedobject"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.console"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

+      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf.provider.remoteservice"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.remoteservice"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.sharedobject"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.console"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
index 0bca7e4..8ba74e5 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.rest.feature"
-      label="ECF Remote Services REST Support"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services REST Support
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.remoteservice.rest.feature"

+      label="ECF Remote Services REST Support"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Remote Services REST Support.  This API allows clients to easily be created for REST-based services.

+   </description>

+

+   <copyright>

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,50 +18,50 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.rest"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.json"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.rest.synd"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="com.sun.syndication"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.jdom"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.feature"

+         version="0.0.0"/>

+

+   <plugin

+         id="org.eclipse.ecf.remoteservice.rest"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.json"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.remoteservice.rest.synd"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="com.sun.syndication"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.jdom"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
index 88dec07..0340353 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.rosgi.feature"
-      label="ECF Remote Services R-OSGi Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services R-OSGi Provider
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.remoteservice.rosgi.feature"

+      label="ECF Remote Services R-OSGi Provider"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Remote Services R-OSGi Provider.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,36 +18,36 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="ch.ethz.iks.r_osgi.remote"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.r_osgi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.objectweb.asm"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.feature"

+         version="0.0.0"/>

+

+   <plugin

+         id="ch.ethz.iks.r_osgi.remote"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.r_osgi"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.objectweb.asm"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
index 41f30d3..0156a2e 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties
@@ -10,3 +10,4 @@
                feature.xml,\
                about.html,\
                epl-v10.html
+generate.feature@org.eclipse.ecf.remoteservice.sdk.feature.source=org.eclipse.ecf.remoteservice.sdk.feature
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties
index 5b27e3c..25fbca5 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Remote Services SDK
+featureName=ECF Remote Services Target Components
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
index cc1380c..3e06112 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
@@ -2,11 +2,11 @@
 <feature

       id="org.eclipse.ecf.remoteservice.sdk.feature"

       label="ECF Remote Services Target Components"

-      version="3.5.0.qualifier"

+      version="3.5.3.qualifier"

       provider-name="%providerName">

 

    <description url="http://www.eclipse.org/ecf">

-      This feature provides the ECF Remote Services Target Components

+      This feature provides the ECF Remote Services Target Components.  This is the set of bundles (API, examples, and providers), that allow OSGi frameworks to expose and access remote services.

    </description>

 

    <copyright>

diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/about.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/about.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/epl-v10.html
similarity index 100%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html
copy to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
similarity index 98%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
index 4bd9606..5e005a6 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Discovery Local File Provider
+featureName=ECF Remote Services Target Components Source
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml
new file mode 100644
index 0000000..41c0bec
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.remoteservice.sdk.feature"

+      label="ECF Remote Services Target Components"

+      version="3.5.1.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Remote Services Target Components

+   </description>

+

+   <copyright>

+      #################################################
+# 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
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.eventadmin.examples.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.eventadmin.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.examples.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.rest.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.rosgi.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.soap.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.server.generic.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.osgi.services.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.discovery.jmdns.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.discovery.slp.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.discovery.dnssd.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.discovery.zookeeper.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.datashare.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.discovery.feature"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.xmpp.feature"

+         version="0.0.0"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/license.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/license.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/notice.html
rename to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/notice.html
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
index ef96d3c..0876712 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
@@ -4,8 +4,8 @@
       label="ECF Service-Oriented Architecture"

       version="2.0.0.qualifier">

 

-   <description url="http://www.example.com/description">

-      [Enter Feature Description here.]

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF SOA Target Components.

    </description>

 

    <copyright url="http://www.example.com/copyright">

diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
index 91bb41b..7e3e596 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.soap.feature"
-      label="ECF Remote Services SOAP Support"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services SOAP Support
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.remoteservice.soap.feature"

+      label="ECF Remote Services SOAP Support"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Remote Services SOAP Support.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,22 +18,22 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.soap"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.feature"

+         version="0.0.0"/>

+

+   <plugin

+         id="org.eclipse.ecf.remoteservice.soap"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.sdk/build.properties b/releng/features/org.eclipse.ecf.sdk/build.properties
index 657d5a0..c31a427 100644
--- a/releng/features/org.eclipse.ecf.sdk/build.properties
+++ b/releng/features/org.eclipse.ecf.sdk/build.properties
@@ -7,9 +7,10 @@
 generatedVersionLength=20
 generate.feature@org.eclipse.ecf.core.source=org.eclipse.ecf.core
 generate.feature@org.eclipse.ecf.core.featurepatch.source=org.eclipse.ecf.core.featurepatch
+generate.feature@org.eclipse.ecf.remoteservice.sdk.feature.source=org.eclipse.ecf.remoteservice.sdk.feature
 category.id.core=Eclipse Communication Framework (ECF)
-category.desciption.core=Category for the ECF SDK
-category.members.core=org.eclipse.ecf.core,org.eclipse.ecf.core.featurepatch,org.eclipse.ecf.core.source,org.eclipse.ecf.core.featurepatch.source
+category.desciption.core=Category for the ECF Target Components
+category.members.core=org.eclipse.ecf.core,org.eclipse.ecf.core.featurepatch,org.eclipse.ecf.remoteservice.sdk.feature,org.eclipse.ecf.core.source,org.eclipse.ecf.core.featurepatch.source,org.eclipse.ecf.remoteservice.sdk.feature.source
 
 
                
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.sdk/feature.xml b/releng/features/org.eclipse.ecf.sdk/feature.xml
index 3526647..0634599 100644
--- a/releng/features/org.eclipse.ecf.sdk/feature.xml
+++ b/releng/features/org.eclipse.ecf.sdk/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.sdk"
-      label="ECF Target Components Feature"
-      version="3.4.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description url="http://www.eclipse.org/ecf">
-      Eclipse Communications Framework Target Components
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.sdk"

+      label="ECF Target Components Feature"

+      version="3.5.3.qualifier"

+      provider-name="Eclipse.org">

+

+   <description url="http://www.eclipse.org/ecf">

+      Eclipse Communications Framework Target Components

+   </description>

+

+   <copyright>

       /*******************************************************************************
 * Copyright (c) 2004 Composent, Inc. and others. All rights reserved.
 * This program and the accompanying materials are made available
@@ -18,10 +18,10 @@
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: Composent, Inc. - initial API and implementation
-******************************************************************************/
-   </copyright>
-
-   <license url="http://www.eclipse.org/legal/epl-v10.html">
+******************************************************************************/

+   </copyright>

+

+   <license url="http://www.eclipse.org/legal/epl-v10.html">

       About This Content
 May 11, 2006
 License
@@ -304,15 +304,19 @@
 or implied.
 See the License for the specific language governing permissions
 and
-limitations under the License.
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.core"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.core.featurepatch"
-         version="0.0.0"/>
-
-</feature>
+limitations under the License.

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.core"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.core.featurepatch"

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.sdk.feature"

+         version="0.0.0"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.tests.feature/feature.xml b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
index 2783132..ec27e08 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
@@ -332,7 +332,6 @@
       <import plugin="org.eclipse.ecf.osgi.services.distribution" version="1.0.0" match="greaterOrEqual"/>

       <import plugin="org.eclipse.ecf.remoteservice" version="3.0.0" match="greaterOrEqual"/>

       <import plugin="org.eclipse.ecf" version="3.0.0" match="greaterOrEqual"/>

-      <import plugin="org.eclipse.ecf.osgi.services.discovery" version="1.0.0" match="greaterOrEqual"/>

       <import plugin="org.eclipse.equinox.common" version="3.5.1" match="greaterOrEqual"/>

       <import plugin="org.eclipse.equinox.concurrent" version="1.0.0" match="greaterOrEqual"/>

       <import plugin="org.eclipse.ecf.provider.discovery"/>

diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
index d6adcbd..21e3c6a 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
@@ -1,11 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.xmpp.feature"
-      label="ECF XMPP Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.xmpp.feature"

+      label="ECF XMPP Provider"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides support for the XMPP protocol.

+   </description>

+

+   <copyright>

       Copyright (c) 2011 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -13,41 +17,41 @@
 this distribution, and is available at 
 http://www.eclipse.org/legal/epl-v10.html
  
-Contributors: Composent, Inc. - initial API and implementation
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.jivesoftware.smack"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp.datashare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp.remoteservice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-</feature>
+Contributors: Composent, Inc. - initial API and implementation

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <plugin

+         id="org.eclipse.ecf.provider.xmpp"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.jivesoftware.smack"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.xmpp.datashare"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.provider.xmpp.remoteservice"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/org.eclipse.ecf.releng.bm/ECF3-5Baseline.target b/releng/org.eclipse.ecf.releng.bm/ECF3-5Baseline.target
new file mode 100644
index 0000000..48ee3e7
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/ECF3-5Baseline.target
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde version="3.6"?>
+
+<target includeMode="feature" name="ECF3-5Baseline">
+<locations>
+<location includeAllPlatforms="false" includeMode="slicer" type="InstallableUnit">
+<unit id="org.eclipse.ecf.core.feature.group" version="3.5.0.v20110313-1843"/>
+<repository location="http://rsync.osuosl.org/pub/eclipse/rt/ecf/3.5/site.p2/"/>
+</location>
+</locations>
+<includeBundles>
+<feature id="org.eclipse.ecf.core"/>
+</includeBundles>
+<launcherArgs>
+<vmArgs>-XX:PermSize=256M -XX:MaxPermSize=512M -XX:+UseParallelGC -Xms512m -Xmx1024m</vmArgs>
+</launcherArgs>
+</target>
diff --git a/releng/org.eclipse.ecf.releng.bm/ecf.b3aggr b/releng/org.eclipse.ecf.releng.bm/ecf.b3aggr
deleted file mode 100644
index 4f6d5da..0000000
--- a/releng/org.eclipse.ecf.releng.bm/ecf.b3aggr
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<aggregator:Aggregator xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:aggregator="http://www.eclipse.org/b3/2010/aggregator/1.0.0" buildmaster="//@contacts[email='mkuppe@ecf-project.org']" label="Eclipse Communication Framework (ECF)" type="R" mavenResult="true">
-  <configurations/>
-  <configurations architecture="x86_64"/>
-  <configurations operatingSystem="linux" windowSystem="gtk"/>
-  <configurations operatingSystem="linux" windowSystem="gtk" architecture="x86_64"/>
-  <contributions label="Eclipse Communication Framework">
-    <repositories location="http://download.eclipse.org/rt/ecf/3.4/site.p2/"/>
-  </contributions>
-  <contacts name="Markus Alexander Kuppe" email="mkuppe@ecf-project.org"/>
-  <validationRepositories location="http://download.eclipse.org/tools/orbit/downloads/drops/S20110124210048/repository/"/>
-  <validationRepositories location="http://download.eclipse.org/eclipse/updates/3.6/R-3.6.1-201009090800/"/>
-  <validationRepositories location="http://download.eclipse.org/modeling/emf/emf/updates/2.6/"/>
-</aggregator:Aggregator>
diff --git a/releng/org.eclipse.ecf.releng.bm/ecf.rmap b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
index 77a3a57..77fb914 100644
--- a/releng/org.eclipse.ecf.releng.bm/ecf.rmap
+++ b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
@@ -1,136 +1,106 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<rmap
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns="http://www.eclipse.org/buckminster/RMap-1.0"
-	xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
-	xmlns:mp="http://www.eclipse.org/buckminster/MavenProvider-1.0"
-	xmlns:pmp="http://www.eclipse.org/buckminster/PDEMapProvider-1.0">
-
-	
-	<!-- org.eclipse -->
-	<searchPath name="org.eclipse">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/eclipse/updates/3.6/R-3.6.1-201009090800?importType=binary"/>
-		</provider>
-		<!-- dev.eclipse.org PDEMapProvider -->
-		<provider xsi:type="pmp:PDEMapProvider" readerType="cvs" componentTypes="osgi.bundle,eclipse.feature" mutable="false" source="true">
-			<uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse,org.eclipse.releng/maps">
-				<bc:propertyRef key="buckminster.component" />
-			</uri>
-		</provider>
-	</searchPath>
-	
-	<!-- emf -->
-	<searchPath name="org.eclipse.emf">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/modeling/emf/updates/releases?importType=binary"/>
-		</provider>
-		<!-- dev.eclipse.org PDEMapProvider -->
-		<provider xsi:type="pmp:PDEMapProvider" readerType="cvs" componentTypes="osgi.bundle,eclipse.feature" mutable="false" source="true">
-			<uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.releng/maps">
-				<bc:propertyRef key="buckminster.component" />
-			</uri>
-		</provider>
-	</searchPath>
-
-	<!-- ecf -->
-	<searchPath name="org.eclipse.ecf">
-		<provider readerType="local" componentTypes="osgi.bundle,eclipse.feature" mutable="true" source="true">
-            <uri format="file:{0}/{1}/">
-                <bc:propertyRef key="projectsPath" />
-                <bc:propertyRef key="buckminster.component" />
-            </uri>
-        </provider>
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="{0}?importType=binary">
-                <bc:propertyRef key="ecf.p2.repository" />
-            </uri>    
-		</provider>
-	</searchPath>
-
-	<!-- org.xbill.dns -->
-	<searchPath name="org.xbill.dns">
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/S20101014084557/repository?importType=binary"/>
-		</provider>
-	</searchPath>
-
-	<!-- pluginbuilder -->
-	<searchPath name="org.pluginbuilder">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://self.pluginbuilder.org/nightly/p2-updateSite?importType=binary"/>
-		</provider>
-	</searchPath>
-
-	<!-- swtbot -->
-	<searchPath name="org.eclipse.swtbot">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/technology/swtbot/galileo/dev-build/update-site?importType=binary"/>
-		</provider>
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site?importType=binary"/>
-		</provider>
-	</searchPath>
-
-	<!-- eclemma -->
-	<searchPath name="com.mountainminds.eclemma">
-		<provider readerType="p2" componentTypes="osgi.bundle,eclipse.feature,buckminster" mutable="false" source="false">
-			<uri format="http://update.eclemma.org?importType=binary"/>
-		</provider>
-	</searchPath>
-	
-	<!-- default -->
-	<searchPath name="default">
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/updateSite?importType=binary"/>
-		</provider>
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/S20100831105311/repository?importType=binary"/>
-		</provider>
-		<provider readerType="p2" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.eclipse.org/tools/orbit/downloads/drops/S20110124210048/repository?importType=binary"/>
-		</provider>
-		<!-- dev.eclipse.org PDEMapProvider -->
-		<provider xsi:type="pmp:PDEMapProvider" readerType="cvs" componentTypes="osgi.bundle,eclipse.feature" mutable="false" source="true">
-			<uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/tools,org.eclipse.orbit/org.eclipse.orbit.releng/maps">
-				<bc:propertyRef key="buckminster.component" />
-			</uri>
-		</provider>
-	</searchPath>
-	
-	<!-- below order does matter!!! -->
-	
-	<locator searchPathRef="org.xbill.dns" pattern="^org\.xbill\.dns$" />
-	
-	<!-- ECF -->
-	<locator searchPathRef="org.eclipse.ecf" pattern="^ch\.ethz\.iks(\..+)?" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.eclipse\.ecf(\..+)?" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.eclipse\.team\.ecf(\..+)?" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.jivesoftware\.smack$" />
-	<locator searchPathRef="org.eclipse.ecf" pattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" />
-	
-	<!-- EMF -->
-	<locator searchPathRef="org.eclipse.emf" pattern="^org\.eclipse\.emf(\..+)?" />
-	<locator searchPathRef="org.eclipse.emf" pattern="^org\.eclipse\.net4j(\..+)?" />
-	<locator searchPathRef="org.eclipse.emf" pattern="^org\.eclipse\.xsd(\..+)?" />
-
-	<!-- SWTBot -->
-	<locator searchPathRef="org.eclipse.swtbot" pattern="^org\.eclipse\.swtbot(\..+)?" />
-	<locator searchPathRef="org.eclipse.swtbot" pattern="^org\.hamcrest(\..+)?" />
-	<locator searchPathRef="org.eclipse.swtbot" pattern="^org\.apache\.log4j$" />
-	
-	<!-- ECLEmma -->
-	<locator searchPathRef="com.mountainminds.eclemma" pattern="^com\.mountainminds\.eclemma(\..+)?" />
-	
-	<!-- Eclipse --> 
-	<locator searchPathRef="org.eclipse" pattern="^org\.eclipse(\..+)?" />
-	<locator searchPathRef="org.eclipse" pattern="^org\.junit4?" />
-	<locator searchPathRef="org.eclipse" pattern="^org\.osgi(\..+)?" />
-	<locator searchPathRef="org.eclipse" pattern="^org\.apache\.ant?" />
-
-	<!-- PluginBuilder -->
-	<locator searchPathRef="org.pluginbuilder" pattern="^org\.pluginbuilder(\..+)?" />
-	
-	<!-- Eclipse other (Orbit atm) -->	
-	<locator searchPathRef="default" pattern=".*" />
-</rmap>
+<?xml version="1.0" encoding="UTF-8"?>

+<rm:rmap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0" xmlns:pde="http://www.eclipse.org/buckminster/PDEMapProvider-1.0" xmlns:rm="http://www.eclipse.org/buckminster/RMap-1.0">

+  <rm:locator pattern="^ch\.ethz\.iks(\..+)?" searchPathRef="org.eclipse.ecf"/>

+  <rm:locator pattern="^org\.eclipse\.ecf(\..+)?" searchPathRef="org.eclipse.ecf"/>

+  <rm:locator pattern="^org\.eclipse\.team\.ecf(\..+)?" searchPathRef="org.eclipse.ecf"/>

+  <rm:locator pattern="^org\.jivesoftware\.smack$" searchPathRef="org.eclipse.ecf"/>

+  <rm:locator pattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" searchPathRef="org.eclipse.ecf"/>

+  <rm:locator pattern="^org\.eclipse\.emf(\..+)?" searchPathRef="org.eclipse.emf"/>

+  <rm:locator pattern="^org\.eclipse\.net4j(\..+)?" searchPathRef="org.eclipse.emf"/>

+  <rm:locator pattern="^org\.eclipse\.xsd(\..+)?" searchPathRef="org.eclipse.emf"/>

+  <rm:locator pattern="^org\.eclipse\.swtbot(\..+)?" searchPathRef="org.eclipse.swtbot"/>

+  <rm:locator pattern="^org\.hamcrest(\..+)?" searchPathRef="org.eclipse.swtbot"/>

+  <rm:locator pattern="^org\.apache\.log4j$" searchPathRef="org.eclipse.swtbot"/>

+  <rm:locator pattern="^com\.mountainminds\.eclemma(\..+)?" searchPathRef="com.mountainminds.eclemma"/>

+  <rm:locator pattern="^org\.eclipse(\..+)?" searchPathRef="org.eclipse"/>

+  <rm:locator pattern="^org\.junit4?" searchPathRef="org.eclipse"/>

+  <rm:locator pattern="^org\.osgi(\..+)?" searchPathRef="org.eclipse"/>

+  <rm:locator pattern="^org\.apache\.ant?" searchPathRef="org.eclipse"/>

+  <rm:locator pattern="^org\.pluginbuilder(\..+)?" searchPathRef="org.pluginbuilder"/>

+  <rm:locator pattern=".*" searchPathRef="default"/>

+  <rm:searchPath name="org.eclipse">

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/eclipse/updates/3.7/R-3.7-201106131736/"/>

+    </rm:provider>

+    <rm:provider xsi:type="pde:PDEMapProvider" componentTypes="osgi.bundle,eclipse.feature" readerType="cvs" mutable="false">

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse,org.eclipse.releng/maps">

+        <bc:propertyRef key="buckminster.component"/>

+      </rm:uri>

+    </rm:provider>

+  </rm:searchPath>

+  <rm:searchPath name="org.eclipse.emf">

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/modeling/emf/updates/releases"/>

+    </rm:provider>

+    <rm:provider xsi:type="pde:PDEMapProvider" componentTypes="osgi.bundle,eclipse.feature" readerType="cvs" mutable="false">

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.releng/maps">

+        <bc:propertyRef key="buckminster.component"/>

+      </rm:uri>

+    </rm:provider>

+  </rm:searchPath>

+  <rm:searchPath name="org.eclipse.ecf">

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature" readerType="local">

+      <rm:uri format="file:{0}/{1}/">

+        <bc:propertyRef key="projectsPath"/>

+        <bc:propertyRef key="buckminster.component"/>

+      </rm:uri>

+    </rm:provider>

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="{0}?importType=binary">

+        <bc:propertyRef key="ecf.p2.repository"/>

+      </rm:uri>

+    </rm:provider>

+  </rm:searchPath>

+  <rm:searchPath name="org.pluginbuilder">

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://self.pluginbuilder.org/nightly/p2-updateSite?importType=binary"/>

+    </rm:provider>

+  </rm:searchPath>

+  <rm:searchPath name="org.eclipse.swtbot">

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/technology/swtbot/helios/dev-build/update-site"/>

+    </rm:provider>

+  </rm:searchPath>

+  <rm:searchPath name="com.mountainminds.eclemma">

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature,buckminster" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://update.eclemma.org?importType=binary"/>

+    </rm:provider>

+  </rm:searchPath>

+  <rm:searchPath name="default">

+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/R20100519200754/repository"/>

+    </rm:provider>

+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/R20110523182458/repository/"/>

+    </rm:provider>

+    <rm:provider componentTypes="osgi.bundle" readerType="p2" source="false" mutable="false">

+      <rm:property key="buckminster.source" value="false"/>

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format="http://ftp.osuosl.org/pub/eclipse/tools/orbit/downloads/drops/S20110124210048/repository"/>

+    </rm:provider>

+    <rm:provider xsi:type="pde:PDEMapProvider" componentTypes="osgi.bundle,eclipse.feature" readerType="cvs" mutable="false">

+      <rm:property key="buckminster.mutable" value="false"/>

+      <rm:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/tools,org.eclipse.orbit/org.eclipse.orbit.releng/maps">

+        <bc:propertyRef key="buckminster.component"/>

+      </rm:uri>

+    </rm:provider>

+  </rm:searchPath>

+</rm:rmap>

diff --git a/releng/org.eclipse.ecf.releng.bm/rmap2b3aggr.xsl b/releng/org.eclipse.ecf.releng.bm/rmap2b3aggr.xsl
new file mode 100644
index 0000000..ada0848
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/rmap2b3aggr.xsl
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:bm="http://www.eclipse.org/buckminster/RMap-1.0">
+    <xsl:output method="xml" indent="yes"/>
+    
+    <xsl:strip-space elements="*"/>
+    
+    <!-- overwrite via parameters -->
+    <xsl:param name="repository">http://download.eclipse.org/rt/ecf/3.4/site.p2/</xsl:param>
+    <xsl:param name="title">Eclipse Communication Framework (ECF)</xsl:param>
+    <xsl:param name="releaseType">R</xsl:param>
+    <xsl:param name="contactName">ECF mailinglist</xsl:param>
+    <xsl:param name="contactMail">ecf-dev@eclipse.org</xsl:param>
+    
+    <xsl:template match="/">
+        <aggregator:Aggregator 
+            xmi:version="2.0" 
+            xmlns:xmi="http://www.omg.org/XMI" 
+            xmlns:aggregator="http://www.eclipse.org/b3/2010/aggregator/1.0.0" 
+            buildmaster="//@contacts[email='{$contactMail}']" 
+            label="{$title}"
+            type="{$releaseType}" 
+            mavenResult="true">
+            
+            <configurations architecture="x86_64"/>
+            <configurations operatingSystem="linux" windowSystem="gtk"/>
+            <configurations operatingSystem="linux" windowSystem="gtk" architecture="x86_64"/>
+ 
+            <contributions label="{$title}">
+                <repositories location="{$repository}"/>
+            </contributions>
+
+            <contacts name="{$contactName}" email="{$contactMail}"/>
+
+            <xsl:apply-templates/>
+            
+        </aggregator:Aggregator>
+    </xsl:template>
+    
+    <xsl:template match="bm:provider">
+    	<!-- only accept public http|ftp repositories -->
+        <xsl:if test="starts-with(bm:uri/@format, 'http://') or starts-with(bm:uri/@format, 'ftp://')">
+        
+        	<!-- remove dangling ?importType=binary -->
+        	<xsl:choose>
+        		<xsl:when test="contains(bm:uri/@format, '?importType=binary')">
+		        	<validationRepositories location="{substring-before(bm:uri/@format, '?importType=binary')}"/>
+        		</xsl:when>
+        		<xsl:otherwise>
+            		<validationRepositories location="{bm:uri/@format}"/>
+        		</xsl:otherwise>
+        	</xsl:choose>
+        </xsl:if>
+    </xsl:template>    
+    
+</xsl:stylesheet>
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF b/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF
index cd6fbf3..bd9ab0e 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.server.generic;singleton:=true
-Bundle-Version: 4.0.0.qualifier
+Bundle-Version: 5.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.server.generic.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch b/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch
index 0d38996..2f6960d 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/launchconfigs/Generic Client Java App.launch
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientJavaApplication.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.server.generic.app.GenericClientJavaApplication"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.server.generic"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientJavaApplication.java"/>

+</listAttribute>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">

+<listEntry value="1"/>

+</listAttribute>

+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.server.generic.app.GenericClientJavaApplication"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-clientId something:slewis@composent.com/333334"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.server.generic"/>

+</launchConfiguration>

diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml b/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml
index 6233371..44fa9bc 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/plugin.xml
@@ -35,5 +35,16 @@
                class="org.eclipse.ecf.server.generic.app.GenericClientApplication"/>
       </application>
    </extension>
+   <extension
+         id="GenericClientApplication"
+         point="org.eclipse.core.runtime.applications">
+      <application
+            thread="any"
+            visible="true">
+         <run
+               class="org.eclipse.ecf.server.generic.app.GenericClientApplication">
+         </run>
+      </application>
+   </extension>
 
 </plugin>
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java
index 7b3a7c1..adb9d45 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java
@@ -102,7 +102,6 @@
 	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext ctxt) throws Exception {
-		plugin = null;
 		if (serverManager != null) {
 			serverManager.closeServers();
 			serverManager = null;
@@ -127,6 +126,7 @@
 				gscgFactory = null;
 			}
 		}
+		plugin = null;
 		this.context = null;
 	}
 
@@ -136,9 +136,8 @@
 	 * @return the shared instance
 	 */
 	public synchronized static Activator getDefault() {
-		if (plugin == null) {
-			plugin = new Activator();
-		}
+		if (plugin == null)
+			throw new NullPointerException("Default Activator is null"); //$NON-NLS-1$
 		return plugin;
 	}
 
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java
index 2d7b287..d9ef3b7 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/GenericServerContainerGroup.java
@@ -104,9 +104,16 @@
 		return createContainer(path, IGenericServerContainerGroup.DEFAULT_KEEPALIVE);
 	}
 
+	/**
+	 * @since 5.1
+	 */
+	protected GenericServerSOContainerGroup getServerGroup() {
+		return serverGroup;
+	}
+
 	protected TCPServerSOContainer createGenericServerContainer(String path, int keepAlive, Map properties) throws ContainerCreateException {
 		try {
-			return new TCPServerSOContainer(new SOContainerConfig(createGenericServerID(path, properties), createGenericServerProperties(path, properties)), serverGroup, path, keepAlive);
+			return new TCPServerSOContainer(new SOContainerConfig(createGenericServerID(path, properties), createGenericServerProperties(path, properties)), getServerGroup(), path, keepAlive);
 		} catch (Exception e) {
 			throw new ContainerCreateException("Unexpected exception creating generic server container path=" + path, e); //$NON-NLS-1$
 		}
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java
index 3e8b33b..afa0b58 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroup.java
@@ -13,30 +13,121 @@
 import java.net.URI;
 import java.util.Map;
 import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer;
 
 /**
+ * Generic server container group.  Instances of this type are returned from using the {@link IGenericServerContainerGroupFactory}
+ * service.
+ * 
  * @since 4.0
  */
 public interface IGenericServerContainerGroup {
 
 	public static final int DEFAULT_KEEPALIVE = 30000;
 
+	/**
+	 * Get the URI for the group endpoint.  For
+	 * @return uri that is the group endpoint.  For example uri='ecftcp://localhost:3282'
+	 */
 	public URI getGroupEndpoint();
 
+	/**
+	 * Create a shared object container within this container group, given a path, a keepAlive value, and a Map of properties
+	 * that will be provided to the created container.
+	 * 
+	 * @param path the uri path suffix for defining the container's identity.  For example, if {@link #getGroupEndpoint()}
+	 * returns 'ecftcp://localhost:3282', and a path of '/server' is used to create a new container, then the container's id
+	 * will be 'ecftcp://localhost:3282/server'.  Must not be <code>null</code>.
+	 * @param keepAlive a value (in milliseconds) that defines the keepAlive for the resulting container.
+	 * @param properties to be associated to the returned container upon instantiation.
+	 * @return shared object container.  Will not be <code>null</code>.
+	 * @throws ContainerCreateException if container with given path, keepAlive, and properties could not be created.
+	 */
 	public ISharedObjectContainer createContainer(String path, int keepAlive, Map properties) throws ContainerCreateException;
 
+	/**
+	 * Create a shared object container within this container group, given a path, a keepAlive value, and a Map of properties
+	 * that will be provided to the created container.
+	 * 
+	 * @param path the uri path suffix for defining the container's identity.  For example, if {@link #getGroupEndpoint()}
+	 * returns 'ecftcp://localhost:3282', and a path of '/server' is used to create a new container, then the container's id
+	 * will be 'ecftcp://localhost:3282/server'.  Must not be <code>null</code>.
+	 * @param keepAlive a value (in milliseconds) that defines the keepAlive for the resulting container.
+	 * @return shared object container.  Will not be <code>null</code>.
+	 * @throws ContainerCreateException if container with given path, keepAlive, and properties could not be created.
+	 * @since 5.0
+	 */
+	public ISharedObjectContainer createContainer(String path, int keepAlive) throws ContainerCreateException;
+
+	/**
+	 * Create a shared object container within this container group, given a path, a keepAlive value, and a Map of properties
+	 * that will be provided to the created container.
+	 * 
+	 * @param path the uri path suffix for defining the container's identity.  For example, if {@link #getGroupEndpoint()}
+	 * returns 'ecftcp://localhost:3282', and a path of '/server' is used to create a new container, then the container's id
+	 * will be 'ecftcp://localhost:3282/server'.  Must not be <code>null</code>.
+	 * @return shared object container.  Will not be <code>null</code>.
+	 * @throws ContainerCreateException if container with given path, keepAlive, and properties could not be created.
+	 * @since 5.0
+	 */
+	public ISharedObjectContainer createContainer(String path) throws ContainerCreateException;
+
+	/**
+	 * Get the container instance associated with the given path. 
+	 * 
+	 * @param path of the container to return.  Must not be <code>null</code>.
+	 * @return the previously created shared object container associated with the given path.
+	 */
 	public ISharedObjectContainer getContainer(String path);
 
+	/**
+	 * Get a map (String->ISharedObjectContainer) of the path->containers previously created.
+	 * @return map of the path->container map for this generic server container group.  Will not return <code>null</code>, but
+	 * may return a Map of size==0.
+	 */
 	public Map getContainers();
 
+	/**
+	 * Remove previously created container with given path.
+	 * 
+	 * @param path of the shared object container to remove.
+	 * @return shared object container removed.  If no shared object container was previously created
+	 * with the given path, then <code>null</code> will be returned.
+	 */
 	public ISharedObjectContainer removeContainer(String path);
 
+	/**
+	 * Start listening on the port given to this generic server container group upon creation.
+	 * 
+	 * @throws IOException if the server port cannot be opened for listening.
+	 * 
+	 * @see IGenericServerContainerGroupFactory#createContainerGroup(String, int, Map)
+	 */
 	public void startListening() throws IOException;
 
+	/**
+	 * Returns <code>true</code> if this container group previously started listening via a successful call to {@link #startListening()}).
+	 * 
+	 * @return <code>true</code> if currently listening, <code>false</code> otherwise.
+	 */
 	public boolean isListening();
 
+	/**
+	 * Stop listening on port given to this generic server container group upon creation.
+	 */
 	public void stopListening();
 
+	/**
+	 * Close this generic server container group.  This method will:
+	 * <ol>
+	 * <li>iterate through all containers created via {@link #createContainer(String, int, Map)} within this group, and for each one:</li>
+	 * <ol>
+	 *   <li>remove it from the set of containers within this group</li>
+	 *   <li>call {@link IContainer#dispose()}</li>
+	 * </ol>
+	 * <li>stop listening on the port given to this generic server container group upon creation.</li>
+	 * </ol>
+	 */
 	public void close();
 }
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java
index 6752a4c..d0191fe 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.java
@@ -10,24 +10,82 @@
 package org.eclipse.ecf.server.generic;
 
 import java.util.Map;
+import org.eclipse.ecf.core.IContainer;
 
 /**
+ * Generic server container group factory service.  This service interface defines
+ * the contract for dynamically creating ECF generic server container groups for a given hostname and port.  A container group
+ * is a set of {@link IContainer} instances...all of which are associated with a single
+ * hostname and port combination.
+ * 
  * @since 4.0
  */
 public interface IGenericServerContainerGroupFactory {
 
 	public int DEFAULT_PORT = 3282;
 
+	/**
+	 * Create a new container group given a hostname, port, and a Map of default container properties.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @param port the port that the new container group will listen on (once {@link IGenericServerContainerGroup#startListening()}
+	 * is called).  Should be a valid tcp port, openable for listening by this process via {@link IGenericServerContainerGroup#startListening()}.
+	 * @param defaultContainerProperties a Map of default properties passed to any IContainer instances created within the resulting group.
+	 * @return new generic server container group.  Will not return <code>null</code>.
+	 * @throws GenericServerContainerGroupCreateException if a container group exists for the given hostname and port combination.
+	 * 
+	 * @see IGenericServerContainerGroup
+	 */
 	public IGenericServerContainerGroup createContainerGroup(String hostname, int port, Map defaultContainerProperties) throws GenericServerContainerGroupCreateException;
 
+	/**
+	 * Create a new container group given a hostname, and port.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @param port the port that the new container group will listen on (once {@link IGenericServerContainerGroup#startListening()}
+	 * is called).  Should be a valid tcp port, openable for listening by this process via {@link IGenericServerContainerGroup#startListening()}.
+	 * @return new generic server container group.  Will not return <code>null</code>.
+	 * @throws GenericServerContainerGroupCreateException if a container group exists for the given hostname and port combination.
+	 * 
+	 * @see IGenericServerContainerGroup
+	 */
 	public IGenericServerContainerGroup createContainerGroup(String hostname, int port) throws GenericServerContainerGroupCreateException;
 
+	/**
+	 * Create a new container group given a hostname using the {@link #DEFAULT_PORT}.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @return new generic server container group.  Will not return <code>null</code>.
+	 * @throws GenericServerContainerGroupCreateException if a container group exists for the given hostname and port combination.
+	 * 
+	 * @see IGenericServerContainerGroup
+	 */
 	public IGenericServerContainerGroup createContainerGroup(String hostname) throws GenericServerContainerGroupCreateException;
 
+	/**
+	 * Get the container group associated with the given hostname and port.
+	 * @param hostname the hostname associated with the new container group.  Must not be <code>null</code>.
+	 * @param port the port of the desired container group.
+	 * @return the existing generic server container group associated with the given hostname and port.  If no container group
+	 * exists with the given hostname and port, <code>null</code> will be returned.
+	 * 
+	 */
 	public IGenericServerContainerGroup getContainerGroup(String hostname, int port);
 
+	/**
+	 * Get all the container groups created by this container group factory.
+	 * @return array of generic server container groups.  Will not return <code>null</code>, but 
+	 * may return empty array if no generic server container groups have been created by this factory.
+	 */
 	public IGenericServerContainerGroup[] getContainerGroups();
 
+	/**
+	 * Remove the container group with the given hostname and port.
+	 * 
+	 * @param hostname the hostname of the container group to remove.  Must not be <code>null</code>.
+	 * @param port the port of the desired container group.
+	 * @return generic server container group removed.  If no container group exists for this factory, then
+	 * nothing was actually removed, and <code>null</code> will be returned.  
+	 * 
+	 * @see #getContainerGroup(String, int)
+	 */
 	public IGenericServerContainerGroup removeContainerGroup(String hostname, int port);
 
 }
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java
index 9bb89ec..7c1ec24 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/AbstractGenericClientApplication.java
@@ -23,6 +23,14 @@
 	protected String connectTarget;
 	protected ISharedObjectContainer clientContainer;
 	protected int waitTime = 40000;
+	/**
+	 * @since 5.1
+	 */
+	protected String clientId = null;
+	/**
+	 * @since 5.1
+	 */
+	protected String password = null;
 
 	protected abstract ISharedObjectContainer createContainer() throws ContainerCreateException;
 
@@ -37,6 +45,12 @@
 				waitTime = new Integer(args[i + 1]).intValue();
 				i++;
 			}
+			if (args[i].equals("-clientId")) { //$NON-NLS-1$
+				clientId = args[i + 1];
+			}
+			if (args[i].equals("-connectPassword")) { //$NON-NLS-1$
+				password = args[i + 1];
+			}
 		}
 	}
 
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java
index ba4474c..dd71dc5 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/ClientApplication.java
@@ -35,12 +35,10 @@
 
 	public static final int DEFAULT_TIMEOUT = TCPServerSOContainer.DEFAULT_KEEPALIVE;
 
-	public static final String CONTAINER_FACTORY_NAME = GenericContainerInstantiator.class
-			.getName();
+	public static final String CONTAINER_FACTORY_NAME = GenericContainerInstantiator.class.getName();
 	public static final String CONTAINER_FACTORY_CLASS = CONTAINER_FACTORY_NAME;
 
-	public static final String COMPOSENT_CONTAINER_NAME = GenericContainerInstantiator.class
-			.getName();
+	public static final String COMPOSENT_CONTAINER_NAME = GenericContainerInstantiator.class.getName();
 
 	// Number of clients to create
 	static int clientCount = 1;
@@ -73,8 +71,7 @@
 			}
 		}
 		// Setup factory descriptions since Eclipse does not do this for us
-		contd = new ContainerTypeDescription(CONTAINER_FACTORY_NAME,
-				CONTAINER_FACTORY_CLASS, null);
+		contd = new ContainerTypeDescription(CONTAINER_FACTORY_NAME, CONTAINER_FACTORY_CLASS, null);
 		ContainerFactory.getDefault().addDescription(contd);
 		for (int i = 0; i < clientCount; i++) {
 			sm[i] = createClient();
@@ -84,18 +81,13 @@
 	protected ISharedObjectContainer createClient() throws Exception {
 		// Make identity instance for the new container
 		ID newContainerID = IDFactory.getDefault().createGUID();
-		ISharedObjectContainer result = SharedObjectContainerFactory
-				.getDefault().createSharedObjectContainer(
-						contd,
-						new Object[] { newContainerID,
-								new Integer(DEFAULT_TIMEOUT) });
+		ISharedObjectContainer result = SharedObjectContainerFactory.getDefault().createSharedObjectContainer(contd, new Object[] {newContainerID, new Integer(DEFAULT_TIMEOUT)});
 		return result;
 	}
 
 	public void connect(ID server) throws Exception {
 		for (int i = 0; i < clientCount; i++) {
-			System.out
-					.print("ClientApplication " + sm[i].getID().getName() + " joining " + server.getName() + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			System.out.print("ClientApplication " + sm[i].getID().getName() + " joining " + server.getName() + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			sm[i].connect(server, null);
 			System.out.println("completed."); //$NON-NLS-1$
 		}
@@ -103,8 +95,7 @@
 
 	public void disconnect() {
 		for (int i = 0; i < clientCount; i++) {
-			System.out
-					.print("ClientApplication " + sm[i].getID().getName() + " leaving..."); //$NON-NLS-1$ //$NON-NLS-2$
+			System.out.print("ClientApplication " + sm[i].getID().getName() + " leaving..."); //$NON-NLS-1$ //$NON-NLS-2$
 			sm[i].disconnect();
 			System.out.println("completed."); //$NON-NLS-1$
 		}
@@ -116,16 +107,11 @@
 				ISharedObjectContainer scg = sm[j];
 				sharedObjects = new ID[sharedObjectClassNames.length];
 				for (int i = 0; i < sharedObjectClassNames.length; i++) {
-					System.out
-							.println("Creating sharedObject: " + sharedObjectClassNames[i] + " for client " + scg.getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
-					ISharedObject so = (ISharedObject) Class.forName(
-							sharedObjectClassNames[i]).newInstance();
-					sharedObjects[i] = IDFactory.getDefault().createStringID(
-							sharedObjectClassNames[i] + "_" + i); //$NON-NLS-1$
-					scg.getSharedObjectManager().addSharedObject(
-							sharedObjects[i], so, new HashMap());
-					System.out
-							.println("Created sharedObject for client " + scg.getID().getName()); //$NON-NLS-1$
+					System.out.println("Creating sharedObject: " + sharedObjectClassNames[i] + " for client " + scg.getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
+					ISharedObject so = (ISharedObject) Class.forName(sharedObjectClassNames[i]).newInstance();
+					sharedObjects[i] = IDFactory.getDefault().createStringID(sharedObjectClassNames[i] + "_" + i); //$NON-NLS-1$
+					scg.getSharedObjectManager().addSharedObject(sharedObjects[i], so, new HashMap());
+					System.out.println("Created sharedObject for client " + scg.getID().getName()); //$NON-NLS-1$
 				}
 			}
 		}
@@ -137,10 +123,8 @@
 			return;
 		for (int j = 0; j < clientCount; j++) {
 			for (int i = 0; i < sharedObjects.length; i++) {
-				System.out
-						.println("Removing sharedObject: " + sharedObjects[i].getName() + " for client " + sm[j].getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
-				sm[j].getSharedObjectManager().removeSharedObject(
-						sharedObjects[i]);
+				System.out.println("Removing sharedObject: " + sharedObjects[i].getName() + " for client " + sm[j].getID().getName()); //$NON-NLS-1$ //$NON-NLS-2$
+				sm[j].getSharedObjectManager().removeSharedObject(sharedObjects[i]);
 			}
 		}
 	}
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java
index f51b6d3..d14bc8d 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/app/GenericClientApplication.java
@@ -9,11 +9,13 @@
 ******************************************************************************/
 package org.eclipse.ecf.server.generic.app;
 
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.ecf.core.ContainerCreateException;
+import org.eclipse.ecf.core.*;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.core.security.IConnectInitiatorPolicy;
 import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer;
 import org.eclipse.ecf.internal.server.generic.Activator;
+import org.eclipse.ecf.provider.generic.ClientSOContainer;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 
@@ -22,6 +24,8 @@
  */
 public class GenericClientApplication extends AbstractGenericClientApplication implements IApplication {
 
+	private static final String GENERIC_CLIENT_CONTAINER_TYPE = "ecf.generic.client"; //$NON-NLS-1$
+
 	protected final Object appLock = new Object();
 	protected boolean done = false;
 
@@ -47,7 +51,24 @@
 	}
 
 	protected ISharedObjectContainer createContainer() throws ContainerCreateException {
-		return (ISharedObjectContainer) Activator.getDefault().getContainerManager().getContainerFactory().createContainer("ecf.generic.client"); //$NON-NLS-1$
+		IContainerFactory f = Activator.getDefault().getContainerManager().getContainerFactory();
+		ClientSOContainer client = (ClientSOContainer) ((clientId == null) ? f.createContainer(GENERIC_CLIENT_CONTAINER_TYPE) : f.createContainer(GENERIC_CLIENT_CONTAINER_TYPE, clientId));
+		if (password != null) {
+			client.setConnectInitiatorPolicy(new IConnectInitiatorPolicy() {
+				public void refresh() {
+					//nothing
+				}
+
+				public Object createConnectData(IContainer container, ID targetID, IConnectContext context) {
+					return password;
+				}
+
+				public int getConnectTimeout() {
+					return 30000;
+				}
+			});
+		}
+		return client;
 	}
 
 	protected void waitForDone() {
@@ -64,14 +85,7 @@
 	}
 
 	protected String[] getArguments(IApplicationContext context) {
-		String[] originalArgs = (String[]) context.getArguments().get("application.args"); //$NON-NLS-1$
-		if (originalArgs == null)
-			return new String[0];
-		final List l = new ArrayList();
-		for (int i = 0; i < originalArgs.length; i++)
-			if (!originalArgs[i].equals("-pdelaunch")) //$NON-NLS-1$
-				l.add(originalArgs[i]);
-		return (String[]) l.toArray(new String[] {});
+		return (String[]) context.getArguments().get("application.args"); //$NON-NLS-1$
 	}
 
 }
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch b/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch
index 544a9f9..5e96e79 100644
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch
+++ b/server-side/examples/bundles/org.eclipse.ecf.examples.updatesite.server/launch/Remote Updatesite Server.launch
@@ -1,22 +1,24 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">
-<booleanAttribute key="append.args" 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"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Remote Updatesite Server"/>
-<booleanAttribute key="default_auto_start" value="false"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consolelog -application org.eclipse.ecf.examples.updatesite.server.updateSiteServer file:///c:/build.server/ecf.build/updateSite/"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.osgi.service.http.port=8081"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="true"/>
-<stringAttribute key="target_bundles" value="org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.common@default:default,org.eclipse.core.jobs@default:default,org.eclipse.osgi.services@default:default,javax.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.mortbay.jetty@default:default,org.eclipse.equinox.app@default:true,org.eclipse.equinox.http.jetty@default:true,org.eclipse.equinox.http.registry@default:true,org.eclipse.equinox.registry@default:default,org.apache.commons.logging@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.core.runtime@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.osgi@:,org.eclipse.osgi.util@default:default"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.ecf.identity@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.updatesite.server@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.provider.jmdns@default:true"/>
-</launchConfiguration>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">

+<booleanAttribute key="append.args" 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"/>

+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Remote Updatesite Server"/>

+<booleanAttribute key="default" value="true"/>

+<booleanAttribute key="default_auto_start" value="false"/>

+<intAttribute key="default_start_level" value="4"/>

+<booleanAttribute key="includeOptional" value="true"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consolelog -application org.eclipse.ecf.examples.updatesite.server.updateSiteServer file:///c:/build.server/ecf.build/updateSite/"/>

+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.osgi.service.http.port=8081"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<booleanAttribute key="show_selected_only" value="true"/>

+<stringAttribute key="target_bundles" value="javax.servlet@default:default,org.apache.commons.logging@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.equinox.app@default:true,org.eclipse.equinox.common@2:true,org.eclipse.equinox.http.jetty@default:true,org.eclipse.equinox.http.registry@default:true,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true"/>

+<booleanAttribute key="tracing" value="false"/>

+<booleanAttribute key="useCustomFeatures" value="false"/>

+<booleanAttribute key="useDefaultConfigArea" value="true"/>

+<stringAttribute key="workspace_bundles" value="org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.updatesite.server@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.jmdns@default:true,org.eclipse.ecf@default:default"/>

+</launchConfiguration>

diff --git a/server-side/features/org.eclipse.ecf.server.feature/feature.xml b/server-side/features/org.eclipse.ecf.server.feature/feature.xml
index 69ee2e1..6bd474a 100644
--- a/server-side/features/org.eclipse.ecf.server.feature/feature.xml
+++ b/server-side/features/org.eclipse.ecf.server.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.serverfeature"
-      label="ECF Server"
-      version="2.0.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides a ECF reference server implementation
-   </description>
-
-   <copyright url="http://www.eclipse.org/ecf">
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.serverfeature"

+      label="ECF Server"

+      version="2.0.0.qualifier"

+      provider-name="Eclipse.org">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides a ECF server support.

+   </description>

+

+   <copyright url="http://www.eclipse.org/ecf">

       /*******************************************************************************
 * Copyright (c) 2004 Composent, Inc. and others. All rights reserved.
 * This program and the accompanying materials are made available
@@ -18,10 +18,10 @@
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: Composent, Inc. - initial API and implementation
-******************************************************************************/
-   </copyright>
-
-   <license url="http://www.eclipse.org/ecf">
+******************************************************************************/

+   </copyright>

+

+   <license url="http://www.eclipse.org/ecf">

       About This Content
 May 2, 2006
 License
@@ -41,18 +41,18 @@
 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 http://www.eclipse.org.
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.osgi"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+obtained at http://www.eclipse.org.

+   </license>

+

+   <requires>

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

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf.server"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml
index cfc47ee..e87ed9d 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.server.generic.feature"
-      label="ECF Generic Server"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Generic Server Support
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.server.generic.feature"

+      label="ECF Generic Server"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

+   <description url="http://www.eclipse.org/ecf">

+      This feature provides the ECF Generic Server Support.

+   </description>

+

+   <copyright>

+      #################################################
 # 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 
@@ -18,29 +18,29 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors: Composent, Inc. - initial API and implementation
-#################################################
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <includes
-         id="org.eclipse.ecf.remoteservice.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.ecf.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.server.generic"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+#################################################

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

+         id="org.eclipse.ecf.remoteservice.feature"

+         version="0.0.0"/>

+

+   <plugin

+         id="org.eclipse.ecf.server"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.server.generic"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.classpath b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.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/tests/bundles/org.eclipse.ecf.tests.discovery.all/.gitignore b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.project b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.project
deleted file mode 100644
index 76e4763..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.discovery.all</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/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index a56278c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Mar 10 12:21:04 CET 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.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.source=1.3
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 38d21b5..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue Mar 10 12:12:43 CET 2009
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.discovery.all/META-INF/MANIFEST.MF
deleted file mode 100644
index 0fc4709..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Wrapper to start all (known) discovery tests
-Bundle-SymbolicName: org.eclipse.ecf.tests.discovery.all
-Bundle-Version: 1.0.0.qualifier
-Require-Bundle: org.eclipse.ecf.tests.provider.discovery;bundle-version="2.1.0",
- org.eclipse.ecf.tests.provider.jmdns;bundle-version="3.0.0",
- org.eclipse.ecf.tests.provider.jslp;bundle-version="2.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery.local;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2;bundle-version="1.0.0",
- org.eclipse.ecf.tests.provider.dnssd;bundle-version="1.0.0",
- org.junit;bundle-version="3.8.2"
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties b/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
deleted file mode 100644
index 3f4964b..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
-jre.compilation.profile = J2SE-1.4
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/src/org/eclipse/ecf/tests/discovery/all/AllTests.java b/tests/bundles/org.eclipse.ecf.tests.discovery.all/src/org/eclipse/ecf/tests/discovery/all/AllTests.java
deleted file mode 100644
index f9fbe96..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/src/org/eclipse/ecf/tests/discovery/all/AllTests.java
+++ /dev/null
@@ -1,76 +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.tests.discovery.all;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.ecf.tests.osgi.services.discovery.PublishTest;
-import org.eclipse.ecf.tests.osgi.services.discovery.local.DistributedOSGiBasedStaticInformationTest;
-import org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryContainerTest;
-import org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryContainerWithoutRegTest;
-import org.eclipse.ecf.tests.provider.discovery.CompositeDiscoveryServiceContainerTest;
-import org.eclipse.ecf.tests.provider.discovery.WithoutJMDNSCompositeDiscoveryServiceContainerTest;
-import org.eclipse.ecf.tests.provider.discovery.WithoutJSLPCompositeDiscoveryServiceContainerTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSDiscoveryServiceTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSDiscoveryTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSDiscoveryWithoutRegTest;
-import org.eclipse.ecf.tests.provider.jmdns.JMDNSServiceInfoTest;
-import org.eclipse.ecf.tests.provider.jmdns.identity.JMDNSServiceIDTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPDiscoveryServiceTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPDiscoveryTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPDiscoveryWithoutRegTest;
-import org.eclipse.ecf.tests.provider.jslp.JSLPServiceInfoTest;
-import org.eclipse.ecf.tests.provider.jslp.identity.JSLPServiceIDTest;
-
-public class AllTests {
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(
-				"Test for org.eclipse.ecf.tests.discovery.all");
-		//$JUnit-BEGIN$
-		
-		String str = System.getProperty("org.eclipse.ecf.tests.discovery.all", "1");
-		int iterations = Integer.parseInt(str);
-		
-		for (int i = 0; i < iterations; i++) {
-			// ECF RFC 119 discovery
-			suite.addTestSuite(PublishTest.class);
-			
-			// SEN file based discovery
-			suite.addTestSuite(DistributedOSGiBasedStaticInformationTest.class);
-			
-			// jSLP
-			suite.addTestSuite(JSLPDiscoveryServiceTest.class);
-			suite.addTestSuite(JSLPDiscoveryTest.class);
-			suite.addTestSuite(JSLPDiscoveryWithoutRegTest.class);
-			suite.addTestSuite(JSLPServiceInfoTest.class);
-			suite.addTestSuite(JSLPServiceIDTest.class);
-			
-			// JmDNS
-			suite.addTestSuite(JMDNSDiscoveryServiceTest.class);
-			suite.addTestSuite(JMDNSDiscoveryTest.class);
-			suite.addTestSuite(JMDNSDiscoveryWithoutRegTest.class);
-			suite.addTestSuite(JMDNSServiceInfoTest.class);
-			suite.addTestSuite(JMDNSServiceIDTest.class);
-
-			// composite
-			suite.addTestSuite(CompositeDiscoveryServiceContainerTest.class);
-			suite.addTestSuite(CompositeDiscoveryContainerTest.class);
-			suite.addTestSuite(CompositeDiscoveryContainerWithoutRegTest.class);
-			suite.addTestSuite(WithoutJSLPCompositeDiscoveryServiceContainerTest.class);
-			suite.addTestSuite(WithoutJMDNSCompositeDiscoveryServiceContainerTest.class);
-		}
-		//$JUnit-END$
-		return suite;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.classpath b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.classpath
deleted file mode 100644
index 6f3b481..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.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/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.gitignore b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.project b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.project
deleted file mode 100644
index 4524ca0..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.discovery.remote-extender</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/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 43655f2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,73 +0,0 @@
-#Fri Oct 15 17:27:15 PDT 2010

-eclipse.preferences.version=1

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

-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=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=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=disabled

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

-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=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=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.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=warning

-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

diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 5a22e23..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Sat Mar 14 14:30:28 CET 2009
-eclipse.preferences.version=1
-pluginProject.equinox=false
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/META-INF/MANIFEST.MF
deleted file mode 100644
index cbf5b11..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.ecf.tests.discovery.remote_extender
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.discovery.remote_extender.Activator
-Import-Package: org.eclipse.ecf.osgi.services.distribution;version="1.0.0",
- org.osgi.framework;version="1.3.0",
- org.osgi.framework.hooks.service;version="1.0.0"
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Bundle-Vendor: %Bundle-Vendor.0
-Export-Package: org.eclipse.ecf.tests.discovery.remote_extender;version="1.0.0"
-Bundle-ActivationPolicy: lazy
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/OSGI-INF/l10n/bundle.properties b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/OSGI-INF/l10n/bundle.properties
deleted file mode 100644
index a218455..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/OSGI-INF/l10n/bundle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-#Properties file for org.eclipse.ecf.tests.discovery.remote-extender
-Bundle-Vendor.0 = Eclipse.org
-Bundle-Name.0 = ECF Discovery Provider Remote Extender
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/about.html b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/about.html
deleted file mode 100644
index 4c79781..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/about.html
+++ /dev/null
@@ -1,28 +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>June 25, 2008</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</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties
deleted file mode 100644
index f6bc7b9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/l10n/bundle.properties,\
-               about.html,\
-               OSGI-INF/
-javacErrors.. = -assertIdentifier,-enumIdentifier
-jre.compilation.profile = J2SE-1.4
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/src/org/eclipse/ecf/tests/discovery/remote_extender/Activator.java b/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/src/org/eclipse/ecf/tests/discovery/remote_extender/Activator.java
deleted file mode 100644
index e07ad34..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/src/org/eclipse/ecf/tests/discovery/remote_extender/Activator.java
+++ /dev/null
@@ -1,122 +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.tests.discovery.remote_extender;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.hooks.service.EventHook;
-
-public class Activator implements BundleActivator, EventHook {
-	
-	// "_" is a bad tag character for SLP 
-	private static final String MARKER = "org.eclipse.ecf.tests.discovery.remote-extender.Activator.class";
-
-	private static final String CONTAINER_TYPE = System.getProperty("org.eclipse.ecf.tests.discovery.remote-extender.containertype", "ecf.r_osgi.peer");
-	
-	private final String service = System.getProperty("org.eclipse.ecf.tests.discovery.remote-extender.service");
-	private Filter filter;
-	private Map overwrites;
-	private BundleContext context;
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext aContext) throws Exception {
-		if(service == null) {
-			return;
-		}
-		context = aContext;
-		overwrites = new HashMap();
-		filter = context.createFilter("(&" +
-				"(" + Constants.OBJECTCLASS + "=" + service + ")" +
-				"(!(" + IDistributionConstants.SERVICE_EXPORTED_INTERFACES + "=" + new String[]{service} + "))" +
-						")");
-		
-		context.registerService(EventHook.class.getName(), this, null);
-		
-		ServiceReference[] serviceReferences = context.getAllServiceReferences(service, null);
-		if(serviceReferences != null) {
-			for (int i = 0; i < serviceReferences.length; i++) {
-				ServiceReference serviceReference = serviceReferences[i];
-				overwriteServiceRegistration(serviceReference);
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		this.context = null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.osgi.framework.hooks.service.EventHook#event(org.osgi.framework.ServiceEvent, java.util.Collection)
-	 */
-	public void event(ServiceEvent event, Collection contexts) {
-		ServiceReference serviceReference = event.getServiceReference();
-		// either this bundle is not active or it is not responsible
-		// also it might be a cyclic event (http://www.eclipse.org/forums/index.php?t=msg&goto=513544&)
-		if(context == null || !filter.match(serviceReference) || serviceReference.getProperty(MARKER) != null) {
-			return;
-		}
-		
-		switch (event.getType()) {
-			case ServiceEvent.MODIFIED:
-				throw new UnsupportedOperationException("not yet implemented");
-			case ServiceEvent.MODIFIED_ENDMATCH:
-				throw new UnsupportedOperationException("not yet implemented");
-			case ServiceEvent.REGISTERED:
-				contexts.clear();
-				overwriteServiceRegistration(serviceReference);
-				break;
-			case ServiceEvent.UNREGISTERING:
-				ServiceRegistration serviceRegistration = (ServiceRegistration) overwrites.get(serviceReference);
-				serviceRegistration.unregister();
-				break;
-		}
-	}
-
-	private void overwriteServiceRegistration(ServiceReference aServiceReference) {
-		Properties props = new Properties();
-		String[] keys = aServiceReference.getPropertyKeys();
-		for (int i = 0; i < keys.length; i++) {
-			String key = keys[i];
-			if(!Constants.SERVICE_ID.equals(key) || Constants.SERVICE_RANKING.equals(key)) {
-				props.put(key, aServiceReference.getProperty(key));
-			}
-		}
-		props.put(MARKER, Boolean.TRUE);
-		
-		// add OSGi service property indicated export of all interfaces exposed by service (wildcard)
-		props.put(IDistributionConstants.SERVICE_EXPORTED_INTERFACES, new String[]{service});
-		// add OSGi service property specifying config
-		props.put(IDistributionConstants.SERVICE_EXPORTED_CONFIGS, CONTAINER_TYPE);
-		// register remote service
-		Object remoteService = this.context.getService(aServiceReference);
-		// keep in mind that this removes all other interfaces the service was originally registered for
-		ServiceRegistration serviceRegistration = context.registerService(service, remoteService, props);
-		overwrites.put(aServiceReference, serviceRegistration);
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.classpath
deleted file mode 100644
index 2fbb7a2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.project
deleted file mode 100644
index d1c2788..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted</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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3cf3e75..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-#Thu Mar 12 10:54:05 CET 2009

-eclipse.preferences.version=1

-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.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

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

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/META-INF/MANIFEST.MF
deleted file mode 100644
index 65f6430..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted
-Bundle-Version: 1.0.0.qualifer
-Bundle-Activator: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted.Activator
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Bundle-Vendor: %pluginProvider
-Import-Package: org.osgi.framework;version="1.4.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/OSGI-INF/remote-service/HelloWorld.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/OSGI-INF/remote-service/HelloWorld.xml
deleted file mode 100644
index 7375496..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/OSGI-INF/remote-service/HelloWorld.xml
+++ /dev/null
@@ -1,8 +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.helloworld.HelloWorldService"/>

-    <property name="osgi.remote.configuration.type">pojo</property>

-    <property name="osgi.remote.configuration.pojo.address">https://localhost:8080/helloworld</property>

-  </service-description>

-</service-descriptions>

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/plugin.properties
deleted file mode 100644
index 4eef92a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/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=OSGi R4.2 Compendium Local Discovery Tests Poststarted
-pluginProvider=Eclipse.org
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted/Activator.java
deleted file mode 100644
index 63d506e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted/Activator.java
+++ /dev/null
@@ -1,36 +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.tests.osgi.services.discovery.local.poststarted;

-

-import org.osgi.framework.BundleActivator;

-import org.osgi.framework.BundleContext;

-

-public class Activator implements BundleActivator {

-

-	/*

-	 * (non-Javadoc)

-	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)

-	 */

-	public void start(BundleContext context) throws Exception {

-	}

-

-	/*

-	 * (non-Javadoc)

-	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)

-	 */

-	public void stop(BundleContext context) throws Exception {

-	}

-}

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.classpath
deleted file mode 100644
index 2fbb7a2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.project
deleted file mode 100644
index 858f913..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2</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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c6c2ae7..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-#Thu Mar 12 10:54:13 CET 2009

-eclipse.preferences.version=1

-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.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

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

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/MANIFEST.MF
deleted file mode 100644
index 5562a7c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2.Activator
-Remote-Service: OSGI-INF/remote-service/*.xml, /META-INF/osgi/services.remote, ${java.io.tmpdir}/HelloGalileoService.xml, ${java.io.tmpdir}/poststart2/*.xml
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Bundle-Vendor: %pluginProvider
-Import-Package: org.osgi.framework;version="1.4.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/osgi/services.remote b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/osgi/services.remote
deleted file mode 100644
index 976b96a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/META-INF/osgi/services.remote
+++ /dev/null
@@ -1,8 +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.hellomoon.HelloMoonService"/>

-    <property name="osgi.remote.configuration.type">pojo</property>

-    <property name="osgi.remote.configuration.pojo.address">jsoc://moon:4711/hellomoon</property>

-  </service-description>

-</service-descriptions>

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties
deleted file mode 100644
index aa1a008..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/plugin.properties
deleted file mode 100644
index 0544056..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/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=OSGi R4.2 Compendium Local Discovery Tests Postsstarterd 2
-pluginProvider=Eclipse.org
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted2/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted2/Activator.java
deleted file mode 100644
index 728484c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/src/org/eclipse/ecf/tests/osgi/services/discovery/local/poststarted2/Activator.java
+++ /dev/null
@@ -1,40 +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.tests.osgi.services.discovery.local.poststarted2;

-

-import org.osgi.framework.BundleActivator;

-import org.osgi.framework.BundleContext;

-

-public class Activator implements BundleActivator {

-

-	/*

-	 * (non-Javadoc)

-	 * 

-	 * @see

-	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)

-	 */

-	public void start(BundleContext context) throws Exception {

-	}

-

-	/*

-	 * (non-Javadoc)

-	 * 

-	 * @see

-	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)

-	 */

-	public void stop(BundleContext context) throws Exception {

-	}

-}

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.classpath
deleted file mode 100644
index 731ea5f..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.project
deleted file mode 100644
index 8a8b705..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.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.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3eb0882..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,77 +0,0 @@
-#Sat Apr 24 12:22:52 PDT 2010
-eclipse.preferences.version=1
-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.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=disabled
-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=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.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
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/META-INF/MANIFEST.MF
deleted file mode 100644
index f737665..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery.local
-Bundle-Version: 1.0.0.qualifer
-Bundle-Activator: org.eclipse.ecf.tests.osgi.services.discovery.local.Activator
-Require-Bundle: org.junit;bundle-version="3.8.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Import-Package: org.eclipse.core.runtime;version="3.4.0",
- org.osgi.framework;version="1.4.0"
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.ecf.tests.osgi.services.discovery.local
-Bundle-Vendor: %pluginProvider
-
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/OSGI-INF/remote-service/GreeterService.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/OSGI-INF/remote-service/GreeterService.xml
deleted file mode 100644
index 1b49e7d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/OSGI-INF/remote-service/GreeterService.xml
+++ /dev/null
@@ -1,17 +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.pojo.hello.HelloService"/>

-

-    <property name="service.intents">SOAP HTTP</property>

-    <property name="osgi.remote.configuration.type">pojo</property>

-    <property name="osgi.remote.configuration.pojo.address">http://localhost:9000/hello</property>

-  </service-description>

-  <service-description>

-    <provide interface="org.eclipse.ecf.pojo.hello.GreeterService"/>

-

-    <property name="service.intents">SOAP HTTP</property>

-    <property name="osgi.remote.configuration.type">pojo</property>

-    <property name="osgi.remote.configuration.pojo.address">http://localhost:9005/greeter</property>

-  </service-description>

-</service-descriptions>

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/build.properties
deleted file mode 100644
index 4b898f8..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/,\
-               plugin.properties,\
-               config.ini,\
-               data/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/config.ini b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/config.ini
deleted file mode 100644
index d9082d6..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/config.ini
+++ /dev/null
@@ -1,64 +0,0 @@
-# Eclipse runtime configuration file

-# This file contains a number of key/value pairs that are merged into the 

-# System properties on system startup.  The values control the way the 

-# runtime is structured and runs.

-

-# Note:  Only platform:/base/ and file: URLs are supported.  In general the 

-# URLs given may include a version number (e.g., .../location_1.2.3).  

-# If a version is not specified, the system binds

-# to the location which matches exactly or to the versioned location with the

-# latest version number.  If a version number is given then only exact matches

-# are considered.

-

-# The URL for the runtime entry point.  The default value is

-# platform:/base/plugins/org.eclipse.osgi 

-#osgi.framework = platform:/base/plugins/org.eclipse.osgi

-

-# The classpath for the framework found at the osgi.framework location.  This 

-# comma-separated list contains either URLs or simple element names.  Simple

-# names are assumed to be relative to the framework's install directory.  

-# Typically this value need not be set as it is initialized by the framework itself.

-# Version match searching is not done for URLs listed here.

-#osgi.frameworkClassPath =

-

-# The comma-separated list of locations to search for the splash screen file (splash.bmp).

-# For each list element a subdirectory structure based on the pattern nl/<locale> is searched.

-# The system binds to the first matching file.  There is no default value.

-osgi.splashPath = platform:/base/plugins/org.eclipse.platform

-

-# The location of the splash screen file.  If this value is set at system startup it is used 

-# in favour of the osgi.splashPath searching outlined above.  If the value is not set 

-# the searching is done and this key is bound to the result of the search.

-#osgi.splashLocation =

-

-# The comma-separated list of bundles which are automatically installed and optionally started

-# once the system is up and running.  Each entry if of the form

-#     <URL | simple bundle location>[@ [<startlevel>] [":start"]]

-# If the startlevel is omitted then the framework will use the default start level for the bundle.

-# If the "start" tag is added then the bundle will be marked as started after being installed.

-# Simple bundle locations are interepreted as relative to the framework's parent directory.

-# The startlevel indicates the OSGi start level at which the bundle should run.

-# If this value is not set, the system computes an appropriate default.

-#osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start, org.eclipse.equinox.log@4:start

-

-# The product to run.  A given Eclipse configuration may contain many products.

-# The product identified will supply the branding (window icons, title bar text) etc 

-# as well as define the default application to run.  

-eclipse.product=org.eclipse.sdk.ide

-

-# The application to run.  The value specified here is the id of the application extension

-# the runtime will find, instantiate and execute once the system is up.  Note that typically 

-# the identified eclipse.product defines the default application to run.

-#eclipse.application=

-

-# The default workspace location

-osgi.instance.area.default=@user.home/workspace

-

-# The build identifier

-eclipse.buildId=M20071023-1652

-

-# entry required for gtk configurations of eclipse to enable stand-alone help

-osgi.ws=gtk

-

-# End of file marker - must be here

-eof=eof

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGalileoService.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGalileoService.xml
deleted file mode 100644
index 520e870..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGalileoService.xml
+++ /dev/null
@@ -1,8 +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.galileo.HelloGalileoService"/>

-    <property name="osgi.remote.configuration.type">pojo</property>

-    <property name="osgi.remote.configuration.pojo.address">jssoc://galileo:4712/hellogalileo</property>

-  </service-description>

-</service-descriptions>

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGanymedeService.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGanymedeService.xml
deleted file mode 100644
index 5685777..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/data/HelloGanymedeService.xml
+++ /dev/null
@@ -1,8 +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.ganymede.HelloGanymedeService"/>

-    <property name="osgi.remote.configuration.type">pojo</property>

-    <property name="osgi.remote.configuration.pojo.address">jssoc://ganymede:4713/helloganymede</property>

-  </service-description>

-</service-descriptions>

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch
deleted file mode 100644
index 4e0529b..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<booleanAttribute key="append.args" value="true"/>
-<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.osgi.services.discovery.local"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.ecf.tests.osgi.services.discovery.local"/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -clean -console"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.osgi.services.discovery.local"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx384m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.buckminster.cmdline.product"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.common@2:true,org.eclipse.osgi@-1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.app@default:default,org.hamcrest.core@default:default,org.eclipse.core.runtime@default:true,org.eclipse.equinox.registry@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.jobs@default:default,org.junit*4.8.1.v4_8_1_v20100427-1100@default:default,org.eclipse.core.contenttype@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.identity@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/plugin.properties
deleted file mode 100644
index bd8c5a3..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.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=OSGi R4.2 Compendium Local Discovery Tests
-pluginProvider=Eclipse.org
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/Activator.java
deleted file mode 100644
index 1eae35c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/Activator.java
+++ /dev/null
@@ -1,82 +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.tests.osgi.services.discovery.local;

-

-import org.osgi.framework.Bundle;

-import org.osgi.framework.BundleActivator;

-import org.osgi.framework.BundleContext;

-import org.osgi.framework.BundleException;

-

-public class Activator implements BundleActivator {

-

-	// The shared instance

-	private static Activator plugin;

-

-	private BundleContext bc = null;

-

-	/**

-	 * 

-	 * @see

-	 * org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)

-	 */

-	public void start(BundleContext context) throws Exception {

-		plugin = this;

-		bc = context;

-		// To startup the implementation bundle we try to start it.

-		// TODO remove this bad hack.

-		boolean startBundle = startBundle("org.eclipse.ecf.osgi.services.discovery.local");

-		if(!startBundle) {

-			System.err.println("Missing org.eclipse.ecf.osgi.services.discovery.local bundle?");

-		}

-	}

-

-	/**

-	 * @throws BundleException

-	 */

-	public boolean startBundle(final String symbolicName) throws BundleException {

-		Bundle[] bundles = bc.getBundles();

-		for (int i = 0; i < bundles.length; i++) {

-			if (bundles[i].getSymbolicName().startsWith(symbolicName)) {

-				bundles[i].start();

-				return true;

-			}

-		}

-		return false;

-	}

-

-	/**

-	 * 

-	 * @see

-	 * org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)

-	 */

-	public void stop(BundleContext context) throws Exception {

-		plugin = null;

-	}

-

-	/**

-	 * Returns the shared instance

-	 * 

-	 * @return the shared instance

-	 */

-	public static Activator getDefault() {

-		return plugin;

-	}

-

-	public BundleContext getBundleContext() {

-		return bc;

-	}

-

-}

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DiscoveredServiceTrackerImpl.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DiscoveredServiceTrackerImpl.java
deleted file mode 100644
index 19f2efa..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DiscoveredServiceTrackerImpl.java
+++ /dev/null
@@ -1,94 +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.tests.osgi.services.discovery.local;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-
-public class DiscoveredServiceTrackerImpl implements DiscoveredServiceTracker {
-
-	private Collection descriptions = Collections
-			.synchronizedSet(new HashSet());
-
-	private int availNotifications = 0;
-	private int unavailNotifications = 0;
-	private int modifiedNotifications = 0;
-
-	/**
-	 * @return the availNotifications
-	 */
-	public int getAvailNotifications() {
-		return availNotifications;
-	}
-
-	/**
-	 * @return the unavailNotifications
-	 */
-	public int getUnavailNotifications() {
-		return unavailNotifications;
-	}
-
-	public Collection getAvailableDescriptions() {
-		return Collections.unmodifiableCollection(descriptions);
-	}
-
-	/**
-	 * @return the modifiedNotifications
-	 */
-	public int getModifiedNotifications() {
-		return modifiedNotifications;
-	}
-
-	public void clearLists() {
-		if (descriptions != null) {
-			descriptions.clear();
-		}
-	}
-
-	public void serviceChanged(DiscoveredServiceNotification notification) {
-		switch (notification.getType()) {
-		case DiscoveredServiceNotification.AVAILABLE:
-			System.out.println("["+this+"] "+"Available notified for "
-					+ notification.getServiceEndpointDescription()
-							.getProvidedInterfaces());
-			descriptions.add(notification.getServiceEndpointDescription());
-			availNotifications++;
-			break;
-		case DiscoveredServiceNotification.MODIFIED:
-			System.out.println("["+this+"] "+"Modified notified for "
-					+ notification.getServiceEndpointDescription()
-							.getProvidedInterfaces());
-			descriptions.remove(notification.getServiceEndpointDescription());
-			descriptions.add(notification.getServiceEndpointDescription());
-			modifiedNotifications++;
-			break;
-		case DiscoveredServiceNotification.UNAVAILABLE:
-			System.out.println("["+this+"] "+"Unavailable notified for "
-					+ notification.getServiceEndpointDescription()
-							.getProvidedInterfaces());
-			descriptions.remove(notification.getServiceEndpointDescription());
-			unavailNotifications++;
-			break;
-		default:
-			break;
-		}
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DistributedOSGiBasedStaticInformationTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DistributedOSGiBasedStaticInformationTest.java
deleted file mode 100644
index 8ad9687..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/src/org/eclipse/ecf/tests/osgi/services/discovery/local/DistributedOSGiBasedStaticInformationTest.java
+++ /dev/null
@@ -1,282 +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.tests.osgi.services.discovery.local;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * @author Thomas Kiesslich
- * 
- */
-public class DistributedOSGiBasedStaticInformationTest extends TestCase {
-
-	/**
-	 * @throws java.lang.Exception
-	 */
-	protected void setUp() throws Exception {
-	}
-
-	/**
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	/**
-	 * These services come from the default location of this bundle.
-	 */
-	public void testReadingFromXMLBundle() {
-		String interfaceName1 = "org.eclipse.ecf.pojo.hello.HelloService";
-		String interfaceName2 = "org.eclipse.ecf.pojo.hello.GreeterService";
-		DiscoveredServiceTrackerImpl discoServiceTracker = new DiscoveredServiceTrackerImpl();
-		registerDiscoveredServiceTracker(null, null, null, discoServiceTracker);
-		assertEquals(2, discoServiceTracker.getAvailNotifications());
-		Iterator /* <ServiceEndpointDescription> */result = discoServiceTracker
-				.getAvailableDescriptions().iterator();
-		boolean foundInterface1 = false;
-		boolean foundInterface2 = false;
-		while (result.hasNext()) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) result
-					.next();
-			if (sed.getProvidedInterfaces().contains(interfaceName1)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("SOAP HTTP", props.get("service.intents"));
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("http://localhost:9000/hello", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface1 = true;
-			} else if (sed.getProvidedInterfaces().contains(interfaceName2)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("SOAP HTTP", props.get("service.intents"));
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("http://localhost:9005/greeter", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface2 = true;
-			} else {
-				fail("a ServiceEndpointDescription found that is not expected");
-			}
-		}
-		assertTrue(foundInterface1);
-		assertTrue(foundInterface2);
-	}
-
-	/**
-	 * This service comes from the default location in bundle
-	 * org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted.
-	 */
-	public void testGetServicesFromDefaultLocation() {
-		String interfaceName1 = "org.eclipse.ecf.helloworld.HelloWorldService"; //$NON-NLS-1$
-		DiscoveredServiceTrackerImpl discoServiceTracker = new DiscoveredServiceTrackerImpl();
-		Activator ac = Activator.getDefault();
-		assertNotNull(ac);
-		registerDiscoveredServiceTracker(interfaceName1, null, null,
-				discoServiceTracker);
-		// start up post started
-		boolean startBundle = false;
-		try {
-			startBundle = ac
-					.startBundle("org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted");
-		} catch (BundleException e) {
-			fail(e.getMessage());
-		}
-		assertTrue(startBundle);
-		assertEquals(1, discoServiceTracker.getAvailNotifications());
-		Iterator /* <ServiceEndpointDescription> */result = discoServiceTracker
-				.getAvailableDescriptions().iterator();
-		boolean foundInterface1 = false;
-		while (result.hasNext()) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) result
-					.next();
-			if (sed.getProvidedInterfaces().contains(interfaceName1)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("https://localhost:8080/helloworld", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface1 = true;
-			} else {
-				fail("a ServiceEndpointDescription found that is not expected");
-			}
-		}
-		assertTrue(foundInterface1);
-	}
-
-	/**
-	 * This services are all referenced from the Manifest Header entry
-	 * remote-service in the bundle
-	 * org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2 .
-	 */
-	public void testGetServicesFromManifestDefinedLocations() {
-		createDataFilesInTmp();
-		
-		String interfaceName1 = "org.eclipse.ecf.hellomoon.HelloMoonService";
-		String interfaceName2 = "org.eclipse.ecf.galileo.HelloGalileoService";
-		String interfaceName3 = "org.eclipse.ecf.ganymede.HelloGanymedeService";
-		DiscoveredServiceTrackerImpl discoServiceTracker = new DiscoveredServiceTrackerImpl();
-		Activator ac = Activator.getDefault();
-		assertNotNull(ac);
-		registerDiscoveredServiceTracker(interfaceName1, interfaceName2,
-				interfaceName3, discoServiceTracker);
-		// start up post started
-		boolean startBundle = false;
-		try {
-			startBundle = ac
-					.startBundle("org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2");
-		} catch (BundleException e) {
-			fail(e.getMessage());
-		}
-		assertTrue(startBundle);
-		assertEquals(3, discoServiceTracker.getAvailNotifications());
-		Iterator /* <ServiceEndpointDescription> */result = discoServiceTracker
-				.getAvailableDescriptions().iterator();
-		boolean foundInterface1 = false;
-		boolean foundInterface2 = false;
-		boolean foundInterface3 = false;
-		while (result.hasNext()) {
-			ServiceEndpointDescription sed = (ServiceEndpointDescription) result
-					.next();
-			if (sed.getProvidedInterfaces().contains(interfaceName1)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("jsoc://moon:4711/hellomoon", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface1 = true;
-			} else if (sed.getProvidedInterfaces().contains(interfaceName2)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("jssoc://galileo:4712/hellogalileo", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface2 = true;
-			} else if (sed.getProvidedInterfaces().contains(interfaceName3)) {
-				Map props = sed.getProperties();
-				assertNotNull(props);
-				assertEquals("pojo", props
-						.get("osgi.remote.configuration.type"));
-				assertEquals("jssoc://ganymede:4713/helloganymede", props
-						.get("osgi.remote.configuration.pojo.address"));
-				foundInterface3 = true;
-			} else {
-				fail("a ServiceEndpointDescription found that is not expected");
-			}
-		}
-		assertTrue(foundInterface1);
-		assertTrue(foundInterface2);
-		assertTrue(foundInterface3);
-	}
-
-	// create the test data in java.io.tmpdir first for the test to read it later
-	private void createDataFilesInTmp() {
-		String property = System.getProperty("java.io.tmpdir");
-		Activator ac = Activator.getDefault();
-		Bundle bundle = ac.getBundleContext().getBundle();
-		Enumeration e1 = bundle.findEntries("data", "*.xml", false);
-		while (e1.hasMoreElements()) {
-			try {
-				URL url = (URL) e1.nextElement();
-				File file = new File(FileLocator.toFileURL(url).getFile());
-				File tempFile = null;
-				if(file.getName().equals("HelloGalileoService.xml")) {
-					tempFile = new File(property + File.separator + file.getName());
-				} else {
-					File dir = new File(property + File.separator + "poststart2" + File.separator);
-					dir.mkdir();
-					dir.deleteOnExit();
-					tempFile = new File(property + File.separator + "poststart2" + File.separator + file.getName());
-				}
-				copyTo(file, tempFile);
-				tempFile.deleteOnExit();
-			} catch (IOException e) {
-				fail(e.getMessage());
-			}
-		}
-	}
-	
-	private void copyTo(File from, File to) throws IOException {
-		InputStream in = new FileInputStream(from);
-		OutputStream out = new FileOutputStream(to);
-		
-		byte[] buf = new byte[1024];
-		int len;
-		while ((len = in.read(buf)) > 0){
-			out.write(buf, 0, len);
-		}
-		in.close();
-		out.close();
-	}
-
-	/**
-	 * @param interfaceName1
-	 * @param interfaceName2
-	 * @param discoServiceTracker
-	 */
-	private void registerDiscoveredServiceTracker(String interfaceName1,
-			String interfaceName2, String interfaceName3,
-			DiscoveredServiceTrackerImpl discoServiceTracker) {
-		Activator ac = Activator.getDefault();
-		assertNotNull(ac);
-		BundleContext bc = ac.getBundleContext();
-
-		Dictionary properties = new Hashtable();
-		if (interfaceName1 != null) {
-			List interfaces = new ArrayList();
-			interfaces.add(interfaceName1);
-			if (interfaceName2 != null) {
-				interfaces.add(interfaceName2);
-			}
-			if (interfaceName3 != null) {
-				interfaces.add(interfaceName3);
-			}
-			properties
-					.put(
-							DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA,
-							interfaces);
-		}
-		bc.registerService(DiscoveredServiceTracker.class.getName(),
-				discoServiceTracker, properties);
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.classpath
deleted file mode 100644
index ad32c83..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.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/JavaSE-1.6"/>
-	<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.osgi.services.discovery/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
deleted file mode 100644
index fbb61be..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 2f6de0d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,73 +0,0 @@
-#Thu May 06 14:37:52 PDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-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=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.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.6
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index c459f9a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,91 +0,0 @@
-#Fri May 08 23:37:35 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=Ignore
-LEAK_IMPLEMENT=Ignore
-LEAK_METHOD_PARAM=Ignore
-LEAK_METHOD_RETURN_TYPE=Ignore
-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/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 050bbd5..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Thu Feb 05 15:23:15 PST 2009
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/META-INF/MANIFEST.MF
deleted file mode 100644
index acd27d9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: OSGi RFC119 Discovery tests
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.discovery
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.discovery.Activator
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.ecf.core.identity,
- org.eclipse.ecf.core.util,
- org.eclipse.ecf.discovery,
- org.eclipse.ecf.osgi.services.discovery,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
-Require-Bundle: org.junit;bundle-version="3.8.2"
-Bundle-Localization: plugin
-Export-Package: org.eclipse.ecf.tests.internal.osgi.discovery;x-internal:=true,
- org.eclipse.ecf.tests.osgi.services.discovery;version="1.0.0"
-
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html
deleted file mode 100644
index 4c79781..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html
+++ /dev/null
@@ -1,28 +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>June 25, 2008</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</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/build.properties
deleted file mode 100644
index cdd2db7..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               about.html,\
-               plugin.properties
-src.includes = about.html
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties
deleted file mode 100644
index 1a272bc..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-############################################################################
-# Copyright (c) 2009 Eclipsesource 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
-plugin.provider=Eclipse.org - ECF
-
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/internal/osgi/discovery/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/internal/osgi/discovery/Activator.java
deleted file mode 100644
index 106f30c..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/internal/osgi/discovery/Activator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.ecf.tests.internal.osgi.discovery;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public static final String BUNDLE_NAME = "org.eclipse.ecf.tests.osgi.services.discovery"; //$NON-NLS-1$
-	
-	private BundleContext context;
-	private static Activator plugin;
-
-	public static Activator getDefault() {
-		return plugin;
-	}
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		plugin = this;
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		this.context = null;
-		plugin = null;
-	}
-
-	public BundleContext getContext() {
-		return context;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/ListenerTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/ListenerTest.java
deleted file mode 100644
index 39eb3f0..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/ListenerTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2009 EclipseSource 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:
-*   EclipseSource - initial API and implementation
-******************************************************************************/
-package org.eclipse.ecf.tests.osgi.services.discovery;
-
-import org.eclipse.ecf.osgi.services.discovery.IHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.IProxyDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.LoggingHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.LoggingProxyDiscoveryListener;
-import org.eclipse.ecf.tests.internal.osgi.discovery.Activator;
-import org.osgi.framework.ServiceRegistration;
-
-public class ListenerTest extends PublishTest {
-
-	ServiceRegistration hostDiscoveryListenerRegistration;
-	ServiceRegistration proxyDiscoveryListenerRegistration;
-	
-	protected IHostDiscoveryListener createHostDiscoveryListener() {
-		return new LoggingHostDiscoveryListener();
-	}
-
-	protected IProxyDiscoveryListener createProxyDiscoveryListener() {
-		return new LoggingProxyDiscoveryListener();
-	}
-
-	protected void setUp() throws Exception {
-		// Register listeners
-		hostDiscoveryListenerRegistration = Activator.getDefault().getContext().registerService(IHostDiscoveryListener.class.getName(), createHostDiscoveryListener(), null);
-		proxyDiscoveryListenerRegistration = Activator.getDefault().getContext().registerService(IProxyDiscoveryListener.class.getName(), createProxyDiscoveryListener(), null);
-		super.setUp();
-	}
-	
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		hostDiscoveryListenerRegistration.unregister();
-		proxyDiscoveryListenerRegistration.unregister();
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/PublishTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/PublishTest.java
deleted file mode 100644
index 3ec07aa..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/src/org/eclipse/ecf/tests/osgi/services/discovery/PublishTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2009 EclipseSource 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:
-*   EclipseSource - initial API and implementation
-******************************************************************************/
-package org.eclipse.ecf.tests.osgi.services.discovery;
-
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.List;
-import java.util.Properties;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.util.Trace;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.eclipse.ecf.tests.internal.osgi.discovery.Activator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-public class PublishTest extends TestCase {
-
-	BundleContext context;
-	ID endpointID;
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		context = Activator.getDefault().getContext();
-		endpointID = IDFactory.getDefault().createStringID("myid");
-	}
-	
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		endpointID = null;
-		context = null;
-	}
-	
-	class TestServicePublication implements RemoteServicePublication {
-
-		public ServiceReference getReference() {
-			// TODO Auto-generated method stub
-			return null;
-		}
-		
-	}
-	
-	class DiscoveredServiceTrackerImpl implements DiscoveredServiceTracker {
-
-		public void serviceChanged(DiscoveredServiceNotification notification) {
-			Trace.trace(Activator.BUNDLE_NAME, "DiscoveredServiceTrackerImpl.serviceChanged("+notification+")");
-		}
-		
-	}
-	
-	protected Properties createServicePublicationProperties(List interfaces) {
-		Properties props = new Properties();
-		props.put(RemoteServicePublication.SERVICE_INTERFACE_NAME, interfaces);
-		props.put(RemoteServicePublication.ENDPOINT_CONTAINERID, endpointID);
-		byte[] serviceIdAsBytes = new Long(100).toString().getBytes();
-		props.put("ecf.rsvc.id", serviceIdAsBytes);
-		props.put("ecf.rsvc.ns", "namespace");
-		return props;
-	}
-	
-	protected ServicePublication createServicePublication() {
-		return new TestServicePublication();
-	}
-	
-	public void testServicePublish() throws Exception {
-	    List interfaces = new ArrayList();
-	    interfaces.add("foo.bar");
-		ServiceRegistration reg = context.registerService(ServicePublication.class.getName(), createServicePublication(), (Dictionary) createServicePublicationProperties(interfaces));
-		Thread.sleep(60000);
-		reg.unregister();
-		Thread.sleep(60000);
-	}
-	
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF
index dfa30ca..b0db8d9 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/META-INF/MANIFEST.MF
@@ -13,7 +13,6 @@
  org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
  org.eclipse.ecf;bundle-version="3.0.0",
  org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
  org.junit,
  org.eclipse.equinox.common,
  org.eclipse.equinox.concurrent;bundle-version="1.0.0",
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project
deleted file mode 100644
index d8a4405..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery</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/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 712f540..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,73 +0,0 @@
-#Tue Mar 09 13:55:54 PST 2010
-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.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=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=disabled
-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=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.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.5
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch
deleted file mode 100644
index 1a8766e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceHostApplication.launch
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="append.args" value="true"/>
-<stringAttribute key="application" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.GenericMultiServiceHost"/>
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<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/GenericMultiServiceHostApplication"/>
-<booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.ecf.example.collab,org.apache.httpcomponents.httpcore.nio,ch.ethz.iks.r_osgi.remote,org.eclipse.ecf.provider.jgroups,org.eclipse.ecf.services.quotes.starwars,org.eclipse.ecf.examples.datashare.app,org.eclipse.ecf.tests.provider.datashare.nio,org.eclipse.team.ecf.ui,org.eclipse.ecf.mgmt.app,org.eclipse.ecf.presence.ui,org.eclipse.ecf.discovery.ui.browser,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.provider.bittorrent.ui,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.tests.mgmt.framework,org.eclipse.emf.ecore.change,org.eclipse.ecf.provider.filetransfer.scp,org.eclipse.ecf.examples.osgiservice.hello,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.provider.jms.activemq,com.skype,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.example.collab.editor,org.eclipse.ecf.provider.skype.ui,org.eclipse.ecf.tests.presence,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.provider.irc.bot,org.eclipse.ecf.provider.irc.ui,org.eclipse.ecf.doc,org.eclipse.ecf.tests.sync,org.eclipse.ecf.tests.provider.jslp,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests,org.eclipse.ecf.tests.osgi.services.discovery,org.eclipse.ecf.tests.call,org.eclipse.ecf.provider.nntp.security,org.eclipse.ecf.salvo.application,org.eclipse.ecf.tests.protocol.msn,org.eclipse.ecf.tests.mgmt.ds,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.provider.twitter.ui,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer,org.eclipse.ecf.filetransfer,org.eclipse.ecf.examples.loadbalancing,org.eclipse.ecf.telephony.call,org.eclipse.ecf.salvo.ui.navigator,org.eclipse.ecf.ui.capabilities,org.eclipse.ecf.tests.filetransfer,org.eclipse.ecf.mgmt.ds,org.eclipse.ecf.provider.yahoo.ui,org.eclipse.ecf.tests.provider.jms.activemq,org.eclipse.ecf.ui,org.eclipse.ecf.protocol.nntp.model,org.eclipse.ecf.services.quotes,org.eclipse.ecf.storage,org.eclipse.ecf.mgmt.framework.host,org.eclipse.emf.ecore,org.eclipse.emf.edit.ui,org.eclipse.ecf.examples.updatesite.server,org.eclipse.ecf.provider.jms,org.eclipse.ecf.discovery.ui.properties.tabbed,org.eclipse.ecf.telephony.call.ui,org.eclipse.ecf.tests.provider.jgroups,org.eclipse.ecf.protocol.nntp.store.filesystem,org.eclipse.ecf.example.clients,org.eclipse.ecf.provider.ui,org.eclipse.helios.tests,org.eclipse.ecf.discovery.ui.edit,org.eclipse.ecf.provider.filetransfer.httpclient.ssl,org.jivesoftware.smack,org.eclipse.ecf.provider.jms.qpid,org.eclipse.ecf.discovery.ui.properties,org.eclipse.ecf.samples.nntp,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.twitter.ui.hub,org.eclipse.ecf.server.jgroups,org.eclipse.ecf.provider.irc,org.eclipse.ecf.examples.remoteservice.discovery.local,org.eclipse.ecf.mgmt.app.host,org.eclipse.ecf.datashare,org.eclipse.ecf.examples.remoteservices.hello.consumer,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.ecf.protocol.nntp.model.test,org.eclipse.ecf.provider.xmpp.ui,org.eclipse.ecf.tests.provider.jmdns,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.tests.filetransfer.jreprovider,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.examples.eventadmin.app,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer,org.eclipse.ecf.provider.riena,org.eclipse.ecf.provider.jms.activemq.ui,org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.remoteservice.ui.dosgi,org.eclipse.ecf.provider.filetransfer.efs,com.commonsense.backstop.client.axis,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2,org.eclipse.ecf.tests.sharedobject,org.eclipse.ecf.tests.provider.xmpp,org.eclipse.emf.common.ui,org.eclipse.ecf.tests.storage,org.eclipse.ecf.examples.remoteservices.dictionary.common,com.commonsense.backstop.tests.client.axis,org.eclipse.ecf.discovery.ui,org.eclipse.ecf.protocol.nntp.store.filesystem.tests,org.eclipse.ecf.tests.discovery,org.eclipse.ecf.tests.provider.filetransfer.scp,org.eclipse.ecf.protocol.nntp.core,org.eclipse.ecf.tests.provider.jms.weblogic,org.eclipse.ecf.provider.twitter,org.eclipse.ecf.provider.rss,org.eclipse.ecf.salvo.ui,org.eclipse.ecf.examples.loadbalancing.server,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j,org.eclipse.ecf.provider.r_osgi,org.eclipse.ecf.tests.provider.nntp,org.eclipse.ecf.remoteservice.ui,org.eclipse.emf.edit,org.apache.mime4j,org.eclipse.emf.common,org.eclipse.ecf.tests.provider.filetransfer.efs,org.eclipse.ecf.springframework,org.eclipse.ecf.remoteservice.soap,org.eclipse.ecf.examples.remoteservices.hello.dm.host,org.eclipse.ecf.provider.filetransfer.sharedobject,org.eclipse.ecf.tests.provider.filetransfer.xmpp,org.eclipse.ecf.tests.provider.twitter,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.tests.apache.httpclient.server,org.eclipse.ecf.presence.bot,org.eclipse.ecf.tests.server.generic,org.eclipse.ecf.provider.jslp,org.eclipse.ecf.mgmt.framework,org.eclipse.ecf.tests.osgi.services.discovery.local,org.eclipse.helios.tools,org.eclipse.ecf.provider.aim,org.eclipse.ecf.protocol.nntp.store.derby,org.eclipse.ecf.examples.updatesite.client,ch.ethz.iks.slp,org.eclipse.ecf.provider.nntp.ui,org.eclipse.ecf.tests.filetransfer.httpserver,org.eclipse.ecf.examples.remoteservices.hello.host,org.eclipse.ecf.console,org.eclipse.ecf.provider.skype,org.eclipse.team.ecf.core,org.eclipse.ecf.examples.loadbalancing.consumer,org.eclipse.ecf.provider.filetransfer.ssl,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client,org.eclipse.ecf.tests.provider.discovery,org.apache.httpcomponents.httpcore,org.eclipse.ecf.provider.yahoo,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted,org.eclipse.ecf.examples.remoteservices.hello.ds.host,org.eclipse.ecf.services.quotes.eclipsetwitter,org.eclipse.ecf.client.jgroups,org.json,com.skype.win32.win32.x86,org.eclipse.ecf.server,org.eclipse.emf,org.eclipse.ecf.examples.remoteservice.rest.twitter,org.eclipse.ecf.tests.provider.skype,org.eclipse.ecf.provider.nntp,org.eclipse.ecf.examples.loadbalancing.servicehost,org.eclipse.ecf.mgmt.ds.host,org.eclipse.ecf.tests.mgmt.app,org.eclipse.ecf.tests.provider.jms,org.eclipse.ecf.docshare,org.eclipse.ecf.tests.datashare,org.eclipse.ecf.examples.provider.dictionary.soap.client,org.eclipse.ecf.examples.remoteservices.hello2,org.eclipse.ecf.services.quotes.oldskool,org.eclipse.ecf.provider.twitter.ui.hub.product,org.eclipse.ecf.provider.jms.weblogic,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.presence,org.eclipse.ecf.sync,org.eclipse.ecf.provider.jmdns,com.skype.examples,org.eclipse.ecf.provider.msn,org.eclipse.ecf.provider.msn.ui,org.eclipse.ecf.provider.filetransfer,org.eclipse.ecf.provider.bittorrent,org.eclipse.ecf.provider.jms.weblogic.ui"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../GenericMultiServiceHostApplication"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx384m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.jobs@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.hamcrest.core@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime@default:true,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi.services@default:default,org.eclipse.core.contenttype@default:default,javax.servlet@default:default,org.eclipse.equinox.app@default:default,org.eclipse.osgi@-1:true,org.eclipse.equinox.registry@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.examples.remoteservices.server@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.mgmt.p2.profile.host@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.mgmt.p2@default:default,org.eclipse.ecf.tests.httpservice.util@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.tests.provider.discovery.local@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,eclipse.p2.host@default:default,org.example.processor.assignment1@default:default,org.eclipse.ecf.example.remoteservice.soap.host.hello@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.remoteservice.apt.java6@default:default,org.example.processor.assignment3@default:default,eclipse.p2@default:default,org.eclipse.ecf.examples.tests.remoteservice.soap.host.hello@default:default,org.example.processor@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.example.processor.solution@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.mgmt.p2.repository.host@default:default,org.example.processor.assignment2@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.tests.mgmt.p2@default:default,org.eclipse.ecf.remoteservice.soap.host@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.eclipse.ecf.mgmt.p2.install.host@default:default,org.eclipse.ecf.examples.loadbalancing.ds.consumer@default:default,org.eclipse.ecf.identity@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="false"/>
-</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch
deleted file mode 100644
index b0426e1..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/GenericMultiServiceProxyTest.launch
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<booleanAttribute key="append.args" value="true"/>
-<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
-<booleanAttribute key="default" value="false"/>
-<stringAttribute key="deselected_workspace_plugins" value="org.eclipse.ecf.example.collab,org.apache.httpcomponents.httpcore.nio,ch.ethz.iks.r_osgi.remote,org.eclipse.ecf.provider.jgroups,org.eclipse.ecf.services.quotes.starwars,org.eclipse.ecf.examples.datashare.app,org.eclipse.ecf.tests.provider.datashare.nio,org.eclipse.team.ecf.ui,org.eclipse.ecf.mgmt.app,org.eclipse.ecf.presence.ui,org.eclipse.ecf.discovery.ui.browser,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.provider.bittorrent.ui,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.tests.mgmt.framework,org.eclipse.emf.ecore.change,org.eclipse.ecf.provider.filetransfer.scp,org.eclipse.ecf.examples.osgiservice.hello,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.provider.jms.activemq,com.skype,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.example.collab.editor,org.eclipse.ecf.provider.skype.ui,org.eclipse.ecf.tests.presence,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.provider.irc.bot,org.apache.commons.httpclient,org.eclipse.ecf.provider.irc.ui,org.eclipse.ecf.doc,org.eclipse.ecf.tests.sync,org.eclipse.ecf.tests.provider.jslp,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests,org.eclipse.ecf.tests.osgi.services.discovery,org.eclipse.ecf.tests.call,org.eclipse.ecf.provider.nntp.security,org.eclipse.ecf.salvo.application,org.eclipse.ecf.tests.protocol.msn,org.eclipse.ecf.tests.mgmt.ds,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.provider.twitter.ui,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer,org.eclipse.ecf.examples.loadbalancing,org.eclipse.ecf.telephony.call,org.eclipse.ecf.salvo.ui.navigator,org.eclipse.ecf.ui.capabilities,org.eclipse.ecf.tests.filetransfer,org.eclipse.ecf.mgmt.ds,org.eclipse.ecf.provider.yahoo.ui,org.eclipse.ecf.tests.provider.jms.activemq,org.eclipse.ecf.ui,org.eclipse.ecf.protocol.nntp.model,org.eclipse.ecf.services.quotes,org.eclipse.ecf.mgmt.framework.host,org.eclipse.ecf.storage,org.eclipse.emf.ecore,org.eclipse.emf.edit.ui,org.eclipse.ecf.examples.updatesite.server,org.eclipse.ecf.provider.jms,org.eclipse.ecf.discovery.ui.properties.tabbed,org.eclipse.ecf.telephony.call.ui,org.eclipse.ecf.tests.provider.jgroups,org.eclipse.ecf.protocol.nntp.store.filesystem,org.eclipse.ecf.example.clients,org.eclipse.ecf.provider.ui,org.eclipse.helios.tests,org.eclipse.ecf.discovery.ui.edit,org.eclipse.ecf.provider.filetransfer.httpclient.ssl,org.eclipse.ecf.provider.jms.qpid,org.jivesoftware.smack,org.eclipse.ecf.discovery.ui.properties,org.eclipse.ecf.samples.nntp,org.eclipse.ecf.provider.datashare,org.eclipse.ecf.provider.twitter.ui.hub,org.eclipse.ecf.server.jgroups,org.eclipse.ecf.provider.irc,org.eclipse.ecf.examples.remoteservice.discovery.local,org.eclipse.ecf.mgmt.app.host,org.eclipse.ecf.datashare,org.eclipse.ecf.examples.remoteservices.hello.consumer,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.helios,org.eclipse.ecf.protocol.nntp.model.test,org.eclipse.ecf.provider.xmpp.ui,org.eclipse.ecf.tests.provider.jmdns,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.tests.filetransfer.jreprovider,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.examples.eventadmin.app,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer,org.eclipse.ecf.provider.riena,org.eclipse.ecf.provider.jms.activemq.ui,org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.remoteservice.ui.dosgi,org.eclipse.ecf.provider.filetransfer.efs,com.commonsense.backstop.client.axis,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2,org.eclipse.ecf.tests.sharedobject,org.eclipse.ecf.tests.provider.xmpp,org.eclipse.emf.common.ui,org.eclipse.ecf.tests.storage,org.eclipse.ecf.examples.remoteservices.dictionary.common,com.commonsense.backstop.tests.client.axis,org.eclipse.ecf.discovery.ui,org.eclipse.ecf.protocol.nntp.store.filesystem.tests,org.eclipse.ecf.tests.discovery,org.eclipse.ecf.tests.provider.filetransfer.scp,org.eclipse.ecf.protocol.nntp.core,org.eclipse.ecf.tests.provider.jms.weblogic,org.eclipse.ecf.provider.twitter,org.eclipse.ecf.provider.rss,org.eclipse.ecf.salvo.ui,org.eclipse.ecf.examples.loadbalancing.server,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j,org.eclipse.ecf.provider.r_osgi,org.eclipse.ecf.tests.provider.nntp,org.eclipse.ecf.remoteservice.ui,org.eclipse.emf.edit,org.apache.mime4j,org.eclipse.emf.common,org.eclipse.ecf.tests.provider.filetransfer.efs,org.eclipse.ecf.springframework,org.eclipse.ecf.remoteservice.soap,org.eclipse.ecf.examples.remoteservices.hello.dm.host,org.eclipse.ecf.provider.filetransfer.sharedobject,org.eclipse.ecf.tests.provider.filetransfer.xmpp,org.eclipse.ecf.tests.provider.twitter,org.apache.commons.codec,org.eclipse.ecf.tests.apache.httpclient.server,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.presence.bot,org.eclipse.ecf.tests.server.generic,org.eclipse.ecf.provider.jslp,org.eclipse.ecf.mgmt.framework,org.eclipse.ecf.tests.osgi.services.discovery.local,org.eclipse.helios.tools,org.eclipse.ecf.provider.aim,org.eclipse.ecf.protocol.nntp.store.derby,org.eclipse.ecf.examples.updatesite.client,ch.ethz.iks.slp,org.eclipse.ecf.provider.nntp.ui,org.eclipse.ecf.tests.filetransfer.httpserver,org.eclipse.ecf.examples.remoteservices.hello.host,org.eclipse.ecf.console,org.eclipse.ecf.provider.skype,org.eclipse.team.ecf.core,org.eclipse.ecf.examples.loadbalancing.consumer,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client,org.eclipse.ecf.tests.provider.discovery,org.apache.httpcomponents.httpcore,org.eclipse.ecf.provider.yahoo,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted,org.eclipse.ecf.examples.remoteservices.hello.ds.host,org.eclipse.ecf.services.quotes.eclipsetwitter,org.eclipse.ecf.client.jgroups,org.json,com.skype.win32.win32.x86,org.eclipse.ecf.server,org.eclipse.emf,org.eclipse.ecf.examples.remoteservice.rest.twitter,org.eclipse.ecf.tests.provider.skype,org.eclipse.ecf.provider.nntp,org.eclipse.ecf.examples.loadbalancing.servicehost,org.eclipse.ecf.mgmt.ds.host,org.eclipse.ecf.tests.mgmt.app,org.eclipse.ecf.tests.provider.jms,org.eclipse.ecf.docshare,org.eclipse.ecf.tests.datashare,org.eclipse.ecf.examples.provider.dictionary.soap.client,org.eclipse.ecf.examples.remoteservices.hello2,org.eclipse.ecf.services.quotes.oldskool,org.eclipse.ecf.provider.twitter.ui.hub.product,org.eclipse.ecf.provider.jms.weblogic,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.presence,org.eclipse.ecf.sync,org.eclipse.ecf.provider.jmdns,com.skype.examples,org.eclipse.ecf.provider.msn,org.eclipse.ecf.provider.msn.ui,org.eclipse.ecf.provider.bittorrent,org.eclipse.ecf.provider.jms.weblogic.ui"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.GenericMultiServiceProxyTest"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx384m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.ecf.client.jgroups.jgClientProduct"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.databinding.property@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.ui.ide@default:default,org.hamcrest.core@default:default,org.eclipse.text@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.jface@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.runtime@default:true,org.eclipse.osgi@-1:true,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.variables@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.core.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.net@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.core.filesystem@default:default,javax.servlet@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.ui.win32@default:false,org.eclipse.core.expressions@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.help@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.core.resources@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.ui.views@default:default,org.eclipse.core.resources.win32.x86@default:false,com.ibm.icu@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.jobs@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.remoteservice@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="false"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF
deleted file mode 100644
index 3a425f2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,24 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Localdiscovery
-Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.eclipse.osgi.framework.console,
- org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ecf.tests,
- org.eclipse.ecf.osgi.services.distribution;bundle-version="1.0.0",
- org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
- org.eclipse.ecf;bundle-version="3.0.0",
- org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
- org.junit,
- org.eclipse.equinox.common,
- org.eclipse.equinox.concurrent;bundle-version="1.0.0",
- org.eclipse.ecf.tests.osgi.services.distribution;bundle-version="1.0.0",
- org.eclipse.equinox.app;bundle-version="1.3.0",
- org.eclipse.ecf.osgi.services.discovery.local;bundle-version="1.0.0"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties
deleted file mode 100644
index 1b67e5a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               plugin.xml,\
-               genericmultiservicehost.xml,\
-               GenericMultiServiceProxyTest.launch,\
-               GenericMultiServiceHostApplication.launch
-src.includes = GenericMultiServiceHostApplication.launch,\
-               GenericMultiServiceProxyTest.launch,\
-               genericmultiservicehost.xml
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml
deleted file mode 100644
index 19b8c77..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/genericmultiservicehost.xml
+++ /dev/null
@@ -1,17 +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.tests.remoteservice.IConcatService"/>
-      <property name="ecf.sp.cid">ecftcp://localhost:9655/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-description>
-      <provide
-interface="org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1"/>
-      <property
-name="ecf.sp.cid">ecftcp://localhost:9655/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/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml
deleted file mode 100644
index a55de1e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-   <extension
-         id="GenericMultiServiceHost"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="*"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.generic.GenericMultiServiceHostApplication">
-         </run>
-      </application>
-   </extension>
-
-</plugin>
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java
deleted file mode 100644
index c72a464..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/internal/osgi/services/distribution/localdiscovery/Activator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public static final String PLUGIN_ID = "org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery";
-	
-	private static Activator plugin;
-	private BundleContext context;
-	
-	public static final Activator getDefault() {
-		return plugin;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		plugin = this;
-		this.context = context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		context = null;
-		plugin = null;
-	}
-
-	public BundleContext getContext() {
-		return context;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java
deleted file mode 100644
index 1e9414d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/AbstractMultiServiceProxyTest.java
+++ /dev/null
@@ -1,96 +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.tests.osgi.services.distribution.localdiscovery;
-
-import java.net.URL;
-import java.util.Dictionary;
-
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.osgi.services.discovery.local.DiscoveryCommandProvider;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.ecf.tests.osgi.services.distribution.AbstractDistributionTest;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-
-public abstract class AbstractMultiServiceProxyTest extends
-		AbstractDistributionTest {
-
-	protected DiscoveryCommandProvider discoveryCommandProvider;
-	protected URL serviceDescriptionURL;
-	protected IContainer clientContainer;
-	
-	protected void setUp() throws Exception {
-		discoveryCommandProvider = getDiscoveryCommandProvider();
-		serviceDescriptionURL = getServiceDescriptionURL();
-		clientContainer = getContainerFactory().createContainer(getClientContainerName());
-	}
-	
-	protected abstract URL getServiceDescriptionURL();
-	
-	protected void tearDown() throws Exception {
-		discoveryCommandProvider = null;
-		serviceDescriptionURL = null;
-		clientContainer.dispose();
-		getContainerManager().removeAllContainers();
-	}
-	
-	protected BundleContext getContext() {
-		return Activator.getDefault().getContext();
-	}
-
-	protected DiscoveryCommandProvider getDiscoveryCommandProvider() {
-		DiscoveryCommandProviderServiceTracker st = new DiscoveryCommandProviderServiceTracker();
-		st.open();
-		DiscoveryCommandProvider provider = st.getDiscoveryCommandProvider();
-		st.close();
-		return provider;
-	}
-
-	protected void publishServiceDescriptions(final URL url) {
-		publishServiceDescriptions(url.toString());
-	}
-
-	int argsAccessed = 0;
-
-	protected void publishServiceDescriptions(final String url) {
-		discoveryCommandProvider._publish(new CommandInterpreter() {
-			public String nextArgument() {
-				argsAccessed++;
-				return (argsAccessed == 1) ? url : null;
-			}
-
-			public Object execute(String cmd) {
-				return null;
-			}
-
-			public void print(Object o) {
-			}
-
-			public void println() {
-			}
-
-			public void println(Object o) {
-			}
-
-			public void printStackTrace(Throwable t) {
-			}
-
-			public void printDictionary(Dictionary dic, String title) {
-			}
-
-			public void printBundleResource(Bundle bundle, String resource) {
-			}
-		});
-
-	}
-
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/DiscoveryCommandProviderServiceTracker.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/DiscoveryCommandProviderServiceTracker.java
deleted file mode 100644
index 0651f20..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/DiscoveryCommandProviderServiceTracker.java
+++ /dev/null
@@ -1,40 +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.tests.osgi.services.distribution.localdiscovery;
-
-import org.eclipse.ecf.osgi.services.discovery.local.DiscoveryCommandProvider;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class DiscoveryCommandProviderServiceTracker extends ServiceTracker {
-
-	private DiscoveryCommandProvider discoveryCommandProvider;
-	
-	public DiscoveryCommandProviderServiceTracker() {
-		super(Activator.getDefault().getContext(), CommandProvider.class.getName(), null);
-		@SuppressWarnings("unused")
-		DiscoveryCommandProvider dcp = new DiscoveryCommandProvider(null);
-	}
-
-	public void open() {
-		super.open(true);
-		Object[] allCommandProviders = getServices();
-		for(int i=0; i < allCommandProviders.length; i++) {
-			if (allCommandProviders[i] instanceof DiscoveryCommandProvider) {
-				discoveryCommandProvider = (DiscoveryCommandProvider) allCommandProviders[i];
-			}
-		}
-	}
-	
-	public DiscoveryCommandProvider getDiscoveryCommandProvider() {
-		return discoveryCommandProvider;
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java
deleted file mode 100644
index 10b2449..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceHostApplication.java
+++ /dev/null
@@ -1,85 +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.tests.osgi.services.distribution.localdiscovery.generic;
-
-import java.util.Dictionary;
-import java.util.Properties;
-
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestService1;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
-import org.eclipse.ecf.tests.remoteservice.AbstractConcatHostApplication;
-import org.eclipse.ecf.tests.remoteservice.IConcatService;
-import org.eclipse.equinox.app.IApplicationContext;
-
-public class GenericMultiServiceHostApplication extends AbstractConcatHostApplication implements IDistributionConstants {
-
-	private String containerId = "ecftcp://localhost:9655/server";
-	private String containerType = "ecf.generic.server";
-	
-	public Object start(IApplicationContext context) throws Exception {
-		// First, create container of appropriate type
-		IContainer container = createContainer(containerId);
-		// Then, from container create remote service container
-		rsContainer = createRemoteServiceContainer(container);
-		// Now register IConcatService remote service
-		Activator.getDefault().getContext().registerService(IConcatService.class.getName(), createConcatService(), createRemoteServiceProperties(containerType,containerId));
-		System.out.println("registered concat remote service");
-		// Register ITestService
-		Activator.getDefault().getContext().registerService(TestServiceInterface1.class.getName(), createTestService(), createRemoteServiceProperties(containerType,containerId));
-		System.out.println("registered testserviceinterface1");
-		
-		printStarted();
-		// And wait until we're explicitly stopped.
-		synchronized (this) {
-			while (!done)
-				wait();
-		}
-		return new Integer(0);
-	}
-
-	protected String getContainerId() {
-		return containerId;
-	}
-	
-	protected Dictionary createRemoteServiceProperties(String containerType, String containerId) {
-		Dictionary props = new Properties();
-		// add OSGi service property indicated export of all interfaces exposed by service (wildcard)
-		props.put(SERVICE_EXPORTED_INTERFACES, SERVICE_EXPORTED_INTERFACES_WILDCARD);
-		// add OSGi service property specifying config
-		props.put(SERVICE_EXPORTED_CONFIGS, containerType);
-		// add ECF service property specifying container factory args
-		props.put(SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS, containerId);
-		return props;
-	}
-	
-	protected Object createTestService() {
-		return new TestService1();
-	}
-	
-	protected Object createConcatService() {
-		return new IConcatService() {
-			public String concat(String string1, String string2) {
-				final String result = string1.concat(string2);
-				System.out.println("SERVICE.concat(" + string1 + "," + string2
-						+ ") returning " + result);
-				return string1.concat(string2);
-			}
-		};
-	}
-
-	protected String getContainerType() {
-		return containerType;
-	}
-
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java
deleted file mode 100644
index e3bae1f..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/src/org/eclipse/ecf/tests/osgi/services/distribution/localdiscovery/generic/GenericMultiServiceProxyTest.java
+++ /dev/null
@@ -1,66 +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.tests.osgi.services.distribution.localdiscovery.generic;
-
-import java.net.URL;
-
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.localdiscovery.Activator;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
-import org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery.AbstractMultiServiceProxyTest;
-import org.eclipse.ecf.tests.remoteservice.IConcatService;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-
-// NOTE:  running this test successfully depends upon having a GenericMultiServiceHost
-// server running
-public class GenericMultiServiceProxyTest extends AbstractMultiServiceProxyTest
-		implements IDistributionConstants {
-
-	private static final String SERVICE_DESCRIPTION_FILE = "/genericmultiservicehost.xml";
-
-	protected URL getServiceDescriptionURL() {
-		return Activator.getDefault().getContext().getBundle()
-		.getEntry(SERVICE_DESCRIPTION_FILE);
-	}
-	
-	protected String getClientContainerName() {
-		return "ecf.generic.client";
-	}
-
-	public void testTestServiceInterface1Access() throws Exception {
-		publishServiceDescriptions(serviceDescriptionURL);
-		sleep(5000);
-		String classname = TestServiceInterface1.class.getName();
-		// Setup service tracker for client container
-		ServiceTracker st = createProxyServiceTracker(classname);
-		// Service Consumer - Get (remote) service references
-		ServiceReference[] remoteReferences = st.getServiceReferences();
-		assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
-		// Spec requires that the 'service.imported' property be set
-		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
-		st.close();
-	}
-	
-	public void testConcatServiceInterfaceAccess() throws Exception {
-		publishServiceDescriptions(serviceDescriptionURL);
-		sleep(5000);
-		String classname = IConcatService.class.getName();
-		// Setup service tracker for client container
-		ServiceTracker st = createProxyServiceTracker(classname);
-		// Service Consumer - Get (remote) service references
-		ServiceReference[] remoteReferences = st.getServiceReferences();
-		assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
-		// Spec requires that the 'service.imported' property be set
-		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
-		st.close();
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF
index cf12db7..e301abd 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/META-INF/MANIFEST.MF
@@ -14,6 +14,5 @@
  org.eclipse.equinox.concurrent;bundle-version="1.0.0",
  org.eclipse.ecf.tests.osgi.services.distribution;bundle-version="1.0.0",
  org.eclipse.ecf;bundle-version="3.1.100",
- org.eclipse.ecf.tests;bundle-version="2.1.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.2.0"
+ org.eclipse.ecf.tests;bundle-version="2.1.0"
 Export-Package: org.eclipse.ecf.tests.osgi.services.distribution.r_osgi
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF
index 43907b3..a3f3ccd 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF
@@ -15,9 +15,9 @@
  org.eclipse.ecf.remoteservice;bundle-version="3.0.0",
  org.eclipse.ecf;bundle-version="3.0.0",
  org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
- org.eclipse.ecf.osgi.services.discovery;bundle-version="1.0.0",
- org.junit,
- org.eclipse.equinox.common,
- org.eclipse.equinox.concurrent;bundle-version="1.0.0"
+ org.eclipse.equinox.concurrent;bundle-version="1.0.0",
+ org.junit;bundle-version="4.8.2",
+ org.eclipse.equinox.common;bundle-version="3.6.0"
 Export-Package: org.eclipse.ecf.tests.internal.osgi.services.distribution;x-internal:=true,
- org.eclipse.ecf.tests.osgi.services.distribution
+ org.eclipse.ecf.tests.osgi.services.distribution,
+ org.eclipse.ecf.tests.osgi.services.distribution.async
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java
index efb63e7..9660875 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractDistributionTest.java
@@ -243,7 +243,7 @@
 								+ reference + ",svc=" + service);
 					}
 				});
-		st.open(true);
+		st.open();
 		return st;
 	}
 
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java
index 82bc94d..3b539da 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceAccessTest.java
@@ -26,7 +26,7 @@
 public abstract class AbstractRemoteServiceAccessTest extends
 		AbstractDistributionTest {
 
-	protected static final int REGISTER_WAIT = Integer.parseInt(System.getProperty("waittime","15000"));
+	protected static final int REGISTER_WAIT = Integer.parseInt(System.getProperty("waittime","30000"));
 
 	private final String classname = TestServiceInterface1.class.getName();
 	private ServiceTracker st;
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java
new file mode 100644
index 0000000..9df9b6d
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java
@@ -0,0 +1,20 @@
+/****************************************************************************
+ * 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
+ *
+ * Contributors:
+ *    Scott Lewis - initial API and implementation
+ *****************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.distribution.async;
+
+import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
+import org.eclipse.equinox.concurrent.future.IFuture;
+
+public interface TestServiceInterface1Async extends IAsyncRemoteServiceProxy {
+
+	IFuture doStuff1();
+	
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 53aec23..8199e8e 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -22,6 +22,6 @@
  org.osgi.service.remoteserviceadmin;version="1.0.0",
  org.osgi.util.tracker
 Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
- org.junit;bundle-version="4.8.1",
+ org.junit;bundle-version="3.8.0",
  org.eclipse.ecf.tests;bundle-version="2.1.0"
 Export-Package: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;version="1.1.1"
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
index 64d5247..7e46e98 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
@@ -233,7 +233,7 @@
 								+ reference + ",svc=" + service);
 					}
 				});
-		st.open(true);
+		st.open();
 		return st;
 	}
 
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
index cd0c4d7..094e4ba 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
@@ -48,7 +48,7 @@
 

 	protected IDiscoveryLocator getDiscoveryLocator() {

 		ServiceTracker serviceTracker = new ServiceTracker(Activator.getDefault().getContext(),IDiscoveryLocator.class.getName(), null);

-		serviceTracker.open(true);

+		serviceTracker.open();

 		IDiscoveryLocator result = (IDiscoveryLocator) serviceTracker.getService();

 		serviceTracker.close();

 		return result;

@@ -56,7 +56,7 @@
 	

 	protected IDiscoveryAdvertiser getDiscoveryAdvertiser() {

 		ServiceTracker serviceTracker = new ServiceTracker(Activator.getDefault().getContext(),IDiscoveryAdvertiser.class.getName(), null);

-		serviceTracker.open(true);

+		serviceTracker.open();

 		IDiscoveryAdvertiser result = (IDiscoveryAdvertiser) serviceTracker.getService();

 		serviceTracker.close();

 		return result;

diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.classpath b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.classpath
deleted file mode 100644
index 64c5e31..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.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.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/.gitignore b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.gitignore
deleted file mode 100644
index e660fd9..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-bin/
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 75c3924..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,74 +0,0 @@
-#Tue Jan 11 19:51:57 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.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=disabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

-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=disabled

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning

-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=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=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.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.5

diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/META-INF/MANIFEST.MF
deleted file mode 100644
index 1ed648e..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Local
-Bundle-SymbolicName: org.eclipse.ecf.tests.provider.discovery.local
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.ecf.internal.tests.provider.discovery.local.Activator
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.osgi.framework;version="1.3.0",
- org.osgi.util.tracker
-Require-Bundle: org.junit;bundle-version="4.8.1",
- org.eclipse.equinox.common,
- org.eclipse.ecf.osgi.services.discovery.local;bundle-version="1.0.0",
- org.eclipse.ecf.tests;bundle-version="2.1.0",
- org.eclipse.ecf.osgi.services.distribution;bundle-version="1.2.0"
-Bundle-Localization: plugin
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/about.html b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/about.html
deleted file mode 100644
index 4c79781..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/about.html
+++ /dev/null
@@ -1,28 +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>June 25, 2008</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</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/build.properties b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/build.properties
deleted file mode 100644
index 711ee39..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/build.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               service-descriptions/,\
-               plugin.properties,\
-               about.html
-src.includes = service-descriptions/,\
-               about.html
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/plugin.properties
deleted file mode 100644
index e06af95..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/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 available at
-* http://www.eclipse.org/legal/epl-v10.html
-*
-*****************************************************************************/
-plugin.name = ECF Local Discovery Provider Tests
-plugin.provider = Eclipse.org - ECF
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-generic.xml b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-generic.xml
deleted file mode 100644
index b46e9e1..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-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/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-rosgi.xml b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-rosgi.xml
deleted file mode 100644
index a41c2d2..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/service-descriptions/hello-service-description-rosgi.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">ecf.namespace.r_osgi</property>
-      <property name="ecf.sp.ect">ecf.r_osgi.peer</property>
-   </service-description>
-</service-descriptions>
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/internal/tests/provider/discovery/local/Activator.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/internal/tests/provider/discovery/local/Activator.java
deleted file mode 100644
index 619ae6a..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/internal/tests/provider/discovery/local/Activator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.eclipse.ecf.internal.tests.provider.discovery.local;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	private static BundleContext context;
-
-	public static BundleContext getContext() {
-		return context;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext bundleContext) throws Exception {
-		Activator.context = bundleContext;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext bundleContext) throws Exception {
-		Activator.context = null;
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/AbstractServiceDescriptionPublishTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/AbstractServiceDescriptionPublishTest.java
deleted file mode 100644
index de34d7d..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/AbstractServiceDescriptionPublishTest.java
+++ /dev/null
@@ -1,53 +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.tests.provider.discovery.local;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.eclipse.ecf.internal.tests.provider.discovery.local.Activator;
-import org.eclipse.ecf.osgi.services.discovery.local.IServiceEndpointDescriptionPublisher;
-import org.eclipse.ecf.tests.ECFAbstractTestCase;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-public abstract class AbstractServiceDescriptionPublishTest extends ECFAbstractTestCase {
-
-	private static final String SERVICE_DESCRIPTION_PATH = "/service-descriptions/";
-	
-	private IServiceEndpointDescriptionPublisher publisher;
-	
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		ServiceTracker st = new ServiceTracker(Activator.getContext(),IServiceEndpointDescriptionPublisher.class.getName(),null);
-		st.open();
-		publisher = (IServiceEndpointDescriptionPublisher) st.getService();
-		st.close();
-	}
-	
-	@Override
-	protected void tearDown() throws Exception {
-		publisher = null;
-		super.tearDown();
-	}
-	
-	protected IServiceEndpointDescriptionPublisher getServiceDescriptionPublisher() {
-		return publisher;
-	}
-	
-	protected InputStream loadServiceDescription(String fileName) throws IOException {
-		BundleContext context = Activator.getContext();
-		URL url = context.getBundle().getEntry(SERVICE_DESCRIPTION_PATH + fileName);
-		if (url == null) throw new IOException("Cannot find service description file name="+fileName);
-		return url.openStream();
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/ServiceEndpoingDescriptionFilePublishTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/ServiceEndpoingDescriptionFilePublishTest.java
deleted file mode 100644
index a2f1ced..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/src/org/eclipse/ecf/tests/provider/discovery/local/ServiceEndpoingDescriptionFilePublishTest.java
+++ /dev/null
@@ -1,41 +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.tests.provider.discovery.local;
-
-import java.io.InputStream;
-
-import org.eclipse.ecf.osgi.services.discovery.local.IServiceEndpointDescriptionPublisher;
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-
-@SuppressWarnings("restriction")
-public class ServiceEndpoingDescriptionFilePublishTest extends AbstractServiceDescriptionPublishTest implements IDistributionConstants {
-
-	private static final String HELLO_SED_GENERIC_FILE = "hello-service-description-generic.xml";
-	private static final String HELLO_SED_ROSGI_FILE = "hello-service-description-rosgi.xml";
-
-	public void testServiceDescriptionGenericPublishFromFile() throws Exception {
-		InputStream serviceDescriptionStream = loadServiceDescription(HELLO_SED_GENERIC_FILE);
-		IServiceEndpointDescriptionPublisher publisher = getServiceDescriptionPublisher();
-		publisher.publishServiceDescription(serviceDescriptionStream);
-		sleep(4000);
-		serviceDescriptionStream = loadServiceDescription(HELLO_SED_GENERIC_FILE);
-		publisher.unpublishServiceDescription(serviceDescriptionStream);
-	}
-	
-	public void testServiceDescriptionROSGiPublishFromFile() throws Exception {
-		InputStream serviceDescriptionStream = loadServiceDescription(HELLO_SED_ROSGI_FILE);
-		IServiceEndpointDescriptionPublisher publisher = getServiceDescriptionPublisher();
-		publisher.publishServiceDescription(serviceDescriptionStream);
-		sleep(4000);
-		serviceDescriptionStream = loadServiceDescription(HELLO_SED_ROSGI_FILE);
-		publisher.unpublishServiceDescription(serviceDescriptionStream);
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF
index b704858..00296e5 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.provider.zookeeper
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Require-Bundle: org.eclipse.ecf,
  org.eclipse.ecf.discovery,
diff --git a/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
new file mode 100644
index 0000000..c962348
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
@@ -0,0 +1,137 @@
+/****************************************************************************
+* 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.tests.core.identity;
+
+import java.io.ByteArrayOutputStream;
+import java.io.NotSerializableException;
+import java.io.ObjectOutputStream;
+import java.net.URI;
+
+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.identity.URIID;
+
+public class URIIDTest extends IDAbstractTestCase {
+
+	public static final String URIIDNAMESPACE = URIID.class.getName();
+	public static final String URI1 = "http://lala/lala/lala";
+	public static final String URI2 = "zooo:barbarbarbarbarbarbarbar";
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.tests.IDTestCase#createID()
+	 */
+	protected ID createID() throws IDCreateException {
+		return createID(URI1);
+	}
+
+	protected ID createID(String val) throws IDCreateException {
+		return IDFactory.getDefault().createID(URIIDNAMESPACE,val);
+	}
+
+	public void testCreate() throws Exception {
+		final ID newID = createID();
+		assertNotNull(newID);
+	}
+
+	public void testNullCreate() throws Exception {
+		try {
+			createID(null);
+			fail();
+		} catch (final IDCreateException e) {
+			// success
+		}
+	}
+
+	public void testGetName() throws Exception {
+		final ID id = createID(URI1);
+		assertTrue(id.getName().equals(URI1));
+	}
+
+	public void testToExternalForm() throws Exception {
+		final ID id = createID(URI1);
+		assertNotNull(id.toExternalForm());
+	}
+
+	public void testToString() throws Exception {
+		final ID id = createID(URI1);
+		assertNotNull(id.toString());
+	}
+
+	public void testIsEqual() throws Exception {
+		final ID id1 = createID();
+		final ID id2 = createID();
+		assertTrue(id1.equals(id2));
+	}
+
+	public void testHashCode() throws Exception {
+		final ID id1 = createID();
+		final ID id2 = createID();
+		assertTrue(id1.hashCode() == id2.hashCode());
+	}
+
+	public void testCompareToEqual() throws Exception {
+		final ID id1 = createID();
+		final ID id2 = createID();
+		assertTrue(id1.compareTo(id2) == 0);
+		assertTrue(id2.compareTo(id1) == 0);
+	}
+
+	public void testCompareToNotEqual() throws Exception {
+		final ID id1 = createID(URI1);
+		final ID id2 = createID(URI2);
+		assertTrue(id1.compareTo(id2) < 0);
+		assertTrue(id2.compareTo(id1) > 0);
+	}
+
+	public void testGetNamespace() throws Exception {
+		final ID id = createID();
+		final Namespace ns = id.getNamespace();
+		assertNotNull(ns);
+	}
+
+	public void testEqualNamespaces() throws Exception {
+		final ID id1 = createID();
+		final ID id2 = createID();
+		final Namespace ns1 = id1.getNamespace();
+		final Namespace ns2 = id2.getNamespace();
+		assertTrue(ns1.equals(ns2));
+		assertTrue(ns2.equals(ns2));
+	}
+
+	public void testSerializable() throws Exception {
+		final ByteArrayOutputStream buf = new ByteArrayOutputStream();
+		final ObjectOutputStream out = new ObjectOutputStream(buf);
+		try {
+			out.writeObject(createID());
+		} catch (final NotSerializableException ex) {
+			fail(ex.getLocalizedMessage());
+		} finally {
+			out.close();
+		}
+	}
+
+	public void testCreateFromExternalForm() throws Exception {
+		final ID id1 = createID();
+		final String externalForm = id1.toExternalForm();
+		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+		assertTrue(id1.equals(id2));
+	}
+	
+	public void testCreateFromURIForm() throws Exception {
+		final ID id1 = IDFactory.getDefault().createID(URIIDNAMESPACE,new Object[] { new URI(URI1) });
+		final String externalForm = id1.toExternalForm();
+		final ID id2 = IDFactory.getDefault().createID(id1.getNamespace(), externalForm);
+		assertTrue(id1.equals(id2));
+	}
+
+}