Merge branch 'master' into 326228

Conflicts:
	providers/bundles/org.eclipse.ecf.provider.jmdns/.settings/org.eclipse.jdt.core.prefs
	providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
	providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java
	releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
	releng/org.eclipse.ecf.releng.bm/ecf.rmap
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/.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 8e61e35..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/src/org/eclipse/ecf/osgi/services/discovery/local/FileBasedDiscoveryImpl.java
+++ /dev/null
@@ -1,474 +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.Constants;
-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) {
-						String errMsg = "A filter provided by a DiscoveredServiceTracker is invalid.";
-						errMsg += " Filter = " + currentFilter;
-						errMsg += "; DiscoveredServiceTracker service.id = "
-								+ trackerProperties.get(Constants.SERVICE_ID);
-						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.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/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF
deleted file mode 100644
index 7739973..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,22 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.ecf.osgi.services.discovery
-Bundle-Version: 1.2.0.qualifier
-Bundle-Activator: org.eclipse.ecf.internal.osgi.services.discovery.Activator
-Bundle-Vendor: %pluginProvider
-Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
- J2SE-1.4
-Import-Package: org.eclipse.ecf.core.identity,
- org.eclipse.ecf.core.util,
- org.eclipse.ecf.discovery,
- org.eclipse.ecf.discovery.identity,
- org.eclipse.ecf.remoteservice,
- org.osgi.framework;version="1.3.0",
- org.osgi.service.log;version="1.3.0",
- org.osgi.util.tracker
-Bundle-ActivationPolicy: lazy
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common
-Export-Package: org.eclipse.ecf.internal.osgi.services.discovery;version="1.1.0";x-internal:=true,
- org.eclipse.ecf.osgi.services.discovery;version="1.1.0";x-internal:=true
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/org/eclipse/ecf/internal/osgi/services/discovery/Activator.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/Activator.java
deleted file mode 100644
index b33077b..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/Activator.java
+++ /dev/null
@@ -1,262 +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.internal.osgi.services.discovery;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ecf.core.identity.GUID;
-import org.eclipse.ecf.core.identity.GUID.GUIDNamespace;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.SystemLogService;
-import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
-import org.eclipse.ecf.discovery.IDiscoveryLocator;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.IHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.IProxyDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class Activator implements BundleActivator {
-
-	public static final String PLUGIN_ID = "org.eclipse.ecf.osgi.services.discovery"; //$NON-NLS-1$
-
-	private static final long DISCOVERY_TIMEOUT = 5000;
-
-	private ServiceTracker servicePublicationTracker;
-	private ServiceTracker locatorTracker;
-	private ServiceTracker advertiserTracker;
-	private ServiceTracker discoveredServiceTrackerTracker;
-
-	private ServiceTracker logServiceTracker = null;
-	private LogService logService = null;
-
-	private BundleContext context;
-	private static Activator plugin;
-	private ServicePublicationHandler servicePublicationHandler;
-
-	public static final Activator getDefault() {
-		return plugin;
-	}
-
-	private ServiceTracker hostPublicationListenerTracker;
-	private ServiceTracker proxyDiscoveredListenerTracker;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext
-	 * )
-	 */
-	public void start(BundleContext ctxt) throws Exception {
-		plugin = this;
-		this.context = ctxt;
-		servicePublicationHandler = new ServicePublicationHandler(getGUID());
-
-		servicePublicationTracker = new ServiceTracker(context,
-				ServicePublication.class.getName(), servicePublicationHandler);
-		servicePublicationTracker.open();
-
-		// register the discovery service which is provided by SPH
-		// Dictionary props = new Hashtable();
-		// props.put(Discovery.VENDOR_NAME, "Eclipse.org");
-		// props.put(Discovery.PRODUCT_NAME, "ECF Discovery");
-		// props.put(Discovery.PRODUCT_VERSION, "1.0.0");
-		// props.put(Discovery.SUPPORTED_PROTOCOLS, "SLP|mDNS|DNS-SRV");
-		// ctxt.registerService(Discovery.class.getName(),
-		// servicePublicationHandler, props);
-
-		locatorTracker = new ServiceTracker(this.context,
-				IDiscoveryLocator.class.getName(),
-				new LocatorTrackerCustomizer());
-		locatorTracker.open();
-		IDiscoveryLocator locator = (IDiscoveryLocator) locatorTracker
-				.getService();
-		if (locator != null) {
-			locator.addServiceListener(servicePublicationHandler);
-		}
-	}
-
-	private byte[] getGUID() throws UnsupportedEncodingException {
-		final GUIDNamespace namespace = new GUID.GUIDNamespace();
-		final GUID id = (GUID) namespace.createInstance(null);
-		// convert to external form to avoid problems with illegal chars in
-		// discovery providers (e.g. '=' is not allowed in SLP)
-		return id.toExternalForm().getBytes("ASCII"); //$NON-NLS-1$
-	}
-
-	protected synchronized LogService getLogService() {
-		if (this.context == null)
-			return null;
-		if (logServiceTracker == null) {
-			logServiceTracker = new ServiceTracker(this.context,
-					LogService.class.getName(), null);
-			logServiceTracker.open();
-		}
-		logService = (LogService) logServiceTracker.getService();
-		if (logService == null)
-			logService = new SystemLogService(PLUGIN_ID);
-		return logService;
-	}
-
-	public void log(IStatus status) {
-		if (logService == null)
-			logService = getLogService();
-		if (logService != null)
-			logService.log(null, LogHelper.getLogCode(status),
-					LogHelper.getLogMessage(status), status.getException());
-	}
-
-	public void log(ServiceReference sr, IStatus status) {
-		log(sr, LogHelper.getLogCode(status), LogHelper.getLogMessage(status),
-				status.getException());
-	}
-
-	public void log(ServiceReference sr, int level, String message, Throwable t) {
-		if (logService == null)
-			logService = getLogService();
-		if (logService != null)
-			logService.log(sr, level, message, t);
-	}
-
-	BundleContext getContext() {
-		return context;
-	}
-
-	public ServicePublicationHandler getServicePublicationHandler() {
-		return servicePublicationHandler;
-	}
-
-	public synchronized IDiscoveryAdvertiser getAdvertiser()
-			throws InterruptedException {
-		if (this.context == null)
-			return null;
-		if (advertiserTracker == null) {
-			advertiserTracker = new ServiceTracker(this.context,
-					IDiscoveryAdvertiser.class.getName(), null);
-			advertiserTracker.open();
-		}
-		return (IDiscoveryAdvertiser) advertiserTracker
-				.waitForService(DISCOVERY_TIMEOUT);
-	}
-
-	public ServiceReference[] getDiscoveredServiceTrackerReferences() {
-		if (discoveredServiceTrackerTracker == null) {
-			discoveredServiceTrackerTracker = new ServiceTracker(this.context,
-					DiscoveredServiceTracker.class.getName(), null);
-			discoveredServiceTrackerTracker.open();
-		}
-		return discoveredServiceTrackerTracker.getServiceReferences();
-	}
-
-	public synchronized IHostDiscoveryListener[] getHostPublicationListeners() {
-		if (this.context == null)
-			return null;
-		if (hostPublicationListenerTracker == null) {
-			hostPublicationListenerTracker = new ServiceTracker(this.context,
-					IHostDiscoveryListener.class.getName(), null);
-			hostPublicationListenerTracker.open();
-		}
-		Object[] objs = hostPublicationListenerTracker.getServices();
-		if (objs == null)
-			return null;
-		return (IHostDiscoveryListener[]) Arrays.asList(objs).toArray(
-				new IHostDiscoveryListener[] {});
-	}
-
-	public synchronized IProxyDiscoveryListener[] getProxyDiscoveredListeners() {
-		if (this.context == null)
-			return null;
-		if (proxyDiscoveredListenerTracker == null) {
-			proxyDiscoveredListenerTracker = new ServiceTracker(this.context,
-					IProxyDiscoveryListener.class.getName(), null);
-			proxyDiscoveredListenerTracker.open();
-		}
-		Object[] objs = proxyDiscoveredListenerTracker.getServices();
-		if (objs == null)
-			return null;
-		return (IProxyDiscoveryListener[]) Arrays.asList(objs).toArray(
-				new IProxyDiscoveryListener[] {});
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		if (discoveredServiceTrackerTracker != null) {
-			discoveredServiceTrackerTracker.close();
-			discoveredServiceTrackerTracker = null;
-		}
-		if (locatorTracker != null) {
-			locatorTracker.close();
-			locatorTracker = null;
-		}
-		if (advertiserTracker != null) {
-			advertiserTracker.close();
-			advertiserTracker = null;
-		}
-		if (servicePublicationTracker != null) {
-			servicePublicationTracker.close();
-			servicePublicationTracker = null;
-		}
-		if (servicePublicationHandler != null) {
-			servicePublicationHandler.dispose();
-			servicePublicationHandler = null;
-		}
-		if (logServiceTracker != null) {
-			logServiceTracker.close();
-			logServiceTracker = null;
-			logService = null;
-		}
-		if (hostPublicationListenerTracker != null) {
-			hostPublicationListenerTracker.close();
-			hostPublicationListenerTracker = null;
-		}
-		if (proxyDiscoveredListenerTracker != null) {
-			proxyDiscoveredListenerTracker.close();
-			proxyDiscoveredListenerTracker = null;
-		}
-		this.context = null;
-		plugin = null;
-	}
-
-	private class LocatorTrackerCustomizer implements ServiceTrackerCustomizer {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see
-		 * org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.
-		 * osgi.framework.ServiceReference)
-		 */
-		public Object addingService(ServiceReference reference) {
-			IDiscoveryLocator locator = (IDiscoveryLocator) context
-					.getService(reference);
-			if (locator != null)
-				locator.addServiceListener(servicePublicationHandler);
-			return locator;
-		}
-
-		public void modifiedService(ServiceReference reference, Object service) {
-		}
-
-		public void removedService(ServiceReference reference, Object service) {
-		}
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/DebugOptions.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/DebugOptions.java
deleted file mode 100644
index 4db102c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/DebugOptions.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.internal.osgi.services.discovery;
-
-public interface DebugOptions {
-
-	public static final String DEBUG = Activator.PLUGIN_ID + "/debug"; //$NON-NLS-1$
-
-	public static final String EXCEPTIONS_CATCHING = DEBUG
-			+ "/exceptions/catching"; //$NON-NLS-1$
-
-	public static final String EXCEPTIONS_THROWING = DEBUG
-			+ "/exceptions/throwing"; //$NON-NLS-1$
-
-	public static final String METHODS_ENTERING = DEBUG + "/methods/entering"; //$NON-NLS-1$
-
-	public static final String METHODS_EXITING = DEBUG + "/methods/exiting"; //$NON-NLS-1$
-
-	public static final String SVCPUBHANDLERDEBUG = DEBUG
-			+ "/servicepublication"; //$NON-NLS-1$
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/DiscoveredServiceNotificationImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/DiscoveredServiceNotificationImpl.java
deleted file mode 100644
index 49471d6..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/DiscoveredServiceNotificationImpl.java
+++ /dev/null
@@ -1,70 +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.internal.osgi.services.discovery;
-
-import java.util.Collection;
-import java.util.Collections;
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-
-public class DiscoveredServiceNotificationImpl implements
-		DiscoveredServiceNotification {
-
-	private final int type;
-	private ServiceEndpointDescription serviceEndpointDescription;
-
-	public DiscoveredServiceNotificationImpl(int type, IServiceInfo serviceInfo) {
-		this.type = type;
-		this.serviceEndpointDescription = new RemoteServiceEndpointDescriptionImpl(
-				serviceInfo);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seeorg.osgi.service.discovery.DiscoveredServiceNotification#
-	 * getServiceEndpointDescription()
-	 */
-	public ServiceEndpointDescription getServiceEndpointDescription() {
-		return serviceEndpointDescription;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.osgi.service.discovery.DiscoveredServiceNotification#getType()
-	 */
-	public int getType() {
-		return type;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer sb = new StringBuffer("DiscoveredServiceNotificationImpl["); //$NON-NLS-1$
-		sb.append("type=").append(getType()).append(";sed=").append( //$NON-NLS-1$ //$NON-NLS-2$
-				getServiceEndpointDescription()).append("]"); //$NON-NLS-1$
-		return sb.toString();
-	}
-
-	public Collection getFilters() {
-		// XXX TODO
-		return Collections.EMPTY_LIST;
-	}
-
-	public Collection getInterfaces() {
-		// XXX TODO
-		return Collections.EMPTY_LIST;
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/LogUtility.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/LogUtility.java
deleted file mode 100644
index 1dda0a4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/LogUtility.java
+++ /dev/null
@@ -1,46 +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.internal.osgi.services.discovery;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ecf.core.util.Trace;
-
-public class LogUtility {
-
-	public static void logError(String method, String message, Class clazz,
-			Throwable t) {
-		Activator.getDefault().log(
-				new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
-						method + ":" + message, t)); //$NON-NLS-1$
-		String msg = method + ":" + message; //$NON-NLS-1$
-		if (t == null) {
-			Trace.trace(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING,
-					msg);
-		} else
-			Trace.catching(Activator.PLUGIN_ID,
-					DebugOptions.EXCEPTIONS_CATCHING, clazz, msg, t);
-	}
-
-	public static void logInfo(String method, String message, Class clazz,
-			Throwable t) {
-		Activator.getDefault().log(
-				new Status(IStatus.INFO, Activator.PLUGIN_ID, IStatus.INFO,
-						method + ":" + message, t)); //$NON-NLS-1$
-		String msg = method + ":" + message; //$NON-NLS-1$
-		if (t == null) {
-			Trace.trace(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING,
-					msg);
-		} else
-			Trace.catching(Activator.PLUGIN_ID,
-					DebugOptions.EXCEPTIONS_CATCHING, clazz, msg, t);
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/RemoteServiceEndpointDescriptionImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/RemoteServiceEndpointDescriptionImpl.java
deleted file mode 100644
index b32fa6d..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/RemoteServiceEndpointDescriptionImpl.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 Markus Alexander Kuppe, 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:
- *     Markus Alexander Kuppe (ecf-dev_eclipse.org <at> lemmster <dot> de) - initial API and implementation
- ******************************************************************************/
-package org.eclipse.ecf.internal.osgi.services.discovery;
-
-import java.net.URI;
-import java.util.Arrays;
-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.discovery.IServiceInfo;
-import org.eclipse.ecf.discovery.IServiceProperties;
-import org.eclipse.ecf.discovery.ServiceProperties;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-
-public class RemoteServiceEndpointDescriptionImpl extends
-		RemoteServiceEndpointDescription {
-
-	private final ID endpointId;
-	private final IServiceID serviceId;
-	private ID targetId = null;
-	private int hashCode = 7;
-
-	public RemoteServiceEndpointDescriptionImpl(IServiceInfo serviceInfo) {
-		super(((ServiceProperties) serviceInfo.getServiceProperties())
-				.asProperties());
-		this.serviceId = serviceInfo.getServiceID();
-
-		// create the endpoint id
-		IServiceProperties serviceProperties = serviceInfo
-				.getServiceProperties();
-		final byte[] endpointBytes = serviceProperties
-				.getPropertyBytes(RemoteServicePublication.ENDPOINT_CONTAINERID);
-		if (endpointBytes == null)
-			throw new IDCreateException(
-					"ServiceEndpointDescription endpointBytes cannot be null"); //$NON-NLS-1$
-		final String endpointStr = new String(endpointBytes);
-		final String namespaceStr = serviceProperties
-				.getPropertyString(RemoteServicePublication.ENDPOINT_CONTAINERID_NAMESPACE);
-		if (namespaceStr == null) {
-			throw new IDCreateException(
-					"ServiceEndpointDescription namespaceStr cannot be null"); //$NON-NLS-1$
-		}
-		endpointId = IDFactory.getDefault().createID(namespaceStr, endpointStr);
-
-		// create the target id, if it's there
-		final byte[] targetBytes = serviceProperties
-				.getPropertyBytes(RemoteServicePublication.TARGET_CONTAINERID);
-		// If this is null, we're ok with it
-		if (targetBytes != null) {
-			final String targetStr = new String(targetBytes);
-			String targetNamespaceStr = serviceProperties
-					.getPropertyString(RemoteServicePublication.TARGET_CONTAINERID_NAMESPACE);
-			if (targetNamespaceStr == null)
-				targetNamespaceStr = namespaceStr;
-			targetId = IDFactory.getDefault().createID(targetNamespaceStr,
-					targetStr);
-		}
-
-		// Get location and compute hashCode
-		URI serviceLocation = this.serviceId.getLocation();
-		long rsId = this.getRemoteServiceId();
-		hashCode = 31 * hashCode + (int) (rsId ^ (rsId >>> 32));
-		hashCode = 31 * hashCode + serviceLocation.hashCode();
-		hashCode = 31 * hashCode + endpointId.hashCode();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getECFEndpointID()
-	 */
-	public ID getEndpointAsID() throws IDCreateException {
-		return endpointId;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription
-	 * #getECFTargetID()
-	 */
-	public ID getConnectTargetID() {
-		return targetId;
-	}
-
-	public int hashCode() {
-		return hashCode;
-	}
-
-	public boolean equals(Object obj) {
-		if (this == obj)
-			return true;
-		if (obj == null)
-			return false;
-		if (getClass() != obj.getClass())
-			return false;
-		RemoteServiceEndpointDescriptionImpl other = (RemoteServiceEndpointDescriptionImpl) obj;
-		return this.serviceId.getLocation().equals(
-				other.serviceId.getLocation())
-				&& getRemoteServiceId() == other.getRemoteServiceId()
-				&& endpointId.equals(other.getEndpointAsID());
-	}
-
-	public IServiceID getServiceID() {
-		return serviceId;
-	}
-
-	public String toString() {
-		StringBuffer sb = new StringBuffer(
-				"RemoteServiceEndpointDescriptionImpl["); //$NON-NLS-1$
-		sb.append("svcInterfaces=").append(getProvidedInterfaces()); //$NON-NLS-1$
-		String[] supportedConfigs = getSupportedConfigs();
-		sb.append(";supportedConfigTypes=").append( //$NON-NLS-1$
-				(supportedConfigs == null) ? "null" : Arrays.asList( //$NON-NLS-1$
-						supportedConfigs).toString());
-		String[] serviceIntents = getServiceIntents();
-		sb.append(";serviceIntents=").append( //$NON-NLS-1$
-				(serviceIntents == null) ? "null" : Arrays.asList( //$NON-NLS-1$
-						serviceIntents).toString());
-		sb.append(";location=").append(getLocation()); //$NON-NLS-1$
-		sb.append(";remoteServiceId=").append(getRemoteServiceId()); //$NON-NLS-1$
-		sb.append(";discoveryServiceID=").append(getServiceID()); //$NON-NLS-1$
-		sb.append(";endpointID=").append(getEndpointID()); //$NON-NLS-1$
-		sb.append(";endpointAsID=").append(getEndpointAsID()); //$NON-NLS-1$
-		sb.append(";connectTargetID=").append(getConnectTargetID()); //$NON-NLS-1$
-		sb.append(";remoteServicesFilter=").append(getRemoteServicesFilter()); //$NON-NLS-1$
-		sb.append(";props=").append(getProperties()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
-		return sb.toString();
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/ServicePropertyUtils.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/ServicePropertyUtils.java
deleted file mode 100644
index 1f6a90c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/ServicePropertyUtils.java
+++ /dev/null
@@ -1,93 +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.internal.osgi.services.discovery;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.osgi.framework.ServiceReference;
-
-public class ServicePropertyUtils {
-
-	public static final String PROTOCOL_SEPARATOR = ":"; //$NON-NLS-1$
-	public static final String ENDPOINT_INTERFACE_NAME_SEPARATOR = PROTOCOL_SEPARATOR;
-	public static final String INTERFACE_VERSION_SEPARATOR = ServicePublication.SEPARATOR;
-
-	private static final String COLLECTION_SEPARATOR = ","; //$NON-NLS-1$
-
-	public static Collection getCollectionProperty(ServiceReference sr,
-			String propName) {
-		if (sr == null || propName == null) {
-			return null;
-		}
-		final Object val = sr.getProperty(propName);
-		if (val == null || !(val instanceof Collection)) {
-			return null;
-		}
-		return (Collection) val;
-	}
-
-	public static String getStringProperty(ServiceReference reference,
-			String propKey) {
-		if (reference == null || propKey == null) {
-			return null;
-		}
-		final Object val = reference.getProperty(propKey);
-		if (val == null || !(val instanceof String)) {
-			return null;
-		}
-		return (String) val;
-	}
-
-	public static Map getMapProperty(ServiceReference reference,
-			String propKeyServiceProperties) {
-		if (reference == null || propKeyServiceProperties == null) {
-			return null;
-		}
-		final Object val = reference.getProperty(propKeyServiceProperties);
-		if (val == null || !(val instanceof Map)) {
-			return null;
-		}
-		return (Map) val;
-	}
-
-	public static String createStringFromCollection(Collection svcInterfaces) {
-		if (svcInterfaces == null) {
-			return null;
-		}
-		final StringBuffer result = new StringBuffer();
-		for (final Iterator i = svcInterfaces.iterator(); i.hasNext();) {
-			final String item = (String) i.next();
-			result.append(item);
-			if (i.hasNext()) {
-				result.append(COLLECTION_SEPARATOR);
-			}
-		}
-		return result.toString();
-	}
-
-	public static Collection createCollectionFromString(String value) {
-		if (value == null) {
-			return null;
-		}
-		final StringTokenizer t = new StringTokenizer(value,
-				COLLECTION_SEPARATOR);
-		final List result = new ArrayList();
-		while (t.hasMoreTokens()) {
-			result.add(t.nextToken());
-		}
-		return result;
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/ServicePublicationHandler.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/ServicePublicationHandler.java
deleted file mode 100644
index a2923b0..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/internal/osgi/services/discovery/ServicePublicationHandler.java
+++ /dev/null
@@ -1,618 +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.internal.osgi.services.discovery;
-
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-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.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.SafeRunner;
-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.util.ECFRuntimeException;
-import org.eclipse.ecf.core.util.Trace;
-import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
-import org.eclipse.ecf.discovery.IServiceEvent;
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.eclipse.ecf.discovery.IServiceListener;
-import org.eclipse.ecf.discovery.IServiceProperties;
-import org.eclipse.ecf.discovery.ServiceInfo;
-import org.eclipse.ecf.discovery.ServiceProperties;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.discovery.identity.IServiceTypeID;
-import org.eclipse.ecf.discovery.identity.ServiceIDFactory;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.IHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.IProxyDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.eclipse.ecf.remoteservice.Constants;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class ServicePublicationHandler implements ServiceTrackerCustomizer,
-		IServiceListener {
-
-	private static final String DISCOVERY_IDENTIFIER = "org.eclipse.ecf.internal.discovery.id"; //$NON-NLS-1$
-	private static final boolean allowLoopbackReferences = Boolean
-			.getBoolean("org.eclipse.ecf.osgi.services.discovery.allowLoopbackReference"); //$NON-NLS-1$
-	private final byte[] guid;
-
-	private IDiscoveryAdvertiser advertiser;
-	private final Map serviceInfos = Collections.synchronizedMap(new HashMap());
-
-	public ServicePublicationHandler(byte[] aGuid) {
-		guid = aGuid;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.discovery.IServiceListener#serviceDiscovered(org.eclipse
-	 * .ecf.discovery.IServiceEvent)
-	 */
-	public void serviceDiscovered(IServiceEvent event) {
-		final IServiceInfo serviceInfo = event.getServiceInfo();
-		final IServiceID serviceID = serviceInfo.getServiceID();
-		trace("handleOSGIServiceDiscovered", " serviceInfo=" + serviceInfo); //$NON-NLS-1$ //$NON-NLS-2$
-		if (matchServiceID(serviceID)) {
-			if (isLoopbackReference(serviceInfo)) {
-				logInfo("serviceDiscovered", //$NON-NLS-1$
-						"ignoring loopback ServiceReference: " //$NON-NLS-1$
-								+ serviceID, null);
-				return;
-			}
-			fireProxyDiscoveredUndiscovered(serviceInfo, true);
-			trace("handleOSGIServiceDiscovered matched", " serviceInfo=" + serviceInfo); //$NON-NLS-1$ //$NON-NLS-2$
-			DiscoveredServiceTracker[] discoveredTrackers = findMatchingDiscoveredServiceTrackers(serviceInfo);
-			notifyDiscoveredServiceTrackers(discoveredTrackers, serviceInfo,
-					true);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.ecf.discovery.IServiceListener#serviceUndiscovered(org.eclipse
-	 * .ecf.discovery.IServiceEvent)
-	 */
-	public void serviceUndiscovered(IServiceEvent event) {
-		final IServiceInfo serviceInfo = event.getServiceInfo();
-		final IServiceID serviceID = serviceInfo.getServiceID();
-		if (matchServiceID(serviceID)) {
-			if (isLoopbackReference(serviceInfo)) {
-				logInfo("serviceUndiscovered", //$NON-NLS-1$
-						"ignoring loopback ServiceReference: " //$NON-NLS-1$
-								+ serviceID, null);
-				return;
-			}
-			fireProxyDiscoveredUndiscovered(serviceInfo, false);
-			trace("handleOSGIServiceUndiscovered", " serviceInfo=" + serviceInfo); //$NON-NLS-1$ //$NON-NLS-2$
-			DiscoveredServiceTracker[] discoveredTrackers = findMatchingDiscoveredServiceTrackers(serviceInfo);
-			notifyDiscoveredServiceTrackers(discoveredTrackers, serviceInfo,
-					false);
-		}
-	}
-
-	private void notifyDiscoveredServiceTrackers(
-			DiscoveredServiceTracker[] discoveredTrackers,
-			IServiceInfo serviceInfo, boolean available) {
-		if (discoveredTrackers != null) {
-			for (int i = 0; i < discoveredTrackers.length; i++) {
-				discoveredTrackers[i]
-						.serviceChanged(new DiscoveredServiceNotificationImpl(
-								(available ? DiscoveredServiceNotification.AVAILABLE
-										: DiscoveredServiceNotification.UNAVAILABLE),
-								serviceInfo));
-			}
-		}
-	}
-
-	private DiscoveredServiceTracker[] findMatchingDiscoveredServiceTrackers(
-			IServiceInfo serviceInfo) {
-		ServiceReference[] sourceTrackers = Activator.getDefault()
-				.getDiscoveredServiceTrackerReferences();
-		if (sourceTrackers == null)
-			return null;
-		List matchingTrackers = new ArrayList();
-		for (int i = 0; i < sourceTrackers.length; i++) {
-			if (matchWithDiscoveredServiceInfo(sourceTrackers[i], serviceInfo))
-				matchingTrackers.add(Activator.getDefault().getContext()
-						.getService(sourceTrackers[i]));
-		}
-		return (DiscoveredServiceTracker[]) matchingTrackers
-				.toArray(new DiscoveredServiceTracker[] {});
-	}
-
-	private boolean matchWithDiscoveredServiceInfo(
-			ServiceReference serviceReference, IServiceInfo serviceInfo) {
-		// XXX for now match everything. See RFC119
-		return true;
-	}
-
-	private boolean matchServiceID(IServiceID serviceId) {
-		if (Arrays.asList(serviceId.getServiceTypeID().getServices()).contains(
-				RemoteServicePublication.SERVICE_TYPE))
-			return true;
-		return false;
-	}
-
-	// returns true if the given service has been registered by this very
-	// ServicePublicationHandler (same instance)
-	private boolean isLoopbackReference(final IServiceInfo serviceInfo) {
-		if (allowLoopbackReferences) {
-			return false;
-		}
-		final byte[] aGuid = serviceInfo.getServiceProperties()
-				.getPropertyBytes(DISCOVERY_IDENTIFIER);
-		// backward compatibility
-		if (aGuid == null) {
-			return false;
-		}
-		return Arrays.equals(guid, aGuid);
-	}
-
-	private IServiceInfo addServiceInfo(ServiceReference sr, IServiceInfo si) {
-		return (IServiceInfo) serviceInfos.put(sr, si);
-	}
-
-	private IServiceInfo removeServiceInfo(ServiceReference sr) {
-		return (IServiceInfo) serviceInfos.remove(sr);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.osgi
-	 * .framework.ServiceReference)
-	 */
-	public Object addingService(ServiceReference reference) {
-		handleServicePublication(reference);
-		return Activator.getDefault().getContext().getService(reference);
-	}
-
-	/**
-	 * @param reference
-	 */
-	private void handleServicePublication(ServiceReference reference) {
-
-		// Get required service RFC 119 property "service.interface", which
-		// should be a
-		// Collection of Strings
-		Collection svcInterfaces = ServicePropertyUtils.getCollectionProperty(
-				reference, ServicePublication.SERVICE_INTERFACE_NAME);
-		// If it's not there, then we ignore this ServicePublication and return
-		if (svcInterfaces == null) {
-			logError(
-					"handleServicePublication", //$NON-NLS-1$
-					"ignoring " //$NON-NLS-1$
-							+ reference
-							+ ". ServicePublication.SERVICE_INTERFACE_NAME not set", //$NON-NLS-1$
-					null);
-			return;
-		}
-		IServiceProperties discoveryServiceProperties = new ServiceProperties();
-
-		// set this identifier to filter out loobacks
-		discoveryServiceProperties.setPropertyBytes(DISCOVERY_IDENTIFIER, guid);
-
-		discoveryServiceProperties.setPropertyString(
-				ServicePublication.SERVICE_INTERFACE_NAME,
-				ServicePropertyUtils.createStringFromCollection(svcInterfaces));
-
-		Collection configTypes = ServicePropertyUtils.getCollectionProperty(
-				reference, RemoteServicePublication.ENDPOINT_SUPPORTED_CONFIGS);
-		if (configTypes != null) {
-			discoveryServiceProperties.setPropertyString(
-					RemoteServicePublication.ENDPOINT_SUPPORTED_CONFIGS,
-					ServicePropertyUtils
-							.createStringFromCollection(configTypes));
-		}
-
-		Collection serviceIntents = ServicePropertyUtils.getCollectionProperty(
-				reference, RemoteServicePublication.ENDPOINT_SERVICE_INTENTS);
-		if (serviceIntents != null) {
-			discoveryServiceProperties.setPropertyString(
-					RemoteServicePublication.ENDPOINT_SERVICE_INTENTS,
-					ServicePropertyUtils
-							.createStringFromCollection(serviceIntents));
-		}
-
-		// We also use the optional RFC 119 property PROP_KEY_SERVICE_PROPERTIES
-		Map servicePublicationServiceProperties = ServicePropertyUtils
-				.getMapProperty(reference,
-						ServicePublication.SERVICE_PROPERTIES);
-		// Add them
-		if (servicePublicationServiceProperties != null)
-			addPropertiesToDiscoveryServiceProperties(
-					discoveryServiceProperties,
-					servicePublicationServiceProperties);
-
-		// See EventHookImpl.getServicePublicationProperties()
-		// Get and then serialize and set
-		// RemoteServicePublication.ENDPOINT_CONTAINERID
-		ID endpointContainerID = (ID) reference
-				.getProperty(RemoteServicePublication.ENDPOINT_CONTAINERID);
-		// This is required for ecf endpoints so if it's not found then it's an
-		// error
-		if (endpointContainerID == null) {
-			logError(
-					"handleServicePublication", //$NON-NLS-1$
-					"ignoring " //$NON-NLS-1$
-							+ reference
-							+ ". RemoteServicePublication.ENDPOINT_CONTAINERID not set", //$NON-NLS-1$
-					null);
-			return;
-		}
-		// Add endpoint container id.toExternalForm().getBytes...so AS byte []
-		discoveryServiceProperties.setPropertyBytes(
-				RemoteServicePublication.ENDPOINT_CONTAINERID,
-				endpointContainerID.toExternalForm().getBytes());
-		// Add endpoint container id namespace name
-		String endpointNamespace = endpointContainerID.getNamespace().getName();
-		discoveryServiceProperties.setPropertyString(
-				RemoteServicePublication.ENDPOINT_CONTAINERID_NAMESPACE,
-				endpointNamespace);
-
-		// See EventHookImpl.getServicePublicationProperties()
-		// Get and then serialize and set
-		// RemoteServicePublication.TARGET_CONTAINERID
-		ID targetContainerID = (ID) reference
-				.getProperty(RemoteServicePublication.TARGET_CONTAINERID);
-		// the target ID is optional, so only add it if it's been added
-		// via the EventHookImpl
-		if (targetContainerID != null) {
-			// Add endpoint container id.toExternalForm().getBytes...so AS byte
-			// []
-			discoveryServiceProperties.setPropertyBytes(
-					RemoteServicePublication.TARGET_CONTAINERID,
-					targetContainerID.toExternalForm().getBytes());
-			String targetNamespace = targetContainerID.getNamespace().getName();
-			discoveryServiceProperties.setPropertyString(
-					RemoteServicePublication.TARGET_CONTAINERID_NAMESPACE,
-					targetNamespace);
-		}
-
-		// add remote service namespace
-		String rsnamespace = ServicePropertyUtils.getStringProperty(reference,
-				Constants.SERVICE_NAMESPACE);
-		if (rsnamespace != null)
-			discoveryServiceProperties.setPropertyString(
-					Constants.SERVICE_NAMESPACE, rsnamespace);
-
-		// and remote service id
-		final byte[] remoteServiceIDAsBytes = (byte[]) reference
-				.getProperty(Constants.SERVICE_ID);
-		if (remoteServiceIDAsBytes == null) {
-			logInfo("handleServicePublication", //$NON-NLS-1$
-					"ignoring " //$NON-NLS-1$
-							+ reference
-							+ ". No " + Constants.SERVICE_ID + " property set on ServiceReference", //$NON-NLS-1$ //$NON-NLS-2$
-					null);
-			return;
-		}
-		discoveryServiceProperties.setPropertyBytes(Constants.SERVICE_ID,
-				remoteServiceIDAsBytes);
-
-		IDiscoveryAdvertiser advertiser2 = getAdvertiser();
-		if (advertiser2 == null) {
-			logInfo("handleServicePublication", //$NON-NLS-1$
-					"ignoring " //$NON-NLS-1$
-							+ reference
-							+ ". No IDiscoveryAdvertiser available to handle this publication", //$NON-NLS-1$
-					null);
-			return;
-		}
-		Namespace advertiserNamespace = advertiser2.getServicesNamespace();
-		IServiceInfo svcInfo = null;
-		try {
-			// Create service type ID
-			IServiceTypeID serviceTypeID = createServiceTypeID(
-					servicePublicationServiceProperties, advertiserNamespace);
-			// First create unique default name
-			String defaultServiceName = createUniqueDefaultServiceName();
-			// Allow value of service property 'ecf.sp.svcname' to override
-			// default
-			String serviceName = getPropertyWithDefault(
-					servicePublicationServiceProperties,
-					RemoteServicePublication.SERVICE_NAME, defaultServiceName);
-			// Create service URI
-			URI uri = createURI(endpointContainerID, "/" + serviceName); //$NON-NLS-1$
-			// Create service info...in preparation for publication
-			svcInfo = new ServiceInfo(uri, serviceName, serviceTypeID,
-					discoveryServiceProperties);
-
-		} catch (IDCreateException e) {
-			logError("handleServicePublication", //$NON-NLS-1$
-					"Exception creating serviceID", e); //$NON-NLS-1$
-			return;
-		} catch (URISyntaxException e) {
-			logError("handleServicePublication", "Exception creating URI", e); //$NON-NLS-1$ //$NON-NLS-2$
-			return;
-		}
-
-		fireHostPublishUnpublish(reference, svcInfo, true);
-
-		synchronized (serviceInfos) {
-			try {
-				trace("publishService", "publishing serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ reference + ", svcInfo=" + svcInfo); //$NON-NLS-1$
-				advertiser2.registerService(svcInfo);
-				addServiceInfo(reference, svcInfo);
-			} catch (ECFRuntimeException e) {
-				logError("publishService", "cannot register service", e); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	private String createUniqueDefaultServiceName() {
-		return RemoteServicePublication.DEFAULT_SERVICE_NAME_PREFIX
-				+ IDFactory.getDefault().createGUID().getName();
-	}
-
-	private void fireHostPublishUnpublish(final ServiceReference reference,
-			final IServiceInfo serviceInfo, final boolean publish) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IHostDiscoveryListener[] listeners = activator
-					.getHostPublicationListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IHostDiscoveryListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"fireHostPublishUnpublish", //$NON-NLS-1$
-									"Exception calling host discovery listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							if (publish)
-								l.publish(reference, serviceInfo);
-							else
-								l.unpublish(reference, serviceInfo);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private void fireProxyDiscoveredUndiscovered(
-			final IServiceInfo serviceInfo, final boolean discovered) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IProxyDiscoveryListener[] listeners = activator
-					.getProxyDiscoveredListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IProxyDiscoveryListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"fireProxyDiscoveredUndiscovered", //$NON-NLS-1$
-									"Exception calling proxy discovery listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							if (discovered)
-								l.discovered(serviceInfo);
-							else
-								l.undiscovered(serviceInfo);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private void logError(String method, String message, Throwable exception) {
-		LogUtility.logError(method, message, this.getClass(), exception);
-	}
-
-	private void logInfo(String method, String message, Throwable exception) {
-		LogUtility.logInfo(method, message, this.getClass(), exception);
-	}
-
-	private URI createURI(ID endpointContainerID, String path)
-			throws URISyntaxException {
-		URI uri = null;
-		String str = endpointContainerID.getName();
-		while (true) {
-			try {
-				uri = new URI(str);
-				if (uri.getHost() != null) {
-					break;
-				} else {
-					final String rawSchemeSpecificPart = uri
-							.getRawSchemeSpecificPart();
-					// make sure we break eventually
-					if (str.equals(rawSchemeSpecificPart)) {
-						uri = null;
-						break;
-					} else {
-						str = rawSchemeSpecificPart;
-					}
-				}
-			} catch (URISyntaxException e) {
-				uri = null;
-				break;
-			}
-		}
-		String scheme = RemoteServicePublication.SERVICE_TYPE;
-		int port = 32565;
-		if (uri != null) {
-			port = uri.getPort();
-			if (port == -1)
-				port = 32565;
-		}
-		String host = null;
-		if (uri != null) {
-			host = uri.getHost();
-		} else {
-			try {
-				host = InetAddress.getLocalHost().getHostAddress();
-			} catch (Exception e) {
-				logInfo("createURI", //$NON-NLS-1$
-						"failed to get local host adress, falling back to \'localhost\'.", e); //$NON-NLS-1$
-				host = "localhost"; //$NON-NLS-1$
-			}
-		}
-		return new URI(scheme, null, host, port, path, null, null);
-	}
-
-	private void addPropertiesToDiscoveryServiceProperties(
-			IServiceProperties discoveryServiceProperties,
-			Map servicePublicationServiceProperties) {
-		for (Iterator i = servicePublicationServiceProperties.keySet()
-				.iterator(); i.hasNext();) {
-			Object key = i.next();
-			if (!(key instanceof String)) {
-				trace("addPropertiesToDiscoveryServiceProperties", //$NON-NLS-1$
-						"skipping non-string key " + key); //$NON-NLS-1$
-				continue;
-			}
-			String keyStr = (String) key;
-			Object val = servicePublicationServiceProperties.get(keyStr);
-			if (val instanceof String) {
-				discoveryServiceProperties.setPropertyString(keyStr,
-						(String) val);
-			} else if (val instanceof byte[]) {
-				discoveryServiceProperties.setPropertyBytes(keyStr,
-						(byte[]) val);
-			} else if (val instanceof Serializable) {
-				discoveryServiceProperties.setProperty(keyStr, val);
-			}
-		}
-	}
-
-	private synchronized IDiscoveryAdvertiser getAdvertiser() {
-		try {
-			if (advertiser == null) {
-				advertiser = Activator.getDefault().getAdvertiser();
-			}
-		} catch (InterruptedException e) {
-			logError("getAdvertiser", "Cannot get IDiscoveryAdvertiser", e); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		return advertiser;
-	}
-
-	private String getPropertyWithDefault(Map properties, String key, String def) {
-		if (properties == null)
-			return def;
-		String val = (String) properties.get(key);
-		return (val == null) ? def : val;
-	}
-
-	private String[] getStringArrayPropertyWithDefault(Map properties,
-			String key, String def) {
-		if (properties == null)
-			return new String[] { def };
-		Object o = properties.get(key);
-		if (o instanceof String) {
-			return new String[] { (String) o };
-		} else if (o instanceof String[]) {
-			return (String[]) o;
-		} else
-			return new String[] { def };
-	}
-
-	protected IServiceTypeID createServiceTypeID(
-			Map servicePublicationProperties, Namespace aNamespace)
-			throws IDCreateException {
-		String namingAuthority = getPropertyWithDefault(
-				servicePublicationProperties,
-				RemoteServicePublication.NAMING_AUTHORITY,
-				IServiceTypeID.DEFAULT_NA);
-		String[] scopes = getStringArrayPropertyWithDefault(
-				servicePublicationProperties, RemoteServicePublication.SCOPE,
-				IServiceTypeID.DEFAULT_SCOPE[0]);
-		String[] protocols = getStringArrayPropertyWithDefault(
-				servicePublicationProperties,
-				RemoteServicePublication.SERVICE_PROTOCOL,
-				IServiceTypeID.DEFAULT_PROTO[0]);
-
-		return ServiceIDFactory.getDefault().createServiceTypeID(aNamespace,
-				new String[] { RemoteServicePublication.SERVICE_TYPE }, scopes,
-				protocols, namingAuthority);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(org.osgi
-	 * .framework.ServiceReference, java.lang.Object)
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-		unpublishService(reference);
-		handleServicePublication(reference);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(org.osgi
-	 * .framework.ServiceReference, java.lang.Object)
-	 */
-	public void removedService(ServiceReference reference, Object service) {
-		unpublishService(reference);
-	}
-
-	private void unpublishService(ServiceReference reference) {
-		IServiceInfo svcInfo = null;
-		synchronized (serviceInfos) {
-			try {
-				svcInfo = removeServiceInfo(reference);
-				if (svcInfo != null)
-					getAdvertiser().unregisterService(svcInfo);
-			} catch (ECFRuntimeException e) {
-				logError("publishService", "Cannot unregister serviceInfo=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ svcInfo, e);
-			}
-		}
-		if (svcInfo != null)
-			fireHostPublishUnpublish(reference, svcInfo, false);
-	}
-
-	protected void trace(String methodName, String message) {
-		Trace.trace(Activator.PLUGIN_ID, DebugOptions.SVCPUBHANDLERDEBUG,
-				this.getClass(), methodName, message);
-	}
-
-	public void dispose() {
-		if (advertiser != null) {
-			for (Iterator i = serviceInfos.keySet().iterator(); i.hasNext();) {
-				ServiceReference sr = (ServiceReference) i.next();
-				unpublishService(sr);
-			}
-			serviceInfos.clear();
-			advertiser = null;
-		}
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/AbstractDiscoveryListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/AbstractDiscoveryListener.java
deleted file mode 100644
index cdbf806..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/AbstractDiscoveryListener.java
+++ /dev/null
@@ -1,190 +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;
-
-import java.util.Enumeration;
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.eclipse.ecf.discovery.IServiceProperties;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.internal.osgi.services.discovery.Activator;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-
-public abstract class AbstractDiscoveryListener {
-
-	protected int logLevel = LogService.LOG_INFO;
-
-	public AbstractDiscoveryListener(int logLevel) {
-		this.logLevel = logLevel;
-	}
-
-	public AbstractDiscoveryListener() {
-	}
-
-	protected int getLogLevel() {
-		return logLevel;
-	}
-
-	protected void log(ServiceReference serviceReference, String message,
-			Throwable t) {
-		Activator a = Activator.getDefault();
-		if (a == null)
-			return;
-		a.log(serviceReference, getLogLevel(), message, t);
-	}
-
-	protected String printServiceInfo(int tabLevel, IServiceInfo serviceInfo) {
-		if (serviceInfo == null)
-			return "null"; //$NON-NLS-1$
-		StringBuffer sb = new StringBuffer(""); //$NON-NLS-1$
-		sb.append(createTabs(tabLevel));
-		sb.append("serviceInfo").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		printServicePropertyString(tabLevel + 1, "location", serviceInfo //$NON-NLS-1$
-				.getLocation().toString(), sb, true);
-		printServicePropertyString(tabLevel + 1, "serviceID", serviceInfo //$NON-NLS-1$
-				.getServiceID().toExternalForm(), sb, true);
-		printServicePropertyString(tabLevel + 1, "serviceName", //$NON-NLS-1$
-				serviceInfo.getServiceName(), sb, true);
-		printServicePropertyString(tabLevel + 1, "priority", //$NON-NLS-1$
-				serviceInfo.getPriority() + "", sb, true); //$NON-NLS-1$
-		printServicePropertyString(tabLevel + 1, "weight", //$NON-NLS-1$
-				serviceInfo.getWeight() + "", sb, true); //$NON-NLS-1$
-		sb.append(createTabs(tabLevel + 1))
-				.append("discoveryServiceProperties") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printServiceProperties(tabLevel + 2,
-						serviceInfo.getServiceProperties()));
-		IServiceProperties serviceProperties = serviceInfo
-				.getServiceProperties();
-		if (serviceProperties != null) {
-			sb.append(createTabs(tabLevel + 1));
-			sb.append("osgiServiceProperties"); //$NON-NLS-1$
-			sb.append("\n"); //$NON-NLS-1$
-			sb.append(printServicePropertyString(tabLevel + 2,
-					serviceProperties,
-					ServicePublication.SERVICE_INTERFACE_NAME,
-					"osgiServiceInterfaces")); //$NON-NLS-1$
-			sb.append(printServicePropertyString(tabLevel + 2,
-					serviceProperties,
-					RemoteServicePublication.ENDPOINT_SUPPORTED_CONFIGS,
-					"endpointSupportedConfigs")); //$NON-NLS-1$
-			sb.append(printServicePropertyString(tabLevel + 2,
-					serviceProperties,
-					RemoteServicePublication.ENDPOINT_SERVICE_INTENTS,
-					"endpointServiceIntents")); //$NON-NLS-1$
-			sb.append(printServicePropertyBytes(tabLevel + 2,
-					serviceProperties,
-					RemoteServicePublication.ENDPOINT_CONTAINERID,
-					"endpointContainerID")); //$NON-NLS-1$
-			sb.append(printServicePropertyString(tabLevel + 2,
-					serviceProperties,
-					RemoteServicePublication.ENDPOINT_CONTAINERID_NAMESPACE,
-					"endpointContainerIDNamespace")); //$NON-NLS-1$
-			sb.append(printServicePropertyBytes(tabLevel + 2,
-					serviceProperties, "ecf.rsvc.id", "remoteServiceID")); //$NON-NLS-1$ //$NON-NLS-2$
-			sb.append(printServicePropertyString(tabLevel + 2,
-					serviceProperties, "ecf.rsvc.ns", //$NON-NLS-1$
-					"remoteServiceIDNamespace")); //$NON-NLS-1$
-		}
-
-		return sb.toString();
-	}
-
-	private void printServicePropertyString(int tabLevel, String propertyName,
-			String propertyValue, StringBuffer sb, boolean newline) {
-		if (propertyValue != null) {
-			sb.append(createTabs(tabLevel)).append(propertyName);
-			sb.append("="); //$NON-NLS-1$
-			sb.append(propertyValue);
-			if (newline)
-				sb.append("\n"); //$NON-NLS-1$
-		}
-	}
-
-	protected String printServicePropertyString(int tabLevel,
-			IServiceProperties serviceProperties, String propertyName,
-			String outputName) {
-		StringBuffer sb = new StringBuffer();
-		String propertyValue = serviceProperties
-				.getPropertyString(propertyName);
-		if (propertyValue != null)
-			printServicePropertyString(tabLevel, outputName, propertyValue, sb,
-					true);
-		return sb.toString();
-	}
-
-	protected String printServicePropertyBytes(int tabLevel,
-			IServiceProperties serviceProperties, String propertyName,
-			String outputName) {
-		byte[] propertyValue = serviceProperties.getPropertyBytes(propertyName);
-		StringBuffer sb = new StringBuffer();
-		if (propertyValue != null)
-			printServicePropertyString(tabLevel, outputName, new String(
-					propertyValue), sb, true);
-		return sb.toString();
-	}
-
-	protected String printServiceID(IServiceID serviceID) {
-		if (serviceID == null)
-			return "null"; //$NON-NLS-1$
-		return serviceID.toExternalForm();
-	}
-
-	protected String createTabs(int tabLevel) {
-		StringBuffer sb = new StringBuffer(""); //$NON-NLS-1$
-		for (int i = 0; i < tabLevel; i++) {
-			sb.append("\t"); //$NON-NLS-1$
-		}
-		return sb.toString();
-	}
-
-	protected String printServiceProperties(int tabLevel,
-			IServiceProperties serviceProperties) {
-		if (serviceProperties == null)
-			return "null"; //$NON-NLS-1$
-		Enumeration enumeration = serviceProperties.getPropertyNames();
-		StringBuffer sb = new StringBuffer(""); //$NON-NLS-1$
-		if (enumeration != null) {
-			for (Enumeration e = enumeration; e.hasMoreElements();) {
-				String key = (String) e.nextElement();
-				sb.append(createTabs(tabLevel));
-				sb.append("name=").append(key).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
-				String stringValue = serviceProperties.getPropertyString(key);
-				byte[] bytesValue = serviceProperties.getPropertyBytes(key);
-				Object objectValue = serviceProperties.getProperty(key);
-				if (stringValue != null)
-					sb.append("value[String]=").append(stringValue); //$NON-NLS-1$
-				if (bytesValue != null)
-					sb.append("value[bytes]=").append(printBytes(bytesValue)); //$NON-NLS-1$
-				if (objectValue != null && stringValue == null) {
-					if (bytesValue != null)
-						sb.append(","); //$NON-NLS-1$
-					sb.append("value[Object]=").append(objectValue); //$NON-NLS-1$
-				}
-				sb.append("\n"); //$NON-NLS-1$
-			}
-		}
-		return sb.toString();
-	}
-
-	protected String printBytes(byte[] bytesValue) {
-		if (bytesValue == null)
-			return "null"; //$NON-NLS-1$
-		StringBuffer sb = new StringBuffer("["); //$NON-NLS-1$
-		for (int i = 0; i < bytesValue.length; i++) {
-			if (i > 0)
-				sb.append(","); //$NON-NLS-1$
-			sb.append(bytesValue[i]);
-		}
-		sb.append("]"); //$NON-NLS-1$
-		return sb.toString();
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/DiscoveredServiceNotification.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/DiscoveredServiceNotification.java
deleted file mode 100644
index 0e1c991..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/DiscoveredServiceNotification.java
+++ /dev/null
@@ -1,110 +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;
-
-import java.util.Collection;
-
-/**
- * Interface for notification on discovered services.
- * <p>
- * <code>DiscoveredServiceNotification</code> objects are immutable.
- * 
- * @Immutable
- * @version $Revision: 1.2 $
- * 
- * @deprecated This interface is deprecated because at the time of ECF
- *             3.0/Galileo release, it seems likely that this class will be
- *             moved, or renamed, or undergo major changes after the release of
- *             ECF 3.0. This deprecation is therefore intended as a notice to
- *             consumers about these upcoming changes in the RFC119
- *             specification, and the consequent changes to these OSGi-defined
- *             classes.
- */
-public interface DiscoveredServiceNotification {
-
-	/**
-	 * Notification indicating that a service matching the listening criteria
-	 * has been discovered.
-	 * <p>
-	 * The value of <code>AVAILABLE</code> is 0x00000001.
-	 */
-	public final static int AVAILABLE = 0x00000001;
-
-	/**
-	 * Notification indicating that the properties of a previously discovered
-	 * service have changed.
-	 * <p>
-	 * The value of <code>MODIFIED</code> is 0x00000002.
-	 */
-	public final static int MODIFIED = 0x00000002;
-
-	/**
-	 * Notification indicating that a previously discovered service is no longer
-	 * known to <code>Discovery</code>.
-	 * <p>
-	 * The value of <code>UNAVAILABLE</code> is 0x00000004.
-	 */
-	public final static int UNAVAILABLE = 0x00000004;
-
-	/**
-	 * Notification indicating that the properties of a previously discovered
-	 * service have changed and the new properties no longer match the
-	 * listener's filter.
-	 * <p>
-	 * The value of <code>MODIFIED_ENDMATCH</code> is 0x00000008.
-	 */
-	public final static int MODIFIED_ENDMATCH = 0x00000008;
-
-	/**
-	 * Returns information currently known to <code>Discovery</code> regarding
-	 * the service endpoint.
-	 * 
-	 * @return metadata of the service <code>Discovery</code> notifies about. Is
-	 *         never <code>null</code>.
-	 */
-	ServiceEndpointDescription getServiceEndpointDescription();
-
-	/**
-	 * Returns the type of notification. The type values are:
-	 * <ul>
-	 * <li>{@link #AVAILABLE}</li>
-	 * <li>{@link #MODIFIED}</li>
-	 * <li>{@link #MODIFIED_ENDMATCH}</li>
-	 * <li>{@link #UNAVAILABLE}</li>
-	 * </ul>
-	 * 
-	 * @return Type of notification regarding known service metadata.
-	 */
-	int getType();
-
-	/**
-	 * Returns interface name criteria of the {@link DiscoveredServiceTracker}
-	 * object matching with the interfaces of the
-	 * <code>ServiceEndpointDescription</code> and thus caused the notification.
-	 * 
-	 * @return <code>Collection (&lt;String&gt;)</code> of matching interface
-	 *         name criteria of the <code>DiscoveredServiceTracker</code> object
-	 *         being notified, or an empty collection if notification hasn't
-	 *         been caused by a matching interface name criteria.
-	 */
-	Collection/* <String> */getInterfaces();
-
-	/**
-	 * Returns filters of the <code>DiscoveredServiceTracker</code> object
-	 * matching with the properties of the
-	 * <code>ServiceEndpointDescription</code> and thus caused the notification.
-	 * 
-	 * @return <code>Collection (&lt;String&gt;)</code> of matching filters of
-	 *         the <code>DiscoveredServiceTracker</code> object being notified,
-	 *         or an empty collection if notification hasn't been caused by a
-	 *         matching filter criteria.
-	 */
-	Collection/* <String> */getFilters();
-}
\ No newline at end of file
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/DiscoveredServiceTracker.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/DiscoveredServiceTracker.java
deleted file mode 100644
index fcc12d6..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/DiscoveredServiceTracker.java
+++ /dev/null
@@ -1,84 +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;
-
-/**
- * Interface of trackers for discovered remote services.
- * <p>
- * When a service implementing this interface is registered with the framework,
- * then <code>Discovery</code> will notify it about remote services matching one
- * of the provided criteria and will keep notifying it on changes of information
- * known to Discovery regarding this services.
- * 
- * <code>Discovery</code> may deliver notifications on discovered services to a
- * <code>DiscoveredServiceTracker</code> out of order and may concurrently call
- * and/or reenter a <code>DiscoveredServiceTracker</code>.
- * 
- * @ThreadSafe
- * @version $Revision: 1.2 $
- * 
- * @deprecated This interface is deprecated because at the time of ECF
- *             3.0/Galileo release, it seems likely that this class will be
- *             moved, or renamed, or undergo major changes after the release of
- *             ECF 3.0. This deprecation is therefore intended as a notice to
- *             consumers about these upcoming changes in the RFC119
- *             specification, and the consequent changes to these OSGi-defined
- *             classes.
- */
-public interface DiscoveredServiceTracker {
-
-	/**
-	 * Optional ServiceRegistration property which contains service interfaces
-	 * this tracker is interested in.
-	 * <p>
-	 * Value of this property is of type
-	 * <code>Collection (&lt;String&gt;)</code>. May be <code>null</code> or
-	 * empty.
-	 */
-	public static final String INTERFACE_MATCH_CRITERIA = "osgi.remote.discovery.interest.interfaces"; //$NON-NLS-1$
-
-	/**
-	 * Optional ServiceRegistration property which contains filters for services
-	 * this tracker is interested in.
-	 * <p>
-	 * Note that these filters need to take into account service publication
-	 * properties which are not necessarily the same as properties under which a
-	 * service is registered. See {@link ServicePublication} for some standard
-	 * properties used to publish service metadata.
-	 * <p>
-	 * The following sample filter will make <code>Discovery</code> notify the
-	 * <code>DiscoveredServiceTracker</code> about services providing interface
-	 * 'my.company.foo' of version '1.0.1.3':
-	 * <code>"(&amp;(service.interface=my.company.foo)(service.interface.version=my.company.foo|1.0.1.3))"</code>.
-	 * <p>
-	 * Value of this property is of type
-	 * <code>Collection (&lt;String&gt;)</code>. May be <code>null</code>. or
-	 * empty
-	 */
-	public static final String FILTER_MATCH_CRITERIA = "osgi.remote.discovery.interest.filters"; //$NON-NLS-1$
-
-	/**
-	 * Receives notification that information known to <code>Discovery</code>
-	 * regarding a remote service has changed.
-	 * <p>
-	 * The tracker is only notified about remote services which fulfill the
-	 * matching criteria, either one of the interfaces or one of the filters,
-	 * provided as properties of this service.
-	 * <p>
-	 * If multiple criteria match, then the tracker is notified about each of
-	 * them. This can be done either by a single notification callback or by
-	 * multiple subsequent ones.
-	 * 
-	 * @param notification
-	 *            the <code>DiscoveredServiceNotification</code> object
-	 *            describing the change. Is never <code>null</code>.
-	 */
-	void serviceChanged(DiscoveredServiceNotification notification);
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IHostDiscoveryListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IHostDiscoveryListener.java
deleted file mode 100644
index 6e144ee..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IHostDiscoveryListener.java
+++ /dev/null
@@ -1,23 +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;
-
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.osgi.framework.ServiceReference;
-
-public interface IHostDiscoveryListener {
-
-	public void publish(ServiceReference publicationServiceReference,
-			IServiceInfo serviceInfo);
-
-	public void unpublish(ServiceReference publicationServiceReference,
-			IServiceInfo serviceInfo);
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IProxyDiscoveryListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IProxyDiscoveryListener.java
deleted file mode 100644
index 312b27c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IProxyDiscoveryListener.java
+++ /dev/null
@@ -1,19 +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;
-
-import org.eclipse.ecf.discovery.IServiceInfo;
-
-public interface IProxyDiscoveryListener {
-
-	public void discovered(IServiceInfo serviceInfo);
-
-	public void undiscovered(IServiceInfo serviceInfo);
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IRemoteServiceEndpointDescription.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IRemoteServiceEndpointDescription.java
deleted file mode 100644
index 2b8834e..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IRemoteServiceEndpointDescription.java
+++ /dev/null
@@ -1,72 +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;
-
-import java.util.Map;
-import org.eclipse.ecf.core.identity.ID;
-
-public interface IRemoteServiceEndpointDescription extends
-		ServiceEndpointDescription {
-
-	/**
-	 * Get the ECF endpoint ID (the ID of the endpoint that exposes the given
-	 * remote service). This ID must not be <code>null</code>.
-	 * 
-	 * @return ID that is the ECF endpoint ID that exposes the service described
-	 *         by this description.
-	 */
-	public ID getEndpointAsID();
-
-	/**
-	 * Get the ECF container target ID (the ID of the container that is the
-	 * target to connect to). This may return
-	 * <code>null<code>, meaning that no target
-	 * ID is available, and that the endpoint ID returned from {@link #getEndpointAsID()}
-	 * is also the target container ID.  If not <code>null</code>, the ID
-	 * returned from this method may be used to connect to an intermediate
-	 * target via IContainer connect.
-	 * 
-	 * @return ID that may be used by local IContainer to connect to remote
-	 *         target.
-	 */
-	public ID getConnectTargetID();
-
-	/**
-	 * Get the ECF remote services filter string. May return <code>null</code>.
-	 * 
-	 * @return String that is to be used as the filter for the call to
-	 *         getRemoteServicesReferences(ID,interface,filter);
-	 */
-	public String getRemoteServicesFilter();
-
-	/**
-	 * Set the properties for this endpoint description. This allows clients to
-	 * examine and potentially change the service properties given by the
-	 * service host (and delivered via discovery), and potentially change them
-	 * via this method. The resulting properties will then be used in subsequent
-	 * processing of this service endpoint description.
-	 * 
-	 * @param properties
-	 *            the new set of properties. Must not be <code>null</code>.
-	 */
-	public void setProperties(Map properties);
-
-	/**
-	 * Get the remote service id for this service endpoint description.
-	 * 
-	 * @return long remote service id for the remote service.
-	 */
-	public long getRemoteServiceId();
-
-	public String[] getSupportedConfigs();
-
-	public String[] getServiceIntents();
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/LoggingHostDiscoveryListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/LoggingHostDiscoveryListener.java
deleted file mode 100644
index 887fbf1..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/LoggingHostDiscoveryListener.java
+++ /dev/null
@@ -1,49 +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;
-
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.osgi.framework.ServiceReference;
-
-public class LoggingHostDiscoveryListener extends AbstractDiscoveryListener
-		implements IHostDiscoveryListener {
-
-	public LoggingHostDiscoveryListener(int logLevel) {
-		super(logLevel);
-	}
-
-	public LoggingHostDiscoveryListener() {
-	}
-
-	public void publish(ServiceReference publicationServiceReference,
-			IServiceInfo serviceInfo) {
-		if (publicationServiceReference == null || serviceInfo == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service discovery: publish").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		sb.append(createTabs(1)).append("serviceReference=") //$NON-NLS-1$
-				.append(publicationServiceReference).append("\n") //$NON-NLS-1$
-				.append(printServiceInfo(1, serviceInfo));
-		log(publicationServiceReference, sb.toString(), null);
-	}
-
-	public void unpublish(ServiceReference publicationServiceReference,
-			IServiceInfo serviceInfo) {
-		if (publicationServiceReference == null || serviceInfo == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service discovery: unpublish").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		sb.append(createTabs(1)).append("serviceReference=") //$NON-NLS-1$
-				.append(publicationServiceReference).append("\n") //$NON-NLS-1$
-				.append(printServiceInfo(1, serviceInfo));
-		log(publicationServiceReference, sb.toString(), null);
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/LoggingProxyDiscoveryListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/LoggingProxyDiscoveryListener.java
deleted file mode 100644
index 245a80f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/LoggingProxyDiscoveryListener.java
+++ /dev/null
@@ -1,37 +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;
-
-import org.eclipse.ecf.discovery.IServiceInfo;
-
-public class LoggingProxyDiscoveryListener extends AbstractDiscoveryListener
-		implements IProxyDiscoveryListener {
-
-	public void discovered(IServiceInfo serviceInfo) {
-		if (serviceInfo == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service discovery: remote service discovered") //$NON-NLS-1$
-				.append("\n"); //$NON-NLS-1$
-		sb.append(printServiceInfo(1, serviceInfo));
-		log(null, sb.toString(), null);
-	}
-
-	public void undiscovered(IServiceInfo serviceInfo) {
-		if (serviceInfo == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service discovery: remote service undiscovered") //$NON-NLS-1$
-				.append("\n"); //$NON-NLS-1$
-		sb.append(printServiceInfo(1, serviceInfo));
-		log(null, sb.toString(), null);
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServiceEndpointDescription.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServiceEndpointDescription.java
deleted file mode 100644
index 0b5ede7..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServiceEndpointDescription.java
+++ /dev/null
@@ -1,227 +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;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.internal.osgi.services.discovery.Activator;
-import org.eclipse.ecf.internal.osgi.services.discovery.ServicePropertyUtils;
-
-public abstract class RemoteServiceEndpointDescription implements
-		IRemoteServiceEndpointDescription {
-
-	protected Map serviceProperties;
-
-	public RemoteServiceEndpointDescription(Map properties) {
-		this.serviceProperties = properties;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.ServiceEndpointDescription#getEndpointID()
-	 */
-	public String getEndpointID() {
-		Object o = serviceProperties.get(ServicePublication.ENDPOINT_ID);
-		if (o instanceof String) {
-			return (String) o;
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seeorg.osgi.service.discovery.ServiceEndpointDescription#
-	 * getEndpointInterfaceName(java.lang.String)
-	 */
-	public String getEndpointInterfaceName(String interfaceName) {
-		if (interfaceName == null)
-			return null;
-		Object o = serviceProperties
-				.get(ServicePublication.ENDPOINT_INTERFACE_NAME);
-		if (o == null || !(o instanceof String)) {
-			return null;
-		}
-		String intfNames = (String) o;
-		Collection c = ServicePropertyUtils
-				.createCollectionFromString(intfNames);
-		if (c == null)
-			return null;
-		for (Iterator i = c.iterator(); i.hasNext();) {
-			String intfName = (String) i.next();
-			if (intfName != null && intfName.startsWith(interfaceName)) {
-				// return just endpointInterfaceName
-				return intfName
-						.substring(
-								intfName.length()
-										+ ServicePropertyUtils.ENDPOINT_INTERFACE_NAME_SEPARATOR
-												.length()).trim();
-			}
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.osgi.service.discovery.ServiceEndpointDescription#getLocation()
-	 */
-	public URI getLocation() {
-		Object o = serviceProperties.get(ServicePublication.ENDPOINT_LOCATION);
-		if (o == null || !(o instanceof String)) {
-			return null;
-		}
-		String uriExternalForm = (String) o;
-		URI uri = null;
-		try {
-			uri = new URI(uriExternalForm);
-		} catch (URISyntaxException e) {
-			Activator
-					.getDefault()
-					.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
-							IStatus.ERROR, "Exception getting location URI", e));//$NON-NLS-1$
-		}
-		return uri;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.ServiceEndpointDescription#getProperties()
-	 */
-	public Map getProperties() {
-		return serviceProperties;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.ServiceEndpointDescription#getProperty(java
-	 * .lang.String)
-	 */
-	public Object getProperty(String key) {
-		return serviceProperties.get(key);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.ServiceEndpointDescription#getPropertyKeys()
-	 */
-	public Collection getPropertyKeys() {
-		return serviceProperties.keySet();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.ServiceEndpointDescription#getProvidedInterfaces
-	 * ()
-	 */
-	public Collection getProvidedInterfaces() {
-		Object o = serviceProperties
-				.get(ServicePublication.SERVICE_INTERFACE_NAME);
-		if (o == null || !(o instanceof String)) {
-			throw new NullPointerException();
-		}
-		final String providedInterfacesStr = (String) o;
-		return ServicePropertyUtils
-				.createCollectionFromString(providedInterfacesStr);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.ServiceEndpointDescription#getVersion(java
-	 * .lang.String)
-	 */
-	public String getVersion(String interfaceName) {
-		Collection c = getProvidedInterfaces();
-		if (c == null) {
-			return null;
-		}
-		for (Iterator i = c.iterator(); i.hasNext();) {
-			String intfName = (String) i.next();
-			if (intfName != null && intfName.startsWith(interfaceName)) {
-				// return just version string
-				return intfName
-						.substring(
-								intfName.length()
-										+ ServicePropertyUtils.INTERFACE_VERSION_SEPARATOR
-												.length()).trim();
-			}
-		}
-		return null;
-	}
-
-	public long getRemoteServiceId() {
-		byte[] remoteServiceIdAsBytes = (byte[]) serviceProperties
-				.get(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
-		if (remoteServiceIdAsBytes == null)
-			return -1;
-		else {
-			Long remoteServiceId = new Long(new String(remoteServiceIdAsBytes));
-			return remoteServiceId.longValue();
-		}
-	}
-
-	public abstract ID getEndpointAsID();
-
-	public abstract ID getConnectTargetID();
-
-	public abstract IServiceID getServiceID();
-
-	public String getRemoteServicesFilter() {
-		Object o = serviceProperties
-				.get(RemoteServicePublication.REMOTE_SERVICE_FILTER);
-		if (o instanceof String)
-			return (String) o;
-		return null;
-	}
-
-	public void setProperties(Map props) {
-		if (props != null)
-			this.serviceProperties = props;
-	}
-
-	public String[] getSupportedConfigs() {
-		Object o = serviceProperties
-				.get(RemoteServicePublication.ENDPOINT_SUPPORTED_CONFIGS);
-		if (o == null || !(o instanceof String))
-			return null;
-		Collection c = ServicePropertyUtils
-				.createCollectionFromString((String) o);
-		return (String[]) ((c == null) ? null : c.toArray(new String[] {}));
-	}
-
-	public String[] getServiceIntents() {
-		Object o = serviceProperties
-				.get(RemoteServicePublication.ENDPOINT_SERVICE_INTENTS);
-		if (o == null || !(o instanceof String))
-			return null;
-		Collection c = ServicePropertyUtils
-				.createCollectionFromString((String) o);
-		return (String[]) ((c == null) ? null : c.toArray(new String[] {}));
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServicePublication.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServicePublication.java
deleted file mode 100644
index 370fece..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServicePublication.java
+++ /dev/null
@@ -1,87 +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;
-
-public interface RemoteServicePublication extends ServicePublication {
-
-	/**
-	 * Discovery OSGi Service Type for publishing/discovering osgiservices
-	 */
-	public static final String SERVICE_TYPE = "osgiservices"; //$NON-NLS-1$
-	/**
-	 * Prefix for the default service name. The default service name will be the
-	 * DEFAULT_SERVICE_NAME_PREFIX+serviceID (long)
-	 */
-	public static final String DEFAULT_SERVICE_NAME_PREFIX = "svc_"; //$NON-NLS-1$
-
-	// Discovery service properties
-
-	/**
-	 * Discovery service name property. If the specified service property is
-	 * non-null, the service name will override the default value, which is the
-	 * DEFAULT_SERVICE_NAME_PREFIX+serviceID as described above. The value
-	 * provided for this property must be of type String.
-	 */
-	public static final String SERVICE_NAME = "ecf.sp.svcname"; //$NON-NLS-1$
-	/**
-	 * Discovery naming authority property. If the specified serviceproperty is
-	 * non-null, the discovery naming authority will override the default value,
-	 * which is IServiceID#DEFAULT_NA ("iana"). The value provided for this
-	 * property must be of type String.
-	 */
-	public static final String NAMING_AUTHORITY = "ecf.sp.namingauth"; //$NON-NLS-1$
-	/**
-	 * Discovery scope property. If the specified service property is non-null,
-	 * the discovery scope will override the default value, which is
-	 * IServiceID#DEFAULT_SCOPE ("default"). The value provided for this
-	 * property must be of type String, which can be split into a String[] using
-	 * ';' as the delimiter (e.g. 'scope1;scope2;scope3').
-	 */
-	public static final String SCOPE = "ecf.sp.scope"; //$NON-NLS-1$
-	/**
-	 * Discovery protocol property. If the specified service property is
-	 * non-null, the discovery protocol will override the default value, which
-	 * is IServiceID#DEFAULT_PROTO ("tcp"). The value provided for this property
-	 * must be of type String, which can be split into a String[] using ';' as
-	 * the delimiter (e.g. 'proto1;proto1;proto1').
-	 */
-	public static final String SERVICE_PROTOCOL = "ecf.sp.protocol"; //$NON-NLS-1$
-	/**
-	 * Endpoint container ID property. The value for this property must be of
-	 * type byte[] which is a UTF-8 encoding of a String.
-	 */
-	public static final String ENDPOINT_CONTAINERID = "ecf.sp.cid"; //$NON-NLS-1$
-	/**
-	 * Endpoint container ID namespace property. The value provided for this
-	 * property must be of type String.
-	 */
-	public static final String ENDPOINT_CONTAINERID_NAMESPACE = "ecf.sp.cns"; //$NON-NLS-1$
-
-	public static final String ENDPOINT_SUPPORTED_CONFIGS = "ecf.sp.ect"; //$NON-NLS-1$
-
-	public static final String ENDPOINT_SERVICE_INTENTS = "ecf.sp.esi"; //$NON-NLS-1$
-
-	/**
-	 * Target container ID property. The value for this property must be of type
-	 * byte[] which is a UTF-8 encoding of a String.
-	 */
-	public static final String TARGET_CONTAINERID = "ecf.sp.tid"; //$NON-NLS-1$
-	/**
-	 * Target container ID namespace property. The value provided for this
-	 * property must be of type String.
-	 */
-	public static final String TARGET_CONTAINERID_NAMESPACE = "ecf.sp.tns"; //$NON-NLS-1$
-	/**
-	 * Client remote service filter property. The value provided for this
-	 * property must be of type String.
-	 */
-	public static final String REMOTE_SERVICE_FILTER = "ecf.client.filter"; //$NON-NLS-1$
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/ServiceEndpointDescription.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/ServiceEndpointDescription.java
deleted file mode 100644
index 599b2f3..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/ServiceEndpointDescription.java
+++ /dev/null
@@ -1,133 +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;
-
-import java.net.URI;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * This interface describes an endpoint of a service. This class can be
- * considered as a wrapper around the property map of a published service and
- * its endpoint. It provides an API to conveniently access the most important
- * properties of the service.
- * <p>
- * <code>ServiceEndpointDescription</code> objects are immutable.
- * 
- * @Immutable
- * @version $Revision: 1.2 $
- * 
- * @deprecated This interface is deprecated because at the time of ECF
- *             3.0/Galileo release, it seems likely that this class will be
- *             moved, or renamed, or undergo major changes after the release of
- *             ECF 3.0. This deprecation is therefore intended as a notice to
- *             consumers about these upcoming changes in the RFC119
- *             specification, and the consequent changes to these OSGi-defined
- *             classes.
- */
-public interface ServiceEndpointDescription {
-
-	/**
-	 * Returns the value of the property with key
-	 * {@link ServicePublication#SERVICE_INTERFACE_NAME}.
-	 * 
-	 * @return <code>Collection (&lt;String&gt;)</code> of service interface
-	 *         names provided by the advertised service endpoint. The collection
-	 *         is never <code>null</code> or empty but contains at least one
-	 *         service interface.
-	 */
-	Collection /* <String> */getProvidedInterfaces();
-
-	/**
-	 * Returns non-Java endpoint interface name associated with the given
-	 * interface.
-	 * <p>
-	 * Value of the property with key
-	 * {@link ServicePublication#ENDPOINT_INTERFACE_NAME} is used by this
-	 * operation.
-	 * 
-	 * @param interfaceName
-	 *            for which its non-Java endpoint interface name should be
-	 *            returned.
-	 * @return non-Java endpoint interface name, or <code>null</code> if it
-	 *         hasn't been provided or if given interface name is
-	 *         <code>null</code>.
-	 */
-	String getEndpointInterfaceName(String interfaceName);
-
-	/**
-	 * Returns version of the given interface.
-	 * <p>
-	 * Value of the property with key
-	 * {@link ServicePublication#SERVICE_INTERFACE_VERSION} is used by this
-	 * operation.
-	 * 
-	 * @param interfaceName
-	 *            for which its version should be returned.
-	 * @return Version of given service interface, or <code>null</code> if it
-	 *         hasn't been provided or if given interface name is
-	 *         <code>null</code>.
-	 */
-	String getVersion(String interfaceName);
-
-	/**
-	 * Returns the value of the property with key
-	 * {@link ServicePublication#ENDPOINT_LOCATION}.
-	 * 
-	 * @return The url of the service location, or <code>null</code> if it
-	 *         hasn't been provided.
-	 */
-	URI getLocation();
-
-	/**
-	 * Returns the value of the property with key
-	 * {@link ServicePublication#ENDPOINT_ID}.
-	 * 
-	 * @return Unique id of service endpoint, or <code>null</code> if it hasn't
-	 *         been provided.
-	 */
-	String getEndpointID();
-
-	/**
-	 * Getter method for the property value of a given key.
-	 * 
-	 * @param key
-	 *            Name of the property
-	 * @return The property value, or <code>null</code> if none is found for the
-	 *         given key or if provided key is <code>null</code>.
-	 */
-	Object getProperty(String key);
-
-	/**
-	 * Returns all names of service endpoint properties.
-	 * 
-	 * @return a <code>Collection (&lt;String&gt;)</code> of property names
-	 *         available in the ServiceEndpointDescription. The collection is
-	 *         never <code>null</code> or empty but contains at least names of
-	 *         mandatory <code>ServicePublication</code> properties. Since
-	 *         <code>ServiceEndpointDescription</code> objects are immutable,
-	 *         the returned collection is also not going to be updated at a
-	 *         later point of time.
-	 */
-	Collection/* <String> */getPropertyKeys();
-
-	/**
-	 * Returns all service endpoint properties.
-	 * 
-	 * @return all properties of the service as a
-	 *         <code>Map (&lt;String, Object&gt;)</code>. The map is never
-	 *         <code>null</code> or empty but contains at least mandatory
-	 *         <code>ServicePublication</code> properties. Since
-	 *         <code>ServiceEndpointDescription</code> objects are immutable,
-	 *         the returned map is also not going to be updated at a later point
-	 *         of time.
-	 */
-	Map/* <String, Object> */getProperties();
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/ServicePublication.java b/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/ServicePublication.java
deleted file mode 100644
index cf933d4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/ServicePublication.java
+++ /dev/null
@@ -1,149 +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;
-
-import org.osgi.framework.ServiceReference;
-
-/**
- * Register a service implementing the <code>ServicePublication</code> interface
- * in order to publish metadata of a particular service (endpoint) via
- * Discovery. Metadata which has to be published is given in form of properties
- * at registration.
- * <p>
- * In order to update published service metadata, update the properties
- * registered with the <code>ServicePublication</code> service. Depending on
- * Discovery's implementation and underlying protocol it may result in an update
- * or new re-publication of the service.
- * <p>
- * In order to unpublish the previously published service metadata, unregister
- * the <code>ServicePublication</code> service.
- * <p>
- * Please note that providing the {@link #SERVICE_INTERFACE_NAME} property is
- * mandatory when a <code>ServicePublication</code> service is registered. Note
- * also that a Discovery implementation may require provision of additional
- * properties, e.g. some of the standard properties defined below, or may make
- * special use of them in case they are provided. For example an SLP-based
- * Discovery might use the value provided with the {@link #ENDPOINT_LOCATION}
- * property for construction of a SLP-URL used to publish the service.
- * <p>
- * Also important is that it's not guaranteed that after registering a
- * <code>ServicePublication</code> object its service metadata is actually
- * published. Beside the fact that at least one Discovery service has to be
- * present, the provided properties have to be valid, e.g. shouldn't contain
- * case variants of the same key name, and the actual publication via Discovery
- * mechanisms has to succeed.
- * 
- * @ThreadSafe
- * @version $Revision: 1.2 $
- * 
- * @deprecated This interface is deprecated because at the time of ECF
- *             3.0/Galileo release, it seems likely that this class will be
- *             moved, or renamed, or undergo major changes after the release of
- *             ECF 3.0. This deprecation is therefore intended as a notice to
- *             consumers about these upcoming changes in the RFC119
- *             specification, and the consequent changes to these OSGi-defined
- *             classes.
- */
-public interface ServicePublication {
-
-	/**
-	 * Mandatory ServiceRegistration property which contains a collection of
-	 * full qualified interface names offered by the advertised service
-	 * endpoint.
-	 * <p>
-	 * Value of this property is of type
-	 * <code>Collection (&lt;String&gt;)</code>.
-	 */
-	public static final String SERVICE_INTERFACE_NAME = "osgi.remote.service.interfaces"; //$NON-NLS-1$
-
-	/**
-	 * Optional ServiceRegistration property which contains a collection of
-	 * interface names with their associated version attributes separated by
-	 * {@link #SEPARATOR} e.g. ["my.company.foo|1.3.5", "my.company.zoo|2.3.5"].
-	 * In case no version has been provided for an interface, Discovery may use
-	 * the String-value of <code>org.osgi.framework.Version.emptyVersion</code>
-	 * constant.
-	 * <p>
-	 * Value of this property is of type
-	 * <code>Collection (&lt;String&gt;)</code>, may be <code>null</code> or
-	 * empty.
-	 */
-	public static final String SERVICE_INTERFACE_VERSION = "osgi.remote.service.interfaces.version"; //$NON-NLS-1$
-
-	/**
-	 * Optional ServiceRegistration property which contains a collection of
-	 * interface names with their associated (non-Java) endpoint interface names
-	 * separated by {@link #SEPARATOR} e.g.:<br>
-	 * ["my.company.foo|MyWebService", "my.company.zoo|MyWebService"].
-	 * <p>
-	 * This (non-Java) endpoint interface name is usually a communication
-	 * protocol specific interface, for instance a web service interface name.
-	 * Though this information is usually contained in accompanying properties
-	 * e.g. a wsdl file, Discovery usually doesn't read and interprets such
-	 * service meta-data. Providing this information explicitly, might allow
-	 * external non-Java applications find services based on this endpoint
-	 * interface.
-	 * <p>
-	 * Value of this property is of type
-	 * <code>Collection (&lt;String&gt;)</code>, may be <code>null</code> or
-	 * empty.
-	 */
-	public static final String ENDPOINT_INTERFACE_NAME = "osgi.remote.endpoint.interfaces"; //$NON-NLS-1$
-
-	/**
-	 * Optional ServiceRegistration property which contains a map of properties
-	 * of the published service.
-	 * <p>
-	 * Property keys are handled in a case insensitive manner (as OSGi Framework
-	 * does).
-	 * <p>
-	 * Value of this property is of type <code>Map (String, Object)</code>, may
-	 * be <code>null</code> or empty.
-	 */
-	public static final String SERVICE_PROPERTIES = "osgi.remote.discovery.publication.service.properties"; //$NON-NLS-1$
-
-	/**
-	 * Optional property of the published service identifying its location. This
-	 * property is provided as part of the service property map referenced by
-	 * the {@link #SERVICE_PROPERTIES} ServiceRegistration property.
-	 * <p>
-	 * Value of this property is of type <code>java.net.URI</code>, may be
-	 * <code>null</code>.
-	 */
-	public static final String ENDPOINT_LOCATION = "osgi.remote.endpoint.location"; //$NON-NLS-1$
-
-	/**
-	 * Optional property of the published service uniquely identifying its
-	 * endpoint. This property is provided as part of the service property map
-	 * referenced by the {@link #SERVICE_PROPERTIES} ServiceRegistration
-	 * property.
-	 * <p>
-	 * Value of this property is of type <code>String</code>, may be
-	 * <code>null</code>.
-	 */
-	public static final String ENDPOINT_ID = "osgi.remote.endpoint.id"; //$NON-NLS-1$
-
-	/**
-	 * Separator constant for association of interface-specific values with the
-	 * particular interface name. See also {@link #SERVICE_INTERFACE_VERSION}
-	 * and {@link #ENDPOINT_INTERFACE_NAME} properties which describe such
-	 * interface-specific values.
-	 */
-	public static final String SEPARATOR = "|"; //$NON-NLS-1$
-
-	/**
-	 * Returns the <code>ServiceReference</code> this publication metadata is
-	 * associated with.
-	 * 
-	 * @return the <code>ServiceReference</code> being published. Is never
-	 *         <code>null</code>.
-	 */
-	ServiceReference getReference();
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath
index 6f3b481..d62b365 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.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/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>
+<?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.distribution/.settings/org.eclipse.jdt.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs
index 3ec7cae..4a864fa 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs
@@ -1,92 +1,93 @@
-#Wed Mar 03 16:26:11 PST 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.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-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.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.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
+#Sun Feb 20 22:34:10 PST 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.codeComplete.argumentPrefixes=

+org.eclipse.jdt.core.codeComplete.argumentSuffixes=

+org.eclipse.jdt.core.codeComplete.fieldPrefixes=

+org.eclipse.jdt.core.codeComplete.fieldSuffixes=

+org.eclipse.jdt.core.codeComplete.localPrefixes=

+org.eclipse.jdt.core.codeComplete.localSuffixes=

+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=

+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=

+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=

+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.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.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.distribution/META-INF/MANIFEST.MF b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/META-INF/MANIFEST.MF
index 32a1cc3..3a6cffc 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,26 +2,20 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.distribution
-Bundle-Version: 1.3.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,
  J2SE-1.4
-Import-Package: org.eclipse.ecf.core,
- org.eclipse.ecf.core.identity,
- org.eclipse.ecf.core.security,
- org.eclipse.ecf.core.util,
- org.eclipse.ecf.discovery.identity,
- org.eclipse.ecf.osgi.services.discovery;version="1.0.0",
- org.eclipse.ecf.remoteservice,
- org.eclipse.ecf.remoteservice.events,
- org.eclipse.osgi.framework.eventmgr,
+Import-Package: org.eclipse.ecf.core.util,
  org.osgi.framework;version="1.3.0",
- org.osgi.framework.hooks.service,
+ org.osgi.framework.hooks.service;version="1.0.0",
  org.osgi.service.log;version="1.3.0",
+ org.osgi.service.remoteserviceadmin;version="5.0.0",
  org.osgi.util.tracker
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
-Export-Package: org.eclipse.ecf.internal.osgi.services.distribution;version="1.1.0";x-internal:=true,
- org.eclipse.ecf.osgi.services.distribution;version="1.1.0";x-internal:=true
-Require-Bundle: org.eclipse.equinox.common
+Export-Package: org.eclipse.ecf.internal.osgi.services.distribution;version="2.0.0";x-internal:=true,
+ org.eclipse.ecf.osgi.services.distribution;version="2.0.0";x-internal:=true
+Require-Bundle: org.eclipse.equinox.common,
+ org.eclipse.ecf.osgi.services.remoteserviceadmin;bundle-version="1.0.0"
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/build.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/build.properties
index 3e9666e..89b639e 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/build.properties
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/build.properties
@@ -3,7 +3,7 @@
 bin.includes = META-INF/,\
                .,\
                about.html,\
-               plugin.properties,\
-               .options
+               plugin.properties
 src.includes = about.html
 jre.compilation.profile = J2SE-1.4
+javacErrors.. = -assertIdentifier,-enumIdentifier
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/Activator.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/Activator.java
index a3a3ec3..1a215f1 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/Activator.java
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/Activator.java
@@ -9,30 +9,12 @@
  ******************************************************************************/
 package org.eclipse.ecf.internal.osgi.services.distribution;
 
-import java.util.Arrays;
-import java.util.Properties;
-import org.eclipse.core.runtime.IAdapterManager;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.identity.IIDFactory;
 import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.PlatformHelper;
 import org.eclipse.ecf.core.util.SystemLogService;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.distribution.DefaultHostContainerFinder;
-import org.eclipse.ecf.osgi.services.distribution.DefaultProxyContainerFinder;
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.osgi.services.distribution.IHostContainerFinder;
-import org.eclipse.ecf.osgi.services.distribution.IHostDistributionListener;
-import org.eclipse.ecf.osgi.services.distribution.IProxyContainerFinder;
-import org.eclipse.ecf.osgi.services.distribution.IProxyDistributionListener;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.hooks.service.EventHook;
 import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -57,30 +39,10 @@
 	private static Activator plugin;
 	private BundleContext context;
 
-	private ServiceTracker containerManagerTracker;
-
-	private DistributionProviderImpl distributionProvider;
-
-	private ServiceRegistration eventHookRegistration;
-
-	private ServiceRegistration discoveredServiceTrackerRegistration;
-	private DiscoveredServiceTrackerImpl discoveredServiceTrackerImpl;
-
-	private ServiceRegistration proxyrsContainerFinderRegistration;
-	private ServiceRegistration hostrsContainerFinderRegistration;
-
 	private ServiceTracker logServiceTracker = null;
 	private LogService logService = null;
 
-	private ServiceTracker adapterManagerTracker;
-
-	private ServiceTracker proxyrsContainerFinder;
-	private ServiceTracker hostrsContainerFinder;
-
-	private ServiceTracker hostRegistrationListenerServiceTracker;
-	private ServiceTracker proxyDistributionListenerServiceTracker;
-
-	private ServiceTracker idFactoryTracker;
+	private BasicTopologyManager basicTopologyManager;
 
 	public static Activator getDefault() {
 		return plugin;
@@ -134,72 +96,9 @@
 	public void start(final BundleContext ctxt) throws Exception {
 		plugin = this;
 		this.context = ctxt;
-
-		// Create distribution provider impl
-		this.distributionProvider = new DistributionProviderImpl();
-		// Create discovered service tracker impl
-		discoveredServiceTrackerImpl = new DiscoveredServiceTrackerImpl(
-				this.distributionProvider);
-		// Register discovered service tracker
-		this.discoveredServiceTrackerRegistration = this.context
-				.registerService(DiscoveredServiceTracker.class.getName(),
-						discoveredServiceTrackerImpl, null);
-
-		// Set service ranking to Integer.MIN_VALUE so that other impls
-		// will be prefered over the default one
-		final Properties proxyContainerFinderProps = new Properties();
-		proxyContainerFinderProps.put(Constants.SERVICE_RANKING, new Integer(
-				Integer.MIN_VALUE));
-		// Register default proxy container finder
-		this.proxyrsContainerFinderRegistration = this.context.registerService(
-				IProxyContainerFinder.class.getName(),
-				new DefaultProxyContainerFinder(autoCreateProxyContainer),
-				proxyContainerFinderProps);
-
-		// register the event hook to get informed when new services appear
-		final EventHookImpl hook = new EventHookImpl(distributionProvider);
-		this.eventHookRegistration = this.context.registerService(
-				EventHook.class.getName(), hook, null);
-
-		// register the default host container finder
-		final Properties hostContainerFinderProps = new Properties();
-		hostContainerFinderProps.put(Constants.SERVICE_RANKING, new Integer(
-				Integer.MIN_VALUE));
-
-		// If defaultHostConfigType is empty string or "null" then set to null
-		String[] defaultHostConfigTypes = ("".equals(defaultHostConfigType) || "null".equals(defaultHostConfigType)) ? null : new String[] { defaultHostConfigType }; //$NON-NLS-1$ //$NON-NLS-2$
-
-		this.hostrsContainerFinderRegistration = this.context.registerService(
-				IHostContainerFinder.class.getName(),
-				new DefaultHostContainerFinder(autoCreateHostContainer,
-						defaultHostConfigTypes), hostContainerFinderProps);
-
-		// register all existing services which have the marker property
-		// http://bugs.eclipse.org/323208
-		new Thread(new Runnable() {
-			public void run() {
-				registerExistingServices(hook, ctxt);
-			}
-		}, "Distribution Provider startup worker").start(); //$NON-NLS-1$
-
-	}
-
-	private void registerExistingServices(final EventHookImpl hook,
-			final BundleContext bundleContext) {
-		try {
-			final ServiceReference[] refs = bundleContext.getServiceReferences(
-					(String) null,
-					"(" + IDistributionConstants.SERVICE_EXPORTED_INTERFACES //$NON-NLS-1$
-							+ "=*)"); //$NON-NLS-1$
-			if (refs != null) {
-				for (int i = 0; i < refs.length; i++) {
-					hook.handleRegisteredServiceEvent(refs[i], null);
-				}
-			}
-		} catch (InvalidSyntaxException e) {
-			// not possible
-		}
-
+		basicTopologyManager = new BasicTopologyManager(context);
+		// start topology manager first
+		basicTopologyManager.start();
 	}
 
 	/*
@@ -209,156 +108,19 @@
 	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext ctxt) throws Exception {
-		if (this.discoveredServiceTrackerRegistration != null) {
-			this.discoveredServiceTrackerRegistration.unregister();
-			this.discoveredServiceTrackerRegistration = null;
-		}
-		if (discoveredServiceTrackerImpl != null) {
-			this.discoveredServiceTrackerImpl.close();
-			this.discoveredServiceTrackerImpl = null;
-		}
-		if (this.proxyrsContainerFinderRegistration != null) {
-			this.proxyrsContainerFinderRegistration.unregister();
-			this.proxyrsContainerFinderRegistration = null;
-		}
-		if (this.eventHookRegistration != null) {
-			this.eventHookRegistration.unregister();
-			this.eventHookRegistration = null;
-		}
-		if (this.hostrsContainerFinderRegistration != null) {
-			this.hostrsContainerFinderRegistration.unregister();
-			this.hostrsContainerFinderRegistration = null;
-		}
-		if (containerManagerTracker != null) {
-			containerManagerTracker.close();
-			containerManagerTracker = null;
+		if (basicTopologyManager != null) {
+			basicTopologyManager.close();
+			basicTopologyManager = null;
 		}
 		if (logServiceTracker != null) {
 			logServiceTracker.close();
 			logServiceTracker = null;
 			logService = null;
 		}
-		if (adapterManagerTracker != null) {
-			adapterManagerTracker.close();
-			adapterManagerTracker = null;
-		}
-		if (distributionProvider != null) {
-			distributionProvider.dispose();
-			distributionProvider = null;
-		}
-		if (proxyrsContainerFinder != null) {
-			proxyrsContainerFinder.close();
-			proxyrsContainerFinder = null;
-		}
-		if (hostRegistrationListenerServiceTracker != null) {
-			hostRegistrationListenerServiceTracker.close();
-			hostRegistrationListenerServiceTracker = null;
-		}
-		if (proxyDistributionListenerServiceTracker != null) {
-			proxyDistributionListenerServiceTracker.close();
-			proxyDistributionListenerServiceTracker = null;
-		}
-		if (idFactoryTracker != null) {
-			idFactoryTracker.close();
-			idFactoryTracker = null;
-		}
 		synchronized (this) {
 			this.context = null;
 		}
 		plugin = null;
 	}
 
-	public synchronized IContainerManager getContainerManager() {
-		if (this.context == null)
-			return null;
-		if (containerManagerTracker == null) {
-			containerManagerTracker = new ServiceTracker(this.context,
-					IContainerManager.class.getName(), null);
-			containerManagerTracker.open();
-		}
-		return (IContainerManager) containerManagerTracker.getService();
-	}
-
-	public synchronized IProxyContainerFinder getProxyRemoteServiceContainerFinder() {
-		if (this.context == null)
-			return null;
-		if (proxyrsContainerFinder == null) {
-			proxyrsContainerFinder = new ServiceTracker(this.context,
-					IProxyContainerFinder.class.getName(), null);
-			proxyrsContainerFinder.open();
-		}
-		return (IProxyContainerFinder) proxyrsContainerFinder.getService();
-	}
-
-	public synchronized IHostContainerFinder getHostRemoteServiceContainerFinder() {
-		if (this.context == null)
-			return null;
-		if (hostrsContainerFinder == null) {
-			hostrsContainerFinder = new ServiceTracker(this.context,
-					IHostContainerFinder.class.getName(), null);
-			hostrsContainerFinder.open();
-		}
-		return (IHostContainerFinder) hostrsContainerFinder.getService();
-	}
-
-	public synchronized IHostDistributionListener[] getHostRegistrationListeners() {
-		if (this.context == null)
-			return null;
-		if (hostRegistrationListenerServiceTracker == null) {
-			hostRegistrationListenerServiceTracker = new ServiceTracker(
-					this.context, IHostDistributionListener.class.getName(),
-					null);
-			hostRegistrationListenerServiceTracker.open();
-		}
-		Object[] objs = hostRegistrationListenerServiceTracker.getServices();
-		if (objs == null)
-			return null;
-		return (IHostDistributionListener[]) Arrays.asList(objs).toArray(
-				new IHostDistributionListener[] {});
-	}
-
-	public synchronized IProxyDistributionListener[] getProxyDistributionListeners() {
-		if (this.context == null)
-			return null;
-		if (proxyDistributionListenerServiceTracker == null) {
-			proxyDistributionListenerServiceTracker = new ServiceTracker(
-					this.context, IProxyDistributionListener.class.getName(),
-					null);
-			proxyDistributionListenerServiceTracker.open();
-		}
-		Object[] objs = proxyDistributionListenerServiceTracker.getServices();
-		if (objs == null)
-			return null;
-		return (IProxyDistributionListener[]) Arrays.asList(objs).toArray(
-				new IProxyDistributionListener[] {});
-	}
-
-	public synchronized IAdapterManager getAdapterManager() {
-		if (this.context == null)
-			return null;
-		// First, try to get the adapter manager via
-		if (adapterManagerTracker == null) {
-			adapterManagerTracker = new ServiceTracker(this.context,
-					IAdapterManager.class.getName(), null);
-			adapterManagerTracker.open();
-		}
-		IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker
-				.getService();
-		// Then, if the service isn't there, try to get from Platform class via
-		// PlatformHelper class
-		if (adapterManager == null)
-			adapterManager = PlatformHelper.getPlatformAdapterManager();
-		return adapterManager;
-	}
-
-	public IIDFactory getIDFactory() {
-		if (this.context == null)
-			return null;
-		if (idFactoryTracker == null) {
-			idFactoryTracker = new ServiceTracker(this.context,
-					IIDFactory.class.getName(), null);
-			idFactoryTracker.open();
-		}
-		return (IIDFactory) idFactoryTracker.getService();
-	}
 }
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
new file mode 100644
index 0000000..741fc23
--- /dev/null
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
@@ -0,0 +1,158 @@
+package org.eclipse.ecf.internal.osgi.services.distribution;

+

+import java.util.Collection;

+import java.util.Dictionary;

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

+

+public class BasicTopologyManager extends AbstractTopologyManager implements

+		EventHook, EndpointListener {

+

+	private static final boolean allowLoopbackReference = new Boolean(

+			System.getProperty(

+					"org.eclipse.ecf.osgi.services.discovery.allowLoopbackReference", //$NON-NLS-1$

+					"false")).booleanValue(); //$NON-NLS-1$

+

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

+

+	public BasicTopologyManager(BundleContext context) {

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

+			return endpointListenerScope;

+		// Otherwise create it

+		// if allowLoopbackReference is true, then return a filter to match all

+		// endpoint description ids

+		StringBuffer elScope = new StringBuffer("("); //$NON-NLS-1$

+		if (allowLoopbackReference) {

+			elScope.append(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);

+			elScope.append("=*"); //$NON-NLS-1$

+		} else {

+			// filter so that local framework uuid is not the same as local

+			// value

+			elScope.append("!("); //$NON-NLS-1$

+			elScope.append(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID);

+			elScope.append("="); //$NON-NLS-1$

+			elScope.append(getFrameworkUUID());

+			elScope.append(")"); //$NON-NLS-1$

+		}

+		elScope.append(")"); //$NON-NLS-1$

+		String result = elScope.toString();

+		trace("getEndpointListenerScope", "endpointListenerScope=" + result); //$NON-NLS-1$ //$NON-NLS-2$

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

+		props.put(

+				org.osgi.service.remoteserviceadmin.EndpointListener.ENDPOINT_LISTENER_SCOPE,

+				getEndpointListenerScope());

+		endpointListenerRegistration = getContext().registerService(

+				EndpointListener.class.getName(), this, (Dictionary) props);

+

+		// Register as EventHook, so that we get notified when remote services

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

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,

+			String matchedFilter) {

+		handleEndpointAdded(endpoint, matchedFilter);

+	}

+

+	public void endpointRemoved(

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,

+			String matchedFilter) {

+		handleEndpointRemoved(endpoint, matchedFilter);

+	}

+

+	public void event(ServiceEvent event, Collection contexts) {

+		handleEvent(event, contexts);

+	}

+

+	public void close() {

+		if (eventHookRegistration != null) {

+			eventHookRegistration.unregister();

+			eventHookRegistration = null;

+		}

+		if (endpointListenerRegistration != null) {

+			endpointListenerRegistration.unregister();

+			endpointListenerRegistration = null;

+		}

+		super.close();

+	}

+

+}

diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DebugOptions.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DebugOptions.java
deleted file mode 100644
index 7699d07..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DebugOptions.java
+++ /dev/null
@@ -1,33 +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.internal.osgi.services.distribution;
-
-public interface DebugOptions {
-
-	public static final String DEBUG = Activator.PLUGIN_ID + "/debug"; //$NON-NLS-1$
-
-	public static final String EXCEPTIONS_CATCHING = DEBUG
-			+ "/exceptions/catching"; //$NON-NLS-1$
-
-	public static final String EXCEPTIONS_THROWING = DEBUG
-			+ "/exceptions/throwing"; //$NON-NLS-1$
-
-	public static final String METHODS_ENTERING = DEBUG + "/methods/entering"; //$NON-NLS-1$
-
-	public static final String METHODS_EXITING = DEBUG + "/methods/exiting"; //$NON-NLS-1$
-
-	public static final String EVENTHOOKDEBUG = DEBUG + "/eventhook"; //$NON-NLS-1$
-
-	public static final String DISCOVEREDSERVICETRACKER = DEBUG
-			+ "/discoveredservicetracker"; //$NON-NLS-1$
-
-	public static final String CONTAINERFINDER = DEBUG + "/containerfinder"; //$NON-NLS-1$
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DiscoveredServiceTrackerImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DiscoveredServiceTrackerImpl.java
deleted file mode 100644
index 03a78bc..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DiscoveredServiceTrackerImpl.java
+++ /dev/null
@@ -1,834 +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.internal.osgi.services.distribution;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.ecf.core.ContainerConnectException;
-import org.eclipse.ecf.core.ContainerTypeDescription;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceNotification;
-import org.eclipse.ecf.osgi.services.discovery.DiscoveredServiceTracker;
-import org.eclipse.ecf.osgi.services.discovery.IRemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
-import org.eclipse.ecf.osgi.services.discovery.ServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.discovery.ServicePublication;
-import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.osgi.services.distribution.IProxyContainerFinder;
-import org.eclipse.ecf.osgi.services.distribution.IProxyDistributionListener;
-import org.eclipse.ecf.remoteservice.Constants;
-import org.eclipse.ecf.remoteservice.IRemoteService;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
-import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;
-import org.eclipse.ecf.remoteservice.events.IRemoteServiceUnregisteredEvent;
-import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;
-import org.eclipse.osgi.framework.eventmgr.EventDispatcher;
-import org.eclipse.osgi.framework.eventmgr.EventManager;
-import org.eclipse.osgi.framework.eventmgr.ListenerQueue;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceRegistration;
-
-public class DiscoveredServiceTrackerImpl implements DiscoveredServiceTracker {
-
-	private DistributionProviderImpl distributionProvider;
-	private List serviceLocations = new ArrayList();
-	// <Map<containerID><RemoteServiceRegistration>
-	private Map discoveredRemoteServiceRegistrations = new HashMap();
-	private List ecfRemoteServiceProperties = Arrays.asList(new String[] {
-			Constants.SERVICE_ID, Constants.OBJECTCLASS,
-			org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
-			org.eclipse.ecf.remoteservice.Constants.SERVICE_CONTAINER_ID,
-			org.eclipse.ecf.remoteservice.Constants.SERVICE_RANKING,
-			IDistributionConstants.SERVICE_EXPORTED_CONFIGS,
-			RemoteServicePublication.ENDPOINT_ID,
-			RemoteServicePublication.ENDPOINT_INTERFACE_NAME,
-			RemoteServicePublication.ENDPOINT_LOCATION,
-			RemoteServicePublication.SERVICE_INTERFACE_NAME,
-			RemoteServicePublication.SERVICE_INTERFACE_VERSION,
-			RemoteServicePublication.SERVICE_PROPERTIES, "service.uri" }); //$NON-NLS-1$
-	// queue for incoming remote service available events
-	private ListenerQueue queue;
-	private EventManager eventManager;
-
-	// This class is to hold the discovered endpoint available events
-	class DiscoveredEndpointEvent {
-		private RemoteServiceEndpointDescription rsEndpointDescription;
-
-		public DiscoveredEndpointEvent(
-				RemoteServiceEndpointDescription rsEndpointDescription) {
-			this.rsEndpointDescription = rsEndpointDescription;
-		}
-
-		public RemoteServiceEndpointDescription getEndpointDescription() {
-			return rsEndpointDescription;
-		}
-	}
-
-	public DiscoveredServiceTrackerImpl(DistributionProviderImpl dp) {
-		this.distributionProvider = dp;
-		ThreadGroup eventGroup = new ThreadGroup("Remote Service Dispatcher"); //$NON-NLS-1$
-		eventGroup.setDaemon(true);
-		eventManager = new EventManager("Remote Service Dispatcher", eventGroup); //$NON-NLS-1$
-		queue = new ListenerQueue(eventManager);
-		CopyOnWriteIdentityMap listeners = new CopyOnWriteIdentityMap();
-		listeners.put(this, this);
-		queue.queueListeners(listeners.entrySet(), new EventDispatcher() {
-			public void dispatchEvent(Object eventListener,
-					Object listenerObject, int eventAction, Object eventObject) {
-				RemoteServiceEndpointDescription rsEndpointDescription = ((DiscoveredEndpointEvent) eventObject)
-						.getEndpointDescription();
-				try {
-					handleDiscoveredServiceAvailable(rsEndpointDescription);
-				} catch (Exception e) {
-					logError("handleDiscoveredServiceAvailble", //$NON-NLS-1$
-							"Unexpected exception with rsEndpointDescription=" //$NON-NLS-1$
-									+ rsEndpointDescription, e);
-					throw new RuntimeException(
-							"Unexpected exception with rsEndpointDescription=" //$NON-NLS-1$
-									+ rsEndpointDescription, e);
-				}
-			}
-		});
-	}
-
-	public void close() {
-		if (eventManager != null) {
-			eventManager.close();
-			eventManager = null;
-			queue = null;
-		}
-		serviceLocations.clear();
-		discoveredRemoteServiceRegistrations.clear();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.service.discovery.DiscoveredServiceTracker#serviceChanged(org
-	 * .osgi.service.discovery.DiscoveredServiceNotification)
-	 */
-	public void serviceChanged(final DiscoveredServiceNotification notification) {
-		if (notification == null)
-			return;
-		int notificationType = notification.getType();
-		switch (notificationType) {
-		case DiscoveredServiceNotification.AVAILABLE:
-			RemoteServiceEndpointDescription adesc = null;
-			try {
-				// If the service endpoint description is not ECF's then we
-				// don't process it
-				adesc = getECFDescription(notification
-						.getServiceEndpointDescription());
-			} catch (Exception e) {
-				logError("serviceChanged.AVAILABLE", //$NON-NLS-1$
-						"Error creating ECF endpoint description", e); //$NON-NLS-1$
-				return;
-			}
-			// If it's not for us then return
-			if (adesc == null)
-				return;
-
-			if (!isValidDescription(adesc)) {
-				trace("serviceChanged.AVAILABLE", //$NON-NLS-1$
-						"Duplicate or invalid description=" + adesc); //$NON-NLS-1$
-				return;
-			}
-			final RemoteServiceEndpointDescription rsEndpointDescription = adesc;
-
-			// put in queue and execute asynchronously
-			queue.dispatchEventAsynchronous(0, new DiscoveredEndpointEvent(
-					rsEndpointDescription));
-			break;
-		case DiscoveredServiceNotification.UNAVAILABLE:
-			try {
-				RemoteServiceEndpointDescription udesc = getECFDescription(notification
-						.getServiceEndpointDescription());
-				// If it's not for us then return
-				if (udesc == null)
-					return;
-
-				// Remove existing proxy service registrations that correspond
-				// to the
-				// given serviceID
-				synchronized (serviceLocations) {
-					ServiceRegistration[] proxyServiceRegistrations = removeProxyServiceRegistrations(udesc);
-					// Then unregister them
-					if (proxyServiceRegistrations != null) {
-						for (int i = 0; i < proxyServiceRegistrations.length; i++) {
-							trace("handleDiscoveredServiceUnavailable", //$NON-NLS-1$
-									"proxyServiceRegistrations=" //$NON-NLS-1$
-											+ proxyServiceRegistrations[i]
-											+ ",serviceEndpointDesc=" + udesc); //$NON-NLS-1$
-							unregisterProxyServiceRegistration(udesc,
-									proxyServiceRegistrations[i]);
-						}
-						removeDiscoveredServiceID(udesc);
-					}
-				}
-			} catch (Exception e) {
-				logError("serviceChanged", "UNAVAILABLE", e); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			break;
-		case DiscoveredServiceNotification.MODIFIED:
-			// Do nothing for now
-			break;
-		case DiscoveredServiceNotification.MODIFIED_ENDMATCH:
-			// Do nothing for now
-			break;
-		default:
-			logWarning("serviceChanged", "DiscoveredServiceNotification type=" //$NON-NLS-1$ //$NON-NLS-2$
-					+ notificationType + " not found.  Ignoring"); //$NON-NLS-1$
-			break;
-		}
-	}
-
-	private void handleDiscoveredServiceAvailable(
-			RemoteServiceEndpointDescription endpointDescription) {
-		// Find IRemoteServiceContainers for the given
-		// RemoteServiceEndpointDescription via registered services
-		IRemoteServiceContainer[] rsContainers = findProxyContainers(endpointDescription);
-		// If none found, we have nothing to do
-		if (rsContainers == null || rsContainers.length == 0) {
-			logWarning("handleDiscoveredServiceAvailable", //$NON-NLS-1$
-					"No local RemoteServiceContainers found for endpoint description=" //$NON-NLS-1$
-							+ endpointDescription);
-			return;
-		}
-		// Get endpoint ID
-		ID endpointID = endpointDescription.getEndpointAsID();
-		// Get remote service filter from the service endpoint description
-		// if it exists.
-		String remoteServiceFilter = getFullRemoteServicesFilter(
-				endpointDescription.getRemoteServicesFilter(),
-				endpointDescription.getRemoteServiceId());
-		// Get provided interfaces as collection
-		Collection providedInterfaces = endpointDescription
-				.getProvidedInterfaces();
-		// Now for all remote service containers
-		for (int i = 0; i < rsContainers.length; i++) {
-			for (Iterator j = providedInterfaces.iterator(); j.hasNext();) {
-				String providedInterface = (String) j.next();
-				IRemoteServiceReference[] remoteReferences = null;
-				// fire IProxyDistributionListeners pre get references
-				firePreGetRemoteServiceReferences(endpointDescription,
-						rsContainers[i]);
-				try {
-					// Get remote remote references for each container
-					remoteReferences = rsContainers[i].getContainerAdapter()
-							.getRemoteServiceReferences(endpointID,
-									new ID[] { endpointID }, providedInterface,
-									remoteServiceFilter);
-				} catch (ContainerConnectException e) {
-					logError("handleDiscoveredServiceAvailable", "rsca=" //$NON-NLS-1$ //$NON-NLS-2$
-							+ rsContainers[i] + ",endpointId=" + endpointID //$NON-NLS-1$
-							+ ",intf=" + providedInterface //$NON-NLS-1$
-							+ ". Connect error in getRemoteServiceReferences", //$NON-NLS-1$
-							e);
-					continue;
-				} catch (InvalidSyntaxException e) {
-					logError(
-							"handleDiscoveredServiceAvailable", //$NON-NLS-1$
-							"rsca=" //$NON-NLS-1$
-									+ rsContainers[i]
-									+ ",endpointId=" //$NON-NLS-1$
-									+ endpointID
-									+ ",intf=" //$NON-NLS-1$
-									+ providedInterface
-									+ " Filter syntax error in getRemoteServiceReferences", //$NON-NLS-1$
-							e);
-					continue;
-				}
-				if (remoteReferences == null || remoteReferences.length == 0) {
-					logError("handleDiscoveredServiceAvailable", //$NON-NLS-1$
-							"getRemoteServiceReferences result is empty. " //$NON-NLS-1$
-									+ "containerHelper=" //$NON-NLS-1$
-									+ rsContainers[i]
-									+ "remoteReferences=" //$NON-NLS-1$
-									+ ((remoteReferences == null) ? "null" //$NON-NLS-1$
-											: Arrays.asList(remoteReferences)
-													.toString()), null);
-					continue;
-				} else {
-					registerRemoteServiceReferences(endpointDescription,
-							rsContainers[i], remoteReferences);
-				}
-			}
-		}
-	}
-
-	private String getFullRemoteServicesFilter(String remoteServicesFilter,
-			long remoteServiceId) {
-		if (remoteServiceId < 0)
-			return remoteServicesFilter;
-		StringBuffer filter = new StringBuffer("(&(") //$NON-NLS-1$
-				.append(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID)
-				.append("=").append(remoteServiceId).append(")"); //$NON-NLS-1$ //$NON-NLS-2$
-		if (remoteServicesFilter != null)
-			filter.append(remoteServicesFilter);
-		filter.append(")"); //$NON-NLS-1$
-		return filter.toString();
-	}
-
-	private void firePreGetRemoteServiceReferences(
-			final IRemoteServiceEndpointDescription endpointDescription,
-			final IRemoteServiceContainer remoteServiceContainer) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IProxyDistributionListener[] listeners = activator
-					.getProxyDistributionListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IProxyDistributionListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"firePreGetRemoteServiceReferences", //$NON-NLS-1$
-									"Exception calling proxy distribution listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							l.retrievingRemoteServiceReferences(
-									endpointDescription, remoteServiceContainer);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private void firePreRegister(
-			final IRemoteServiceEndpointDescription endpointDescription,
-			final IRemoteServiceContainer remoteServiceContainer,
-			final IRemoteServiceReference remoteServiceReference) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IProxyDistributionListener[] listeners = activator
-					.getProxyDistributionListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IProxyDistributionListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"firePreRegister", //$NON-NLS-1$
-									"Exception calling proxy distribution listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							l.registering(endpointDescription,
-									remoteServiceContainer,
-									remoteServiceReference);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private void firePostRegister(
-			final IRemoteServiceEndpointDescription endpointDescription,
-			final IRemoteServiceContainer remoteServiceContainer,
-			final IRemoteServiceReference remoteServiceReference,
-			final ServiceRegistration serviceRegistration) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IProxyDistributionListener[] listeners = activator
-					.getProxyDistributionListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IProxyDistributionListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"firePreRegister", //$NON-NLS-1$
-									"Exception calling proxy distribution listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							l.registered(endpointDescription,
-									remoteServiceContainer,
-									remoteServiceReference, serviceRegistration);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private void fireUnregister(
-			final IRemoteServiceEndpointDescription endpointDescription,
-			final ServiceRegistration registration) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IProxyDistributionListener[] listeners = activator
-					.getProxyDistributionListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IProxyDistributionListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"fireUnregister", //$NON-NLS-1$
-									"Exception calling proxy distribution listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							l.unregistered(endpointDescription, registration);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private RemoteServiceEndpointDescription getECFDescription(
-			ServiceEndpointDescription aServiceEndpointDesc) {
-		RemoteServiceEndpointDescription ecfSED;
-		if (!(aServiceEndpointDesc instanceof RemoteServiceEndpointDescription)) {
-			ecfSED = (RemoteServiceEndpointDescription) Activator
-					.getDefault()
-					.getAdapterManager()
-					.loadAdapter(aServiceEndpointDesc,
-							RemoteServiceEndpointDescription.class.getName());
-		} else
-			ecfSED = (RemoteServiceEndpointDescription) aServiceEndpointDesc;
-		return ecfSED;
-	}
-
-	private boolean findProxyServiceRegistration(
-			RemoteServiceEndpointDescription sed) {
-		synchronized (discoveredRemoteServiceRegistrations) {
-			for (Iterator i = discoveredRemoteServiceRegistrations.keySet()
-					.iterator(); i.hasNext();) {
-				ID containerID = (ID) i.next();
-				RemoteServiceRegistration reg = (RemoteServiceRegistration) discoveredRemoteServiceRegistrations
-						.get(containerID);
-				if (reg.hasRSED(sed))
-					return true;
-			}
-			return false;
-		}
-	}
-
-	private ServiceRegistration[] removeProxyServiceRegistrations(
-			RemoteServiceEndpointDescription sed) {
-		List results = new ArrayList();
-		synchronized (discoveredRemoteServiceRegistrations) {
-			final List containerIDsToRemove = new ArrayList();
-			for (Iterator i = discoveredRemoteServiceRegistrations.keySet()
-					.iterator(); i.hasNext();) {
-				ID containerID = (ID) i.next();
-				RemoteServiceRegistration reg = (RemoteServiceRegistration) discoveredRemoteServiceRegistrations
-						.get(containerID);
-				if (reg != null) {
-					ServiceRegistration sr = reg.removeServiceRegistration(sed);
-					if (sr != null)
-						results.add(sr);
-					if (reg.isEmpty()) {
-						reg.dispose();
-						containerIDsToRemove.add(containerID);
-					}
-				}
-			}
-			// Outside of the iterator, now remove any containerID found to
-			// match
-			for (Iterator i = containerIDsToRemove.iterator(); i.hasNext();) {
-				discoveredRemoteServiceRegistrations.remove(i.next());
-			}
-			return (ServiceRegistration[]) results
-					.toArray(new ServiceRegistration[] {});
-		}
-	}
-
-	class RemoteServiceReferenceUnregisteredListener implements
-			IRemoteServiceListener {
-		public void handleServiceEvent(IRemoteServiceEvent event) {
-			if (event instanceof IRemoteServiceUnregisteredEvent) {
-				ID containerID = event.getContainerID();
-				ID localContainerID = event.getLocalContainerID();
-				IRemoteServiceReference reference = event.getReference();
-				trace("handleRemoteServiceUnregisteredEvent", //$NON-NLS-1$
-						"localContainerID=" + localContainerID //$NON-NLS-1$
-								+ ",containerID=" + containerID //$NON-NLS-1$
-								+ ",remoteReference=" + reference); //$NON-NLS-1$
-				// Synchronize on serviceLocations so no other changes happen
-				// while
-				// this is going on...as it can be invoked by an arbitrary
-				RemoteServiceRegistration.RSEDAndSRAssoc[] assocs = null;
-				synchronized (serviceLocations) {
-					synchronized (discoveredRemoteServiceRegistrations) {
-						List containerIDsToRemove = new ArrayList();
-						RemoteServiceRegistration rsRegs = (RemoteServiceRegistration) discoveredRemoteServiceRegistrations
-								.get(localContainerID);
-						// If we've got any remote service registrations for the
-						// containerID
-						if (rsRegs != null) {
-							assocs = rsRegs
-									.removeServiceRegistration(reference);
-							// If this removes *all* references for this
-							// registration
-							if (rsRegs.isEmpty()) {
-								rsRegs.dispose();
-								containerIDsToRemove.add(localContainerID);
-							}
-							if (assocs != null) {
-								for (int i = 0; i < assocs.length; i++) {
-									removeDiscoveredServiceID(assocs[i]
-											.getRSED());
-								}
-							}
-						}
-						for (Iterator i = containerIDsToRemove.iterator(); i
-								.hasNext();) {
-							discoveredRemoteServiceRegistrations.remove(i
-									.next());
-						}
-					}
-
-				}
-				// Call this outside of synchronized block
-				if (assocs != null) {
-					for (int i = 0; i < assocs.length; i++) {
-						ServiceRegistration sr = assocs[i].getSR();
-						trace("handleRemoteServiceUnregisteredEvent.unregister", //$NON-NLS-1$
-						"localContainerID=" //$NON-NLS-1$
-								+ localContainerID + ",containerID=" //$NON-NLS-1$
-								+ containerID + ",remoteReference=" //$NON-NLS-1$
-								+ reference + ",proxyServiceRegistrations=" //$NON-NLS-1$
-								+ sr);
-						unregisterProxyServiceRegistration(assocs[i].getRSED(),
-								sr);
-					}
-				}
-			}
-		}
-	}
-
-	private void unregisterProxyServiceRegistration(
-			IRemoteServiceEndpointDescription endpointDescription,
-			ServiceRegistration reg) {
-		try {
-			distributionProvider.removeRemoteService(reg.getReference());
-			reg.unregister();
-		} catch (IllegalStateException e) {
-			// Ignore
-			logWarning("unregisterProxyServiceRegistration", //$NON-NLS-1$
-					"Exception unregistering serviceRegistration=" + reg); //$NON-NLS-1$
-		} catch (Exception e) {
-			logError("unregisterProxyServiceRegistration", //$NON-NLS-1$
-					"Exception unregistering serviceRegistration=" + reg, e); //$NON-NLS-1$
-		}
-		fireUnregister(endpointDescription, reg);
-	}
-
-	private void registerRemoteServiceReferences(
-			RemoteServiceEndpointDescription sed,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceReference[] remoteReferences) {
-
-		synchronized (serviceLocations) {
-			// check to make sure that this serviceLocation
-			// is still present
-			if (!containsDiscoveredServiceID(sed)) {
-				logError("registerRemoteServiceReferences", "serviceLocation=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ sed + " no longer present", null); //$NON-NLS-1$
-				return;
-			}
-			// check to make sure that the proxy service registry is not
-			// already there
-			if (findProxyServiceRegistration(sed)) {
-				logError("registerRemoteServiceReferences", //$NON-NLS-1$
-						"serviceEndpointDesc=" + sed //$NON-NLS-1$
-								+ " previously registered locally...ignoring", //$NON-NLS-1$
-						null);
-				return;
-			}
-			// Then get/setup remote service
-			for (int i = 0; i < remoteReferences.length; i++) {
-				// Get IRemoteService, used to create the proxy
-				IRemoteService remoteService = remoteServiceContainer
-						.getContainerAdapter().getRemoteService(
-								remoteReferences[i]);
-				// If no remote service then give up
-				if (remoteService == null) {
-					logError("registerRemoteServiceReferences", //$NON-NLS-1$
-							"Remote service is null for remote reference " //$NON-NLS-1$
-									+ remoteReferences[i], null);
-					continue;
-				}
-
-				// Get classes to register for remote service
-				String[] clazzes = (String[]) remoteReferences[i]
-						.getProperty(Constants.OBJECTCLASS);
-				if (clazzes == null || clazzes.length == 0) {
-					logError("registerRemoteServiceReferences", //$NON-NLS-1$
-							"No classes specified for remote service reference " //$NON-NLS-1$
-									+ remoteReferences[i], null);
-					continue;
-				}
-
-				// Get service properties for the proxy registration
-				Dictionary properties = getPropertiesForRemoteService(sed,
-						remoteServiceContainer, remoteReferences[i],
-						remoteService);
-
-				// Create proxy right here
-				Object proxy = null;
-				try {
-					proxy = remoteService.getProxy();
-					if (proxy == null) {
-						logError("registerRemoteServiceReferences", //$NON-NLS-1$
-								"Remote service proxy is null", null); //$NON-NLS-1$
-						continue;
-					}
-					// Fire pre register notification fir
-					// IProxyDistributionListener
-					firePreRegister(sed, remoteServiceContainer,
-							remoteReferences[i]);
-					trace("registerRemoteServiceReferences", "rsca=" //$NON-NLS-1$ //$NON-NLS-2$
-							+ remoteServiceContainer + ",remoteReference=" //$NON-NLS-1$
-							+ remoteReferences[i]);
-					// Actually register proxy here
-					ServiceRegistration registration = Activator.getDefault()
-							.getContext()
-							.registerService(clazzes, proxy, properties);
-
-					RemoteServiceRegistration reg = getProxyServiceRegistration(remoteServiceContainer);
-					reg.addServiceRegistration(remoteReferences[i], sed,
-							registration);
-					// And add to distribution provider
-					distributionProvider.addRemoteService(registration
-							.getReference());
-					trace("addLocalServiceRegistration.COMPLETE", //$NON-NLS-1$
-							"containerHelper=" + remoteServiceContainer //$NON-NLS-1$
-									+ ",remoteServiceReference=" //$NON-NLS-1$
-									+ remoteReferences[i]
-									+ ",localServiceRegistration=" //$NON-NLS-1$
-									+ registration);
-					// Fire IProxyDistributionListener to notify we're done
-					firePostRegister(sed, remoteServiceContainer,
-							remoteReferences[i], registration);
-				} catch (Exception e) {
-					logError("registerRemoteServiceReferences", //$NON-NLS-1$
-							"Exception creating or registering remote reference " //$NON-NLS-1$
-									+ remoteReferences[i], e);
-					continue;
-				}
-			}
-		}
-	}
-
-	private RemoteServiceRegistration getProxyServiceRegistration(
-			IRemoteServiceContainer rsContainer) {
-		ID localContainerID = rsContainer.getContainer().getID();
-		synchronized (discoveredRemoteServiceRegistrations) {
-			RemoteServiceRegistration reg = (RemoteServiceRegistration) discoveredRemoteServiceRegistrations
-					.get(localContainerID);
-			// If there is none, then create one
-			if (reg == null) {
-				reg = new RemoteServiceRegistration(rsContainer,
-						new RemoteServiceReferenceUnregisteredListener());
-				discoveredRemoteServiceRegistrations.put(localContainerID, reg);
-			}
-			return reg;
-		}
-	}
-
-	private boolean isRemoteServiceProperty(String propertyKey) {
-		return ecfRemoteServiceProperties.contains(propertyKey);
-	}
-
-	private Dictionary getPropertiesForRemoteService(
-			RemoteServiceEndpointDescription rsEndpointDescription,
-			IRemoteServiceContainer rsContainer,
-			IRemoteServiceReference rsReference, IRemoteService remoteService) {
-
-		Properties props = new Properties();
-		// Add the required 'service.imported' property, which for ECF rs
-		// providers
-		// exposes the IRemoteService
-		props.put(IDistributionConstants.SERVICE_IMPORTED, remoteService);
-
-		// Add service intents...if not null (optional property)
-		String[] serviceIntents = rsEndpointDescription.getServiceIntents();
-		if (serviceIntents != null)
-			props.put(IDistributionConstants.SERVICE_INTENTS, serviceIntents);
-
-		// Then add all other service properties
-		String[] propKeys = rsReference.getPropertyKeys();
-		for (int i = 0; i < propKeys.length; i++) {
-			if (!isRemoteServiceProperty(propKeys[i])) {
-				props.put(propKeys[i], rsReference.getProperty(propKeys[i]));
-			}
-		}
-
-		// make the service identifiable by consumers
-		// especially org.eclipse.ecf.remoteservice.ui.dosgi
-		ID endpointId = (ID) rsReference
-				.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_CONTAINER_ID);
-		if (endpointId == null) {
-			endpointId = rsEndpointDescription.getEndpointAsID();
-		}
-		final Long serviceId = (Long) rsReference
-				.getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
-		props.put(ServicePublication.ENDPOINT_ID, endpointId.toExternalForm()
-				+ "#" + serviceId); //$NON-NLS-1$
-
-		// finally add service.imported.configs
-		addImportedConfigsProperties(
-				getContainerTypeDescription(rsContainer.getContainer()),
-				rsEndpointDescription.getSupportedConfigs(), props);
-
-		return props;
-	}
-
-	private void addImportedConfigsProperties(
-			ContainerTypeDescription containerTypeDescription,
-			String[] remoteExportedConfigs, Dictionary exportedProperties) {
-		if (containerTypeDescription == null)
-			return;
-		if (remoteExportedConfigs != null) {
-			String[] importedConfigs = containerTypeDescription
-					.getImportedConfigs(remoteExportedConfigs);
-			if (importedConfigs != null) {
-				// Add the service.imported.configs property
-				exportedProperties.put(
-						IDistributionConstants.SERVICE_IMPORTED_CONFIGS,
-						importedConfigs);
-				// First get any/all properties to add
-				Dictionary localConfigProperties = containerTypeDescription
-						.getPropertiesForImportedConfigs(importedConfigs,
-								exportedProperties);
-				if (localConfigProperties != null) {
-					for (Enumeration e = localConfigProperties.keys(); e
-							.hasMoreElements();) {
-						String key = (String) e.nextElement();
-						exportedProperties.put(key,
-								localConfigProperties.get(key));
-					}
-				}
-			}
-		}
-	}
-
-	protected ContainerTypeDescription getContainerTypeDescription(
-			IContainer container) {
-		IContainerManager containerManager = getContainerManager();
-		if (containerManager == null)
-			return null;
-		return containerManager.getContainerTypeDescription(container.getID());
-	}
-
-	protected IContainerManager getContainerManager() {
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		return activator.getContainerManager();
-	}
-
-	private boolean addDiscoveredServiceID(RemoteServiceEndpointDescription desc) {
-		synchronized (serviceLocations) {
-			return serviceLocations.add(desc);
-		}
-	}
-
-	private boolean removeDiscoveredServiceID(
-			RemoteServiceEndpointDescription desc) {
-		synchronized (serviceLocations) {
-			return serviceLocations.remove(desc);
-		}
-	}
-
-	private boolean containsDiscoveredServiceID(
-			RemoteServiceEndpointDescription desc) {
-		synchronized (serviceLocations) {
-			return serviceLocations.contains(desc);
-		}
-	}
-
-	protected void trace(String methodName, String message) {
-		LogUtility.trace(methodName, DebugOptions.DISCOVEREDSERVICETRACKER,
-				this.getClass(), message);
-	}
-
-	protected void traceException(String methodName, String message, Throwable t) {
-		LogUtility.traceException(methodName, DebugOptions.EXCEPTIONS_CATCHING,
-				this.getClass(), message, t);
-	}
-
-	protected void logError(String methodName, String message, Throwable t) {
-		LogUtility.logError(methodName, DebugOptions.DISCOVEREDSERVICETRACKER,
-				this.getClass(), message, t);
-	}
-
-	protected void logError(String methodName, String message) {
-		LogUtility.logError(methodName, DebugOptions.DISCOVEREDSERVICETRACKER,
-				this.getClass(), message);
-	}
-
-	protected void logWarning(String methodName, String message) {
-		LogUtility
-				.logWarning(methodName, DebugOptions.DISCOVEREDSERVICETRACKER,
-						this.getClass(), message);
-	}
-
-	private boolean isValidDescription(
-			RemoteServiceEndpointDescription rsEndpointDescription) {
-		if (rsEndpointDescription == null)
-			return false;
-		synchronized (serviceLocations) {
-			if (containsDiscoveredServiceID(rsEndpointDescription)) {
-				return false;
-			} else {
-				addDiscoveredServiceID(rsEndpointDescription);
-				return true;
-			}
-		}
-	}
-
-	private IRemoteServiceContainer[] findProxyContainers(
-			final RemoteServiceEndpointDescription rsEndpointDescription) {
-		// Get activator
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		// Get finder (as service)
-		IProxyContainerFinder finder = activator
-				.getProxyRemoteServiceContainerFinder();
-		if (finder == null) {
-			logError("findRemoteServiceContainersViaService", //$NON-NLS-1$
-					"No container finders available"); //$NON-NLS-1$
-			return null;
-		}
-		return finder.findProxyContainers(rsEndpointDescription.getServiceID(),
-				rsEndpointDescription);
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DistributionProviderImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DistributionProviderImpl.java
deleted file mode 100644
index c125453..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/DistributionProviderImpl.java
+++ /dev/null
@@ -1,107 +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.internal.osgi.services.distribution;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.core.ContainerTypeDescription;
-import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.osgi.framework.ServiceReference;
-
-public class DistributionProviderImpl {
-
-	public static Object VENDOR_NAME = "Eclipse Foundation"; //$NON-NLS-1$
-	public static Object PRODUCT_NAME = "Eclipse Communication Framework (ECF)"; //$NON-NLS-1$
-	public static Object PRODUCT_VERSION = "3.3"; //$NON-NLS-1$
-
-	List exposedServices = Collections.synchronizedList(new ArrayList());
-	List remoteServices = Collections.synchronizedList(new ArrayList());
-
-	boolean addExposedService(ServiceReference sr) {
-		if (sr == null)
-			return false;
-		return exposedServices.add(sr);
-	}
-
-	boolean addRemoteService(ServiceReference sr) {
-		if (sr == null)
-			return false;
-		return remoteServices.add(sr);
-	}
-
-	boolean removeExposedService(ServiceReference sr) {
-		if (sr == null)
-			return false;
-		return exposedServices.remove(sr);
-	}
-
-	boolean removeRemoteService(ServiceReference sr) {
-		if (sr == null)
-			return false;
-		return remoteServices.remove(sr);
-	}
-
-	public Collection getExposedServices() {
-		return exposedServices;
-	}
-
-	public Map getExposedProperties(ServiceReference sr) {
-		Map result = new HashMap();
-		if (sr == null)
-			return result;
-		// XXX todo... this is still left to implement
-		return result;
-	}
-
-	public void dispose() {
-		exposedServices.clear();
-		remoteServices.clear();
-	}
-
-	public Collection getRemoteServices() {
-		return remoteServices;
-	}
-
-	public Collection getSupportedIntents() {
-		List result = new ArrayList();
-		IContainerFactory containerFactory = Activator.getDefault()
-				.getContainerManager().getContainerFactory();
-		List containerDescriptions = containerFactory.getDescriptions();
-		if (containerDescriptions != null) {
-			for (Iterator i = containerDescriptions.iterator(); i.hasNext();) {
-				ContainerTypeDescription ctd = (ContainerTypeDescription) i
-						.next();
-				String[] adapterTypes = ctd.getSupportedAdapterTypes();
-				if (adapterTypes != null) {
-					List at = Arrays.asList(adapterTypes);
-					if (at.contains(IRemoteServiceContainerAdapter.class
-							.getName())) {
-						String[] intents = ctd.getSupportedIntents();
-						if (intents != null) {
-							for (int j = 0; j < intents.length; j++) {
-								if (!result.contains(intents[j]))
-									result.add(intents[j]);
-							}
-						}
-					}
-				}
-			}
-		}
-		return result;
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/EventHookImpl.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/EventHookImpl.java
deleted file mode 100644
index 7729b39..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/EventHookImpl.java
+++ /dev/null
@@ -1,557 +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.internal.osgi.services.distribution;
-
-import org.eclipse.ecf.remoteservice.IOSGiRemoteServiceContainerAdapter;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ecf.core.ContainerTypeDescription;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.core.util.Trace;
-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.distribution.IHostContainerFinder;
-import org.eclipse.ecf.osgi.services.distribution.IHostDistributionListener;
-import org.eclipse.ecf.remoteservice.Constants;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.hooks.service.EventHook;
-
-public class EventHookImpl implements EventHook {
-
-	private final DistributionProviderImpl distributionProvider;
-	private final Map srvRefToRemoteSrvRegistration = new HashMap();
-	private final Map srvRefToServicePublicationRegistration = new HashMap();
-
-	public EventHookImpl(DistributionProviderImpl distributionProvider) {
-		this.distributionProvider = distributionProvider;
-	}
-
-	public void event(ServiceEvent event, Collection contexts) {
-		switch (event.getType()) {
-		case ServiceEvent.MODIFIED:
-			handleModifiedServiceEvent(event.getServiceReference(), contexts);
-			break;
-		case ServiceEvent.MODIFIED_ENDMATCH:
-			break;
-		case ServiceEvent.REGISTERED:
-			handleRegisteredServiceEvent(event.getServiceReference(), contexts);
-			break;
-		case ServiceEvent.UNREGISTERING:
-			handleUnregisteringServiceEvent(event.getServiceReference(),
-					contexts);
-			break;
-		default:
-			break;
-		}
-	}
-
-	private String[] getExportedConfigs(ServiceReference serviceReference) {
-		return getStringArrayFromPropertyValue(serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONFIGS));
-	}
-
-	void handleRegisteredServiceEvent(ServiceReference serviceReference,
-			Collection contexts) {
-
-		// Using OSGI 4.2 Chap 13 Remote Services spec, get the specified remote
-		// interfaces for the given service reference
-		String[] exportedInterfaces = getExportedInterfaces(serviceReference);
-		// If no remote interfaces set, then we don't do anything with it
-		if (exportedInterfaces == null)
-			return;
-
-		// Get optional service property for exported configs
-		String[] exportedConfigs = getExportedConfigs(serviceReference);
-
-		// Get all intents (service.intents, service.exported.intents,
-		// service.exported.intents.extra)
-		String[] serviceIntents = getServiceIntents(serviceReference);
-
-		// Now call out to find host remote service containers via
-		// IHostContainerFinder service (service to allow extensibility
-		// in matching to available ECF containers/providers
-		IRemoteServiceContainer[] rsContainers = findHostContainers(
-				serviceReference, exportedInterfaces, exportedConfigs,
-				serviceIntents);
-
-		if (rsContainers == null || rsContainers.length == 0) {
-			LogUtility.logWarning(
-					"handleRegisteredServiceEvent", //$NON-NLS-1$
-					DebugOptions.EVENTHOOKDEBUG, this.getClass(),
-					"No remote service containers found for serviceReference=" //$NON-NLS-1$
-							+ serviceReference + ". Service NOT EXPORTED"); //$NON-NLS-1$
-			return;
-		}
-		Dictionary remoteServiceProperties = getPropertiesForRemoteService(serviceReference);
-		Object remoteService = getService(serviceReference);
-		// Now actually register remote service with remote service container
-		// adapters found above.
-		for (int i = 0; i < rsContainers.length; i++) {
-			// Step 1 - Register with remote service container adapter for given
-			// all found containers/providers
-			IRemoteServiceContainerAdapter containerAdapter = rsContainers[i]
-					.getContainerAdapter();
-			IRemoteServiceRegistration remoteRegistration;
-			if (containerAdapter instanceof IOSGiRemoteServiceContainerAdapter) {
-				IOSGiRemoteServiceContainerAdapter osgiContainerAdapter = (IOSGiRemoteServiceContainerAdapter) containerAdapter;
-				remoteRegistration = osgiContainerAdapter
-						.registerRemoteService(exportedInterfaces,
-								serviceReference, remoteServiceProperties);
-			} else {
-				remoteRegistration = containerAdapter.registerRemoteService(
-						exportedInterfaces, remoteService,
-						remoteServiceProperties);
-			}
-			trace("registerRemoteService", "containerID=" //$NON-NLS-1$ //$NON-NLS-2$
-					+ rsContainers[i].getContainer().getID()
-					+ " serviceReference=" + serviceReference //$NON-NLS-1$
-					+ " remoteRegistration=" + remoteRegistration); //$NON-NLS-1$
-			// Step 2 - Save registration
-			fireRemoteServiceRegistered(serviceReference, remoteRegistration);
-			// Step 3 - Publish via discovery API
-			publishRemoteService(rsContainers[i], serviceReference,
-					exportedInterfaces, remoteRegistration, serviceIntents,
-					exportedConfigs, remoteServiceProperties);
-			// Step 4 - Fire registered event to listeners
-			fireHostRegisteredUnregistered(serviceReference, rsContainers[i],
-					remoteRegistration, true);
-		}
-
-	}
-
-	private String[] getServiceIntents(ServiceReference serviceReference) {
-		List results = new ArrayList();
-		String[] intents = getStringArrayFromPropertyValue(serviceReference
-				.getProperty(IDistributionConstants.SERVICE_INTENTS));
-		if (intents != null)
-			results.addAll(Arrays.asList(intents));
-		String[] exportedIntents = getStringArrayFromPropertyValue(serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_INTENTS));
-		if (exportedIntents != null)
-			results.addAll(Arrays.asList(exportedIntents));
-		String[] extraIntents = getStringArrayFromPropertyValue(serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_INTENTS_EXTRA));
-		if (extraIntents != null)
-			results.addAll(Arrays.asList(extraIntents));
-		if (results.size() == 0)
-			return null;
-		return (String[]) results.toArray(new String[] {});
-	}
-
-	private IRemoteServiceContainer[] findHostContainers(
-			ServiceReference serviceReference, String[] exportedInterfaces,
-			String[] exportedConfigs, String[] serviceIntents) {
-		// Get activator
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		// Get finder (as service)
-		IHostContainerFinder finder = activator
-				.getHostRemoteServiceContainerFinder();
-		// If none found, then we have nothing that we can do except log the
-		// error and return
-		if (finder == null) {
-			logError("findRemoteServiceContainers", //$NON-NLS-1$
-					"No container finders available"); //$NON-NLS-1$
-			return null;
-		}
-		// Call out to find host containers as candidates
-		return finder.findHostContainers(serviceReference, exportedInterfaces,
-				exportedConfigs, serviceIntents);
-	}
-
-	private Dictionary getServicePublicationProperties(
-			IRemoteServiceContainer rsContainer, ServiceReference ref,
-			String[] remoteInterfaces,
-			IRemoteServiceRegistration remoteRegistration,
-			String[] serviceIntents, String[] supportedConfigs,
-			Dictionary remoteProperties) {
-
-		final Dictionary result = new Properties();
-		IContainer container = rsContainer.getContainer();
-
-		// Set mandatory ServicePublication.SERVICE_INTERFACE_NAME
-		result.put(RemoteServicePublication.SERVICE_INTERFACE_NAME,
-				getAsCollection(remoteInterfaces));
-
-		// If supportedConfigs is null, then get supported configs from
-		// description and it must also not be null
-		if (supportedConfigs == null)
-			supportedConfigs = getSupportedConfigs(rsContainer);
-		result.put(RemoteServicePublication.ENDPOINT_SUPPORTED_CONFIGS,
-				getAsCollection(supportedConfigs));
-
-		if (serviceIntents != null)
-			result.put(RemoteServicePublication.ENDPOINT_SERVICE_INTENTS,
-					getAsCollection(serviceIntents));
-
-		// Set optional ServicePublication.PROP_KEY_SERVICE_PROPERTIES
-		result.put(RemoteServicePublication.SERVICE_PROPERTIES,
-				remoteProperties);
-
-		// Due to slp bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=216944
-		// We are not going to use the RFC 119
-		// ServicePublication.PROP_KEY_ENDPOINT_ID...since
-		// it won't handle some Strings with (e.g. slp) provider
-		ID endpointID = container.getID();
-		result.put(RemoteServicePublication.ENDPOINT_CONTAINERID, endpointID);
-
-		// Also put the target ID in the service properties...*only*
-		// if the target ID is non-null and it's *not* the same as the
-		// endpointID, then include it in the set of properties delivered
-		// for publication
-		ID targetID = container.getConnectedID();
-		if (targetID != null && !targetID.equals(endpointID)) {
-			// put the target ID into the properties
-			result.put(RemoteServicePublication.TARGET_CONTAINERID, targetID);
-		}
-
-		// Set remote service namespace (String)
-		Namespace rsnamespace = rsContainer.getContainerAdapter()
-				.getRemoteServiceNamespace();
-		if (rsnamespace != null)
-			result.put(Constants.SERVICE_NAMESPACE, rsnamespace.getName());
-
-		// Set the actual remote service id (Long)
-		Long serviceId = (Long) remoteRegistration
-				.getProperty(Constants.SERVICE_ID);
-		byte[] serviceIdAsBytes = null;
-		if (serviceId != null) {
-			// this should always be true, as every remote service should have a
-			// non-null remote serviceID
-			serviceIdAsBytes = serviceId.toString().getBytes();
-		} else {
-			logError(
-					"getServicePublicationProperties", //$NON-NLS-1$
-					"RemoteRegistration property remote.service.id is not set in remoteRegistration=" //$NON-NLS-1$
-							+ remoteRegistration);
-			serviceIdAsBytes = "0".getBytes(); //$NON-NLS-1$
-		}
-
-		result.put(Constants.SERVICE_ID, serviceIdAsBytes);
-
-		return result;
-	}
-
-	private void publishRemoteService(IRemoteServiceContainer rsContainer,
-			final ServiceReference ref, String[] remoteInterfaces,
-			IRemoteServiceRegistration remoteRegistration,
-			String[] serviceIntents, String[] supportedConfigs,
-			Dictionary remoteServiceProperties) {
-		// First create properties for new ServicePublication
-		final Dictionary properties = getServicePublicationProperties(
-				rsContainer, ref, remoteInterfaces, remoteRegistration,
-				serviceIntents, supportedConfigs, remoteServiceProperties);
-		// Just prior to registering the ServicePublication, notify
-		// the IHostRegistrationListeners
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			final BundleContext context = activator.getContext();
-			// Now, at long last, register the ServicePublication.
-			// The RFC 119 discovery should/will pick this up and send it out
-			ServiceRegistration reg = context.registerService(
-					ServicePublication.class.getName(),
-					new ServicePublication() {
-						public ServiceReference getReference() {
-							return ref;
-						}
-					}, properties);
-			fireRemoteServicePublished(ref, reg);
-			// And it's done
-			trace("publishRemoteService", "containerID=" //$NON-NLS-1$ //$NON-NLS-2$
-					+ rsContainer.getContainer().getID() + ",serviceReference=" //$NON-NLS-1$
-					+ ref + " properties=" + properties //$NON-NLS-1$
-					+ ",remoteRegistration=" + remoteRegistration); //$NON-NLS-1$
-		}
-	}
-
-	private String[] getSupportedConfigs(IRemoteServiceContainer rsContainer) {
-		Activator a = Activator.getDefault();
-		if (a == null)
-			return null;
-		IContainerManager containerManager = a.getContainerManager();
-		if (containerManager == null)
-			return null;
-		ContainerTypeDescription ctd = containerManager
-				.getContainerTypeDescription(rsContainer.getContainer().getID());
-		if (ctd == null)
-			return null;
-		return ctd.getSupportedConfigs();
-	}
-
-	private Collection getAsCollection(String[] remoteInterfaces) {
-		List result = new ArrayList();
-		for (int i = 0; i < remoteInterfaces.length; i++) {
-			result.add(remoteInterfaces[i]);
-		}
-		return result;
-	}
-
-	private Dictionary getPropertiesForRemoteService(ServiceReference sr) {
-		String[] propKeys = sr.getPropertyKeys();
-		Properties newProps = new Properties();
-		for (int i = 0; i < propKeys.length; i++) {
-			if (!excludeRemoteServiceProperty(propKeys[i]))
-				newProps.put(propKeys[i], sr.getProperty(propKeys[i]));
-		}
-		return newProps;
-	}
-
-	private static final List excludedProperties = Arrays
-			.asList(new String[] {
-					org.osgi.framework.Constants.SERVICE_ID,
-					org.osgi.framework.Constants.OBJECTCLASS,
-					IDistributionConstants.SERVICE_EXPORTED_INTERFACES,
-					IDistributionConstants.SERVICE_INTENTS,
-					IDistributionConstants.SERVICE_EXPORTED_INTENTS,
-					IDistributionConstants.SERVICE_EXPORTED_INTENTS_EXTRA,
-					IDistributionConstants.SERVICE_IMPORTED,
-					IDistributionConstants.SERVICE_EXPORTED_CONFIGS,
-					IDistributionConstants.SERVICE_EXPORTED_CONTAINER_ID,
-					IDistributionConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,
-					IDistributionConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET,
-					IDistributionConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS,
-					// ECF constants
-					org.eclipse.ecf.remoteservice.Constants.SERVICE_CONTAINER_ID, });
-
-	private boolean excludeRemoteServiceProperty(String string) {
-		if (excludedProperties.contains(string))
-			return true;
-		return false;
-	}
-
-	private String[] getStringArrayFromPropertyValue(Object value) {
-		if (value == null)
-			return null;
-		else if (value instanceof String)
-			return new String[] { (String) value };
-		else if (value instanceof String[])
-			return (String[]) value;
-		else if (value instanceof Collection)
-			return (String[]) ((Collection) value).toArray(new String[] {});
-		else
-			return null;
-	}
-
-	private void fireRemoteServiceRegistered(ServiceReference serviceReference,
-			IRemoteServiceRegistration remoteServiceRegistration) {
-		synchronized (srvRefToRemoteSrvRegistration) {
-			List l = (List) srvRefToRemoteSrvRegistration.get(serviceReference);
-			if (l == null) {
-				l = new ArrayList();
-				srvRefToRemoteSrvRegistration.put(serviceReference, l);
-			}
-			l.add(remoteServiceRegistration);
-			distributionProvider.addExposedService(serviceReference);
-		}
-	}
-
-	private void fireHostRegisteredUnregistered(
-			final ServiceReference reference,
-			final IRemoteServiceContainer container,
-			final IRemoteServiceRegistration remoteRegistration,
-			final boolean registered) {
-		Activator activator = Activator.getDefault();
-		if (activator != null) {
-			IHostDistributionListener[] listeners = activator
-					.getHostRegistrationListeners();
-			if (listeners != null) {
-				for (int i = 0; i < listeners.length; i++) {
-					final IHostDistributionListener l = listeners[i];
-					SafeRunner.run(new ISafeRunnable() {
-						public void handleException(Throwable exception) {
-							logError(
-									"fireHostRegisteredUnregistered", //$NON-NLS-1$
-									"Exception calling host distribution listener", //$NON-NLS-1$
-									exception);
-						}
-
-						public void run() throws Exception {
-							if (registered)
-								l.registered(reference, container,
-										remoteRegistration);
-							else
-								l.unregistered(reference, remoteRegistration);
-						}
-					});
-				}
-			}
-		}
-	}
-
-	private void fireRemoteServiceUnregistered(ServiceReference reference) {
-		IRemoteServiceRegistration[] registrations = null;
-		synchronized (srvRefToRemoteSrvRegistration) {
-			distributionProvider.removeExposedService(reference);
-			List l = (List) srvRefToRemoteSrvRegistration.remove(reference);
-			if (l != null) {
-				registrations = (IRemoteServiceRegistration[]) l
-						.toArray(new IRemoteServiceRegistration[] {});
-				l.clear();
-			}
-		}
-		if (registrations != null) {
-			for (int i = 0; i < registrations.length; i++) {
-				try {
-					registrations[i].unregister();
-				} catch (IllegalStateException e) {
-					// ignore
-				} catch (Exception e) {
-					logError("fireRemoteServiceUnregistered", //$NON-NLS-1$
-							"Exception unregistering remote registration=" //$NON-NLS-1$
-									+ registrations[i], e);
-				}
-				// Now notify any listeners that this servicereference has been
-				// unregistered
-				fireHostRegisteredUnregistered(reference, null,
-						registrations[i], false);
-			}
-		}
-	}
-
-	private void fireRemoteServicePublished(ServiceReference serviceReference,
-			ServiceRegistration servicePublicationRegistration) {
-		synchronized (srvRefToServicePublicationRegistration) {
-			List l = (List) srvRefToServicePublicationRegistration
-					.get(serviceReference);
-			if (l == null) {
-				l = new ArrayList();
-				srvRefToServicePublicationRegistration.put(serviceReference, l);
-			}
-			l.add(servicePublicationRegistration);
-		}
-	}
-
-	private void fireRemoteServiceUnpublished(ServiceReference reference) {
-		ServiceRegistration[] registrations = null;
-		synchronized (srvRefToServicePublicationRegistration) {
-			List l = (List) srvRefToServicePublicationRegistration
-					.remove(reference);
-			if (l != null) {
-				registrations = (ServiceRegistration[]) l
-						.toArray(new ServiceRegistration[] {});
-				l.clear();
-			}
-		}
-		if (registrations != null) {
-			for (int i = 0; i < registrations.length; i++) {
-				try {
-					registrations[i].unregister();
-				} catch (Exception e) {
-					logError("fireRemoteServiceUnpublished", //$NON-NLS-1$
-							"Exception unregistering service publication registrations=" //$NON-NLS-1$
-									+ registrations[i], e);
-				}
-			}
-		}
-	}
-
-	private String[] getExportedInterfaces(ServiceReference serviceReference) {
-		// Get the OSGi 4.2 specified required service property value
-		Object propValue = serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_INTERFACES);
-		// If the required property is not set then it's not being registered
-		// as a remote service so we return null
-		if (propValue == null)
-			return null;
-		boolean wildcard = propValue
-				.equals(IDistributionConstants.SERVICE_EXPORTED_INTERFACES_WILDCARD);
-		if (wildcard)
-			return (String[]) serviceReference
-					.getProperty(org.osgi.framework.Constants.OBJECTCLASS);
-		else {
-			final String[] stringValue = getStringArrayFromPropertyValue(propValue);
-			if (stringValue != null
-					&& stringValue.length == 1
-					&& stringValue[0]
-							.equals(IDistributionConstants.SERVICE_EXPORTED_INTERFACES_WILDCARD)) {
-				LogUtility
-						.logWarning(
-								"getExportedInterfaces", //$NON-NLS-1$
-								DebugOptions.EVENTHOOKDEBUG, this.getClass(),
-								"Service Exported Interfaces Wildcard does not accept String[\"*\"]"); //$NON-NLS-1$
-			}
-			return stringValue;
-		}
-	}
-
-	private void trace(String methodName, String message) {
-		Trace.trace(Activator.PLUGIN_ID, DebugOptions.EVENTHOOKDEBUG,
-				this.getClass(), methodName, message);
-	}
-
-	private void traceException(String methodName, String message, Throwable t) {
-		Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING,
-				this.getClass(), ((methodName == null) ? "<unknown>" //$NON-NLS-1$
-						: methodName)
-						+ ":" + ((message == null) ? "<empty>" : message), t); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	private void logError(String methodName, String message, Throwable t) {
-		traceException(methodName, message, t);
-		Activator.getDefault().log(
-				new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,
-						this.getClass().getName() + ":" //$NON-NLS-1$
-								+ ((methodName == null) ? "<unknown>" //$NON-NLS-1$
-										: methodName) + ":" //$NON-NLS-1$
-								+ ((message == null) ? "<empty>" //$NON-NLS-1$
-										: message), t));
-	}
-
-	private void logError(String methodName, String message) {
-		logError(methodName, message, null);
-		traceException(methodName, message, null);
-	}
-
-	private void handleUnregisteringServiceEvent(
-			ServiceReference serviceReference, Collection contexts) {
-		fireRemoteServiceUnregistered(serviceReference);
-		fireRemoteServiceUnpublished(serviceReference);
-	}
-
-	private void handleModifiedServiceEvent(ServiceReference serviceReference,
-			Collection contexts) {
-		// This checks to see if the serviceReference has any remote interfaces
-		// declared via osgi.remote.interfaces property
-		Object osgiRemotes = serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_INTERFACES);
-		if (osgiRemotes != null) {
-			// XXX we currently don't handle the modified service event
-			trace("org.eclipse.ecf.internal.osgi.services.distribution.EventHookImpl.handleModifiedServiceEvent(ServiceReference, Collection)", //$NON-NLS-1$
-			"implement!"); //$NON-NLS-1$
-		}
-	}
-
-	private Object getService(ServiceReference sr) {
-		return Activator.getDefault().getContext().getService(sr);
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/LogUtility.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/LogUtility.java
deleted file mode 100644
index 3340667..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/LogUtility.java
+++ /dev/null
@@ -1,68 +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.internal.osgi.services.distribution;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.ecf.core.util.Trace;
-
-public class LogUtility {
-
-	public static void logError(String methodName, String debugOption,
-			Class clazz, String message) {
-		logError(methodName, debugOption, clazz, message, null);
-		traceException(methodName, debugOption, clazz, message, null);
-	}
-
-	public static void logWarning(String methodName, String debugOption,
-			Class clazz, String message) {
-		trace(methodName, debugOption, clazz, "WARNING:" + message); //$NON-NLS-1$
-		Activator.getDefault().log(
-				new Status(IStatus.WARNING, Activator.PLUGIN_ID,
-						IStatus.WARNING, 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 logError(String methodName, String debugOption,
-			Class clazz, String message, Throwable t) {
-		if (t != null)
-			traceException(methodName, debugOption, clazz, message, t);
-		else
-			trace(methodName, debugOption, clazz, message);
-		Activator.getDefault()
-				.log(
-						new Status(IStatus.ERROR, Activator.PLUGIN_ID,
-								IStatus.ERROR, clazz.getName()
-										+ ":" //$NON-NLS-1$
-										+ ((methodName == null) ? "<unknown>" //$NON-NLS-1$
-												: methodName)
-										+ ":" //$NON-NLS-1$
-										+ ((message == null) ? "<empty>" //$NON-NLS-1$
-												: message), t));
-	}
-
-	public static void trace(String methodName, String debugOptions,
-			Class clazz, String message) {
-		Trace.trace(Activator.PLUGIN_ID, debugOptions, clazz, methodName,
-				message);
-	}
-
-	public static void traceException(String methodName, String debugOption,
-			Class clazz, String message, Throwable t) {
-		Trace.catching(Activator.PLUGIN_ID, debugOption, clazz,
-				((methodName == null) ? "<unknown>" : methodName) + ":" //$NON-NLS-1$ //$NON-NLS-2$
-						+ ((message == null) ? "<empty>" : message), t); //$NON-NLS-1$
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/RemoteServiceRegistration.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/RemoteServiceRegistration.java
deleted file mode 100644
index f4f1be0..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/RemoteServiceRegistration.java
+++ /dev/null
@@ -1,154 +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.internal.osgi.services.distribution;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServiceEndpointDescription;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-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.osgi.framework.ServiceRegistration;
-
-public class RemoteServiceRegistration {
-
-	private IRemoteServiceContainer rsContainer;
-	private IRemoteServiceListener listener;
-	private Map serviceRegistrations = new HashMap();
-
-	public RemoteServiceRegistration(IRemoteServiceContainer rsContainer,
-			IRemoteServiceListener l) {
-		Assert.isNotNull(rsContainer);
-		Assert.isNotNull(l);
-		this.rsContainer = rsContainer;
-		this.listener = l;
-		getContainerAdapter().addRemoteServiceListener(this.listener);
-	}
-
-	IContainer getContainer() {
-		return rsContainer.getContainer();
-	}
-
-	IRemoteServiceContainerAdapter getContainerAdapter() {
-		return rsContainer.getContainerAdapter();
-	}
-
-	void dispose() {
-		synchronized (serviceRegistrations) {
-			if (listener != null) {
-				getContainerAdapter()
-						.removeRemoteServiceListener(this.listener);
-				this.listener = null;
-			}
-			if (rsContainer != null) {
-				rsContainer = null;
-			}
-			serviceRegistrations.clear();
-		}
-	}
-
-	class RSEDAndSRAssoc {
-		RemoteServiceEndpointDescription rsed;
-		ServiceRegistration sr;
-
-		public RSEDAndSRAssoc(RemoteServiceEndpointDescription rsed,
-				ServiceRegistration sr) {
-			this.rsed = rsed;
-			this.sr = sr;
-		}
-
-		public RemoteServiceEndpointDescription getRSED() {
-			return rsed;
-		}
-
-		public ServiceRegistration getSR() {
-			return sr;
-		}
-	}
-
-	void addServiceRegistration(IRemoteServiceReference ref,
-			RemoteServiceEndpointDescription rsed,
-			ServiceRegistration registration) {
-		synchronized (serviceRegistrations) {
-			List l = (List) serviceRegistrations.get(ref.getID());
-			if (l == null) {
-				l = new ArrayList();
-				serviceRegistrations.put(ref.getID(), l);
-			}
-			l.add(new RSEDAndSRAssoc(rsed, registration));
-		}
-	}
-
-	RSEDAndSRAssoc[] removeServiceRegistration(IRemoteServiceReference reference) {
-		getContainerAdapter().ungetRemoteService(reference);
-		synchronized (serviceRegistrations) {
-			List l = (List) serviceRegistrations.remove(reference.getID());
-			if (l != null)
-				return (RSEDAndSRAssoc[]) l.toArray(new RSEDAndSRAssoc[] {});
-		}
-		return null;
-	}
-
-	ServiceRegistration removeServiceRegistration(
-			RemoteServiceEndpointDescription rsed) {
-		if (rsed == null)
-			return null;
-		ServiceRegistration reg = null;
-		synchronized (serviceRegistrations) {
-			IRemoteServiceID remoteServiceID = null;
-			for (Iterator i = serviceRegistrations.keySet().iterator(); i
-					.hasNext();) {
-				remoteServiceID = (IRemoteServiceID) i.next();
-				List assocs = (List) serviceRegistrations.get(remoteServiceID);
-				for (Iterator j = assocs.iterator(); j.hasNext();) {
-					RSEDAndSRAssoc assoc = (RSEDAndSRAssoc) j.next();
-					if (rsed.equals(assoc.getRSED())) {
-						j.remove();
-						reg = assoc.getSR();
-					}
-				}
-			}
-			if (reg != null && remoteServiceID != null) {
-				serviceRegistrations.remove(remoteServiceID);
-			}
-		}
-		return reg;
-	}
-
-	boolean hasRSED(RemoteServiceEndpointDescription rsed) {
-		if (rsed == null)
-			return false;
-		synchronized (serviceRegistrations) {
-			for (Iterator i = serviceRegistrations.keySet().iterator(); i
-					.hasNext();) {
-				List assocs = (List) serviceRegistrations.get(i.next());
-				for (Iterator j = assocs.iterator(); j.hasNext();) {
-					RSEDAndSRAssoc assoc = (RSEDAndSRAssoc) j.next();
-					if (rsed.equals(assoc))
-						return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	boolean isEmpty() {
-		synchronized (serviceRegistrations) {
-			return serviceRegistrations.size() == 0;
-		}
-	}
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractContainerFinder.java
deleted file mode 100644
index 91e1d8c..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractContainerFinder.java
+++ /dev/null
@@ -1,240 +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.distribution;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-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;
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IIDFactory;
-import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.internal.osgi.services.distribution.Activator;
-import org.eclipse.ecf.internal.osgi.services.distribution.DebugOptions;
-import org.eclipse.ecf.internal.osgi.services.distribution.LogUtility;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Abstract superclass for IHostContainerFinders and IProxyContainerFinders.
- * 
- * @since 1.1
- * 
- */
-public abstract class AbstractContainerFinder {
-
-	public static final IRemoteServiceContainer[] EMPTY_REMOTE_SERVICE_CONTAINER_ARRAY = new IRemoteServiceContainer[] {};
-
-	protected IIDFactory getIDFactory() {
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		return activator.getIDFactory();
-	}
-
-	protected IContainerManager getContainerManager() {
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		return activator.getContainerManager();
-	}
-
-	protected IContainerFactory getContainerFactory() {
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		IContainerManager containerManager = getContainerManager();
-		if (containerManager == null)
-			return null;
-		return containerManager.getContainerFactory();
-	}
-
-	protected ContainerTypeDescription[] getContainerTypeDescriptions() {
-		IContainerFactory containerFactory = getContainerFactory();
-		if (containerFactory == null)
-			return null;
-		return (ContainerTypeDescription[]) containerFactory.getDescriptions()
-				.toArray(new ContainerTypeDescription[] {});
-	}
-
-	protected IContainer[] getContainers() {
-		Activator activator = Activator.getDefault();
-		if (activator == null)
-			return null;
-		IContainerManager containerManager = activator.getContainerManager();
-		if (containerManager == null)
-			return null;
-		return containerManager.getAllContainers();
-	}
-
-	protected IRemoteServiceContainerAdapter hasRemoteServiceContainerAdapter(
-			IContainer container) {
-		return (IRemoteServiceContainerAdapter) container
-				.getAdapter(IRemoteServiceContainerAdapter.class);
-	}
-
-	protected ContainerTypeDescription getContainerTypeDescription(
-			IContainer container) {
-		IContainerManager containerManager = getContainerManager();
-		if (containerManager == null)
-			return null;
-		return containerManager.getContainerTypeDescription(container.getID());
-	}
-
-	protected IRemoteServiceContainer[] getRemoteServiceContainers(
-			IContainer[] containers) {
-		List results = new ArrayList();
-		for (int i = 0; i < containers.length; i++) {
-			IRemoteServiceContainerAdapter adapter = hasRemoteServiceContainerAdapter(containers[i]);
-			if (adapter != null)
-				results.add(new RemoteServiceContainer(containers[i], adapter));
-		}
-		return (IRemoteServiceContainer[]) results
-				.toArray(new IRemoteServiceContainer[] {});
-	}
-
-	protected boolean includeContainerWithConnectNamespace(
-			IContainer container, String connectNamespaceName) {
-		if (connectNamespaceName != null) {
-			Namespace namespace = container.getConnectNamespace();
-			if (namespace != null
-					&& namespace.getName().equals(connectNamespaceName))
-				return true;
-		}
-		return false;
-	}
-
-	protected void connectContainer(IContainer container, ID connectTargetID,
-			IConnectContext connectContext) throws ContainerConnectException {
-		trace("connectContainer", "Connecting container=" + container.getID() //$NON-NLS-1$ //$NON-NLS-2$
-				+ " to connectTargetID=" + connectTargetID); //$NON-NLS-1$
-		container.connect(connectTargetID, connectContext);
-	}
-
-	protected String[] getSupportedConfigTypes(
-			ContainerTypeDescription containerTypeDescription) {
-		String[] supportedConfigs = containerTypeDescription
-				.getSupportedConfigs();
-		return (supportedConfigs == null) ? new String[0] : supportedConfigs;
-	}
-
-	protected String[] getSupportedIntents(
-			ContainerTypeDescription containerTypeDescription) {
-		String[] supportedIntents = containerTypeDescription
-				.getSupportedIntents();
-		return (supportedIntents == null) ? new String[0] : supportedIntents;
-	}
-
-	protected IContainer createContainer(ServiceReference serviceReference,
-			ContainerTypeDescription containerTypeDescription)
-			throws ContainerCreateException {
-
-		IContainerFactory containerFactory = getContainerFactory();
-		if (containerFactory == null)
-			throw new ContainerCreateException(
-					"container factory must not be null"); //$NON-NLS-1$
-
-		Object containerFactoryArguments = serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS);
-		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);
-		}
-		return containerFactory.createContainer(containerTypeDescription);
-	}
-
-	protected ID createTargetID(IContainer container, Object target) {
-		ID targetID = null;
-		if (target instanceof String) {
-			targetID = getIDFactory().createID(container.getConnectNamespace(),
-					(String) target);
-		} else if (target instanceof Object[]) {
-			targetID = getIDFactory().createID(container.getConnectNamespace(),
-					(Object[]) target);
-		}
-		return targetID;
-	}
-
-	protected void disconnectContainer(IContainer container) {
-		container.disconnect();
-	}
-
-	protected IConnectContext createConnectContext(
-			ServiceReference serviceReference, IContainer container,
-			Object context) {
-		if (context instanceof IConnectContext)
-			return (IConnectContext) context;
-		return null;
-	}
-
-	protected void logException(String string, Exception e) {
-		Activator.getDefault().log(
-				new Status(IStatus.ERROR, Activator.PLUGIN_ID, string, e));
-	}
-
-	protected void trace(String methodName, String message) {
-		LogUtility.trace(methodName, DebugOptions.CONTAINERFINDER,
-				this.getClass(), message);
-	}
-
-	protected void traceException(String methodName, String message, Throwable t) {
-		LogUtility.traceException(methodName, DebugOptions.EXCEPTIONS_CATCHING,
-				this.getClass(), message, t);
-	}
-
-	protected void logError(String methodName, String message, Throwable t) {
-		LogUtility.logError(methodName, DebugOptions.CONTAINERFINDER,
-				this.getClass(), message, t);
-	}
-
-	protected void logError(String methodName, String message) {
-		LogUtility.logError(methodName, DebugOptions.CONTAINERFINDER,
-				this.getClass(), message);
-	}
-
-	protected void logWarning(String methodName, String message) {
-		LogUtility.logWarning(methodName, DebugOptions.CONTAINERFINDER,
-				this.getClass(), message);
-	}
-
-	protected boolean matchConnectNamespace(IContainer container,
-			ID endpointID, ID connectTargetID) {
-		if (connectTargetID != null) {
-			return connectTargetID.getNamespace().getName()
-					.equals(container.getConnectNamespace().getName());
-		}
-		if (endpointID == null)
-			return false;
-		return endpointID.getNamespace().getName()
-				.equals(container.getConnectNamespace().getName());
-	}
-
-	protected boolean matchContainerID(IContainer container, ID endpointID) {
-		if (endpointID == null)
-			return false;
-		return endpointID.equals(container.getID());
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractDistributionListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractDistributionListener.java
deleted file mode 100644
index fb4df4b..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractDistributionListener.java
+++ /dev/null
@@ -1,133 +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.distribution;
-
-import java.util.Arrays;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.internal.osgi.services.distribution.Activator;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-
-public abstract class AbstractDistributionListener {
-
-	protected int logLevel = LogService.LOG_INFO;
-
-	public AbstractDistributionListener(int logLevel) {
-		this.logLevel = logLevel;
-	}
-
-	public AbstractDistributionListener() {
-	}
-
-	protected int getLogLevel() {
-		return logLevel;
-	}
-
-	protected void log(ServiceReference serviceReference, String message,
-			Throwable t) {
-		Activator a = Activator.getDefault();
-		if (a == null)
-			return;
-		a.log(serviceReference, getLogLevel(), message, t);
-	}
-
-	protected String createTabs(int tabLevel) {
-		StringBuffer sb = new StringBuffer(""); //$NON-NLS-1$
-		for (int i = 0; i < tabLevel; i++) {
-			sb.append("\t"); //$NON-NLS-1$
-		}
-		return sb.toString();
-	}
-
-	protected String printID(int tabLevel, String label, ID id) {
-		StringBuffer sb = new StringBuffer();
-		sb.append(createTabs(tabLevel)).append(label).append("="); //$NON-NLS-1$
-		sb.append((id == null) ? "null" : id.toExternalForm()); //$NON-NLS-1$
-		return sb.toString();
-	}
-
-	protected String printRemoteServiceRegistration(int tabLevel,
-			IRemoteServiceRegistration remoteRegistration) {
-		StringBuffer sb = new StringBuffer();
-		if (remoteRegistration != null) {
-			sb.append(printID(tabLevel,
-					"remoteServiceID", remoteRegistration.getID())); //$NON-NLS-1$
-			sb.append("\n"); //$NON-NLS-1$
-			sb.append(createTabs(tabLevel))
-					.append("properties") //$NON-NLS-1$
-					.append("\n") //$NON-NLS-1$
-					.append(printRemoteServiceReferenceProperties(tabLevel + 1,
-							remoteRegistration.getReference())).append("\n"); //$NON-NLS-1$
-		}
-		return sb.toString();
-	}
-
-	protected String printRemoteServiceReference(int tabLevel,
-			IRemoteServiceReference remoteReference) {
-		StringBuffer sb = new StringBuffer();
-		if (remoteReference != null) {
-			sb.append(printID(tabLevel,
-					"remoteServiceID", remoteReference.getID())); //$NON-NLS-1$
-			sb.append("\n"); //$NON-NLS-1$
-			sb.append(createTabs(tabLevel))
-					.append("properties") //$NON-NLS-1$
-					.append("\n") //$NON-NLS-1$
-					.append(printRemoteServiceReferenceProperties(tabLevel + 1,
-							remoteReference)).append("\n"); //$NON-NLS-1$
-		}
-		return sb.toString();
-	}
-
-	protected String printRemoteServiceReferenceProperties(int tabLevel,
-			IRemoteServiceReference remoteReference) {
-		StringBuffer sb = new StringBuffer();
-		if (remoteReference != null) {
-			String[] propKeys = remoteReference.getPropertyKeys();
-			for (int i = 0; i < propKeys.length; i++) {
-				if (i > 0)
-					sb.append("\n"); //$NON-NLS-1$
-				sb.append(createTabs(tabLevel))
-						.append("name=").append(propKeys[i]); //$NON-NLS-1$
-				Object value = remoteReference.getProperty(propKeys[i]);
-				sb.append(";value["); //$NON-NLS-1$
-				Class valueClass = value.getClass();
-				String classStr = ""; //$NON-NLS-1$
-				String valueStr = ""; //$NON-NLS-1$
-				if (valueClass.isArray()) {
-					classStr = valueClass.getComponentType().getName() + "[]"; //$NON-NLS-1$
-					valueStr = Arrays.asList((Object[]) value).toString();
-				} else {
-					classStr = valueClass.getName();
-					valueStr = value.toString();
-				}
-				sb.append(classStr).append("]").append("=").append(valueStr); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return sb.toString();
-	}
-
-	protected String printRemoteServiceContainer(int tabLevel,
-			IRemoteServiceContainer remoteServiceContainer) {
-		StringBuffer sb = new StringBuffer();
-		IContainer container = remoteServiceContainer.getContainer();
-		if (container != null) {
-			sb.append(printID(tabLevel, "ID", container.getID())); //$NON-NLS-1$
-			sb.append("\n"); //$NON-NLS-1$
-			sb.append(printID(tabLevel,
-					"connectedID", container.getConnectedID())); //$NON-NLS-1$
-		}
-		return sb.toString();
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractHostContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractHostContainerFinder.java
deleted file mode 100644
index b097586..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractHostContainerFinder.java
+++ /dev/null
@@ -1,355 +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.distribution;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-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.identity.ID;
-import org.eclipse.ecf.core.identity.IDCreateException;
-import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
-import org.osgi.framework.ServiceReference;
-
-public abstract class AbstractHostContainerFinder extends
-		AbstractContainerFinder {
-
-	private static final String NODEFAULT = "<<nodefault>>"; //$NON-NLS-1$
-	protected String[] defaultConfigTypes;
-
-	public AbstractHostContainerFinder(String[] defaultConfigTypes) {
-		this.defaultConfigTypes = defaultConfigTypes;
-	}
-
-	protected Collection findExistingHostContainers(
-			ServiceReference serviceReference,
-			String[] serviceExportedInterfaces,
-			String[] serviceExportedConfigs, String[] serviceIntents) {
-		List results = new ArrayList();
-		// Get all existing containers
-		IContainer[] containers = getContainers();
-		// If nothing there, then return empty array
-		if (containers == null || containers.length == 0)
-			return results;
-
-		for (int i = 0; i < containers.length; i++) {
-			// Check to make sure it's a rs container adapter. If it's not go
-			// onto next one
-			IRemoteServiceContainerAdapter adapter = hasRemoteServiceContainerAdapter(containers[i]);
-			if (adapter == null)
-				continue;
-			// Get container type description and intents
-			ContainerTypeDescription description = getContainerTypeDescription(containers[i]);
-			// If it has no description go onto next
-			if (description == null)
-				continue;
-
-			// http://bugs.eclipse.org/331532
-			if (!description.isServer()) {
-				continue;
-			}
-
-			if (matchExistingHostContainer(serviceReference, containers[i],
-					adapter, description, serviceExportedConfigs,
-					serviceIntents)) {
-				trace("findExistingContainers", "INCLUDING containerID=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ containers[i].getID()
-						+ "configs=" //$NON-NLS-1$
-						+ ((serviceExportedConfigs == null) ? "null" : Arrays //$NON-NLS-1$
-								.asList(serviceExportedConfigs).toString())
-						+ "intents=" //$NON-NLS-1$
-						+ ((serviceIntents == null) ? "null" : Arrays.asList( //$NON-NLS-1$
-								serviceIntents).toString()));
-				results.add(new RemoteServiceContainer(containers[i], adapter));
-			} else {
-				trace("findExistingContainers", "EXCLUDING containerID=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ containers[i].getID()
-						+ "configs=" //$NON-NLS-1$
-						+ ((serviceExportedConfigs == null) ? "null" : Arrays //$NON-NLS-1$
-								.asList(serviceExportedConfigs).toString())
-						+ "intents=" //$NON-NLS-1$
-						+ ((serviceIntents == null) ? "null" : Arrays.asList( //$NON-NLS-1$
-								serviceIntents).toString()));
-			}
-		}
-		return results;
-	}
-
-	protected boolean matchHostContainerToConnectTarget(
-			ServiceReference serviceReference, IContainer container) {
-		Object target = serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET);
-		if (target == null)
-			return true;
-		// If a targetID is specified, make sure it either matches what the
-		// container
-		// is already connected to, or that we connect an unconnected container
-		ID connectedID = container.getConnectedID();
-		// If the container is not already connected to anything
-		// then we connect it to the given target
-		if (connectedID == null) {
-			// connect to the target and we have a match
-			try {
-				connectHostContainer(serviceReference, container, target);
-			} catch (Exception e) {
-				logException("doConnectContainer containerID=" //$NON-NLS-1$
-						+ container.getID() + " target=" + target, e); //$NON-NLS-1$
-				return false;
-			}
-			return true;
-		} else {
-			ID targetID = createTargetID(container, target);
-			// We check here if the currently connectedID equals the target.
-			// If it does we have a match
-			if (connectedID.equals(targetID))
-				return true;
-		}
-		return false;
-	}
-
-	protected boolean matchExistingHostContainer(
-			ServiceReference serviceReference, IContainer container,
-			IRemoteServiceContainerAdapter adapter,
-			ContainerTypeDescription description, String[] requiredConfigTypes,
-			String[] requiredServiceIntents) {
-
-		return matchHostSupportedConfigTypes(requiredConfigTypes, description)
-				&& matchHostSupportedIntents(requiredServiceIntents,
-						description)
-				&& matchHostContainerID(serviceReference, container)
-				&& matchHostContainerToConnectTarget(serviceReference,
-						container);
-	}
-
-	protected boolean matchHostContainerID(ServiceReference serviceReference,
-			IContainer container) {
-
-		ID containerID = container.getID();
-		// No match if the container has no ID
-		if (containerID == null)
-			return false;
-
-		// Then get containerid if specified directly by user in properties
-		ID requiredContainerID = (ID) serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONTAINER_ID);
-		// If the CONTAINER_I
-		if (requiredContainerID != null) {
-			return requiredContainerID.equals(containerID);
-		}
-		// Else get the container factory arguments, create an ID from the
-		// arguments
-		// and check if the ID matches that
-		Namespace ns = containerID.getNamespace();
-		Object cid = serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS);
-		// If no arguments are present, then any container ID should match
-		if (cid == null)
-			return true;
-		ID cID = null;
-		if (cid instanceof ID) {
-			cID = (ID) cid;
-		} else if (cid instanceof String) {
-			cID = getIDFactory().createID(ns, (String) cid);
-		} else if (cid instanceof Object[]) {
-			Object cido = ((Object[]) cid)[0];
-			cID = getIDFactory().createID(ns, new Object[] { cido });
-		}
-		if (cID == null)
-			return true;
-		return containerID.equals(cID);
-	}
-
-	protected boolean matchHostSupportedConfigTypes(
-			String[] requiredConfigTypes,
-			ContainerTypeDescription containerTypeDescription) {
-		// if no config type is set the spec requires to create a default
-		// endpoint (see section 122.5.1)
-		if (requiredConfigTypes == null)
-			return true;
-		// Get supported config types for this description
-		String[] supportedConfigTypes = getSupportedConfigTypes(containerTypeDescription);
-		// If it doesn't support anything, return false
-		if (supportedConfigTypes == null || supportedConfigTypes.length == 0)
-			return false;
-		// Turn supported config types for this description into list
-		List supportedConfigTypesList = Arrays.asList(supportedConfigTypes);
-		List requiredConfigTypesList = Arrays.asList(requiredConfigTypes);
-		// We check all of the required config types and make sure
-		// that they are present in the supportedConfigTypes
-		boolean result = true;
-		for (Iterator i = requiredConfigTypesList.iterator(); i.hasNext();)
-			result &= supportedConfigTypesList.contains(i.next());
-		return result;
-	}
-
-	protected Collection createAndConfigureHostContainers(
-			ServiceReference serviceReference,
-			String[] serviceExportedInterfaces, String[] requiredConfigs,
-			String[] requiredIntents) {
-
-		List results = new ArrayList();
-		ContainerTypeDescription[] descriptions = getContainerTypeDescriptions();
-		if (descriptions == null)
-			return results;
-		// If there are no required configs specified, then create any defaults
-		if (requiredConfigs == null || requiredConfigs.length == 0)
-			createDefaultRSContainers(serviceReference, descriptions, results);
-		else {
-			// See if we have a match
-			for (int i = 0; i < descriptions.length; i++) {
-				IRemoteServiceContainer rsContainer = createMatchingContainer(
-						descriptions[i], serviceReference,
-						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))
-				createDefaultRSContainers(serviceReference, descriptions,
-						results);
-		}
-		return results;
-	}
-
-	private void createDefaultRSContainers(ServiceReference serviceReference,
-			ContainerTypeDescription[] descriptions, List results) {
-		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);
-			}
-		}
-	}
-
-	protected ContainerTypeDescription[] getContainerTypeDescriptionsForDefaultConfigTypes(
-			ContainerTypeDescription[] descriptions) {
-		String[] defaultConfigTypes = getDefaultConfigTypes();
-		if (defaultConfigTypes == null || defaultConfigTypes.length == 0)
-			return null;
-		List results = new ArrayList();
-		for (int i = 0; i < descriptions.length; i++) {
-			// For each description, get supported config types
-			String[] supportedConfigTypes = descriptions[i]
-					.getSupportedConfigs();
-			if (supportedConfigTypes != null
-					&& matchDefaultConfigTypes(defaultConfigTypes,
-							supportedConfigTypes))
-				results.add(descriptions[i]);
-		}
-		return (ContainerTypeDescription[]) results
-				.toArray(new ContainerTypeDescription[] {});
-	}
-
-	protected boolean matchDefaultConfigTypes(String[] defaultConfigTypes,
-			String[] supportedConfigTypes) {
-		List supportedConfigTypesList = Arrays.asList(supportedConfigTypes);
-		for (int i = 0; i < defaultConfigTypes.length; i++) {
-			if (supportedConfigTypesList.contains(defaultConfigTypes[i]))
-				return true;
-		}
-		return false;
-	}
-
-	protected String[] getDefaultConfigTypes() {
-		return defaultConfigTypes;
-	}
-
-	protected IRemoteServiceContainer createMatchingContainer(
-			ContainerTypeDescription containerTypeDescription,
-			ServiceReference serviceReference,
-			String[] serviceExportedInterfaces, String[] requiredConfigs,
-			String[] requiredIntents) {
-
-		if (matchHostSupportedConfigTypes(requiredConfigs,
-				containerTypeDescription)
-				&& matchHostSupportedIntents(requiredIntents,
-						containerTypeDescription)) {
-			return createRSContainer(serviceReference, containerTypeDescription);
-		}
-		return null;
-	}
-
-	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;
-		}
-	}
-
-	protected void connectHostContainer(ServiceReference serviceReference,
-			IContainer container, Object target)
-			throws ContainerConnectException, IDCreateException {
-		ID targetID = createTargetID(container, target);
-		Object context = serviceReference
-				.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT);
-		IConnectContext connectContext = null;
-		if (context != null) {
-			connectContext = createConnectContext(serviceReference, container,
-					context);
-		}
-		// connect the container
-		container.connect(targetID, connectContext);
-	}
-
-	protected boolean matchHostSupportedIntents(
-			String[] serviceRequiredIntents,
-			ContainerTypeDescription containerTypeDescription) {
-		// If there are no required intents then we have a match
-		if (serviceRequiredIntents == null)
-			return true;
-
-		String[] supportedIntents = getSupportedIntents(containerTypeDescription);
-
-		if (supportedIntents == null)
-			return false;
-
-		List supportedIntentsList = Arrays.asList(supportedIntents);
-
-		boolean result = true;
-		for (int i = 0; i < serviceRequiredIntents.length; i++)
-			result = result
-					&& supportedIntentsList.contains(serviceRequiredIntents[i]);
-
-		return result;
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractProxyContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractProxyContainerFinder.java
deleted file mode 100644
index f6b6a3a..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/AbstractProxyContainerFinder.java
+++ /dev/null
@@ -1,238 +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.distribution;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import org.eclipse.ecf.core.ContainerConnectException;
-import org.eclipse.ecf.core.ContainerTypeDescription;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerFactory;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.security.IConnectContext;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
-
-public abstract class AbstractProxyContainerFinder extends
-		AbstractContainerFinder {
-
-	protected Collection findExistingProxyContainers(ID endpointID,
-			String[] remoteSupportedConfigs, ID connectTargetID) {
-
-		List results = new ArrayList();
-		// Get all containers available
-		IContainer[] containers = getContainers();
-		// If none then return null
-		if (containers == null)
-			return results;
-
-		for (int i = 0; i < containers.length; i++) {
-			// Do *not* include containers with same ID as endpointID
-			if (matchContainerID(containers[i], endpointID))
-				continue;
-
-			IRemoteServiceContainerAdapter adapter = hasRemoteServiceContainerAdapter(containers[i]);
-			// Container must have adapter
-			if (adapter != null
-					// And it must match the connect namespace
-					&& matchConnectNamespace(containers[i], endpointID,
-							connectTargetID)
-					// and it must match the configs
-					&& matchProxySupportedConfigs(containers[i],
-							remoteSupportedConfigs)
-					// and the container should either not be connected or
-					// already be connected to the desired endpointID
-					&& matchNotConnected(containers[i], endpointID,
-							connectTargetID)) {
-				trace("findExistingProxyContainers", //$NON-NLS-1$
-						"MATCH of existing remote service container id=" //$NON-NLS-1$
-								+ containers[i].getID()
-								+ " endpointID=" //$NON-NLS-1$
-								+ endpointID
-								+ " remoteSupportedConfigs=" //$NON-NLS-1$
-								+ ((remoteSupportedConfigs == null) ? "[]" //$NON-NLS-1$
-										: Arrays.asList(remoteSupportedConfigs)
-												.toString()));
-				results.add(new RemoteServiceContainer(containers[i], adapter));
-			} else {
-				trace("findExistingProxyContainers", //$NON-NLS-1$
-						"No match of existing remote service container id=" //$NON-NLS-1$
-								+ containers[i].getID()
-								+ " endpointID=" //$NON-NLS-1$
-								+ endpointID
-								+ " remoteSupportedConfigs=" //$NON-NLS-1$
-								+ ((remoteSupportedConfigs == null) ? "[]" //$NON-NLS-1$
-										: Arrays.asList(remoteSupportedConfigs)
-												.toString()));
-			}
-		}
-		return results;
-	}
-
-	protected boolean matchNotConnected(IContainer container, ID endpointID,
-			ID connectTargetID) {
-		// if the container is not connected, OR it's connected to the desired
-		// endpointID already then we've got a match
-		ID connectedID = container.getConnectedID();
-		if (connectedID == null || connectedID.equals(endpointID)
-				|| connectedID.equals(connectTargetID))
-			return true;
-		return false;
-	}
-
-	protected boolean matchProxySupportedConfigs(IContainer container,
-			String[] remoteSupportedConfigs) {
-		if (remoteSupportedConfigs == null)
-			return false;
-		ContainerTypeDescription description = getContainerTypeDescription(container);
-		if (description == null)
-			return false;
-		return description.getImportedConfigs(remoteSupportedConfigs) != null;
-	}
-
-	protected void connectContainersToTarget(Collection rsContainers,
-			ID connectTargetID) {
-		if (connectTargetID == null)
-			return;
-		for (Iterator i = rsContainers.iterator(); i.hasNext();) {
-			IContainer container = ((IRemoteServiceContainer) i.next())
-					.getContainer();
-			ID connectedID = container.getConnectedID();
-			// Only connect the container to the connect target when
-			// it's not already connected
-			if (connectedID == null) {
-				// connect to target
-				try {
-					connectContainer(container, connectTargetID,
-							getConnectContext(container, connectTargetID));
-				} catch (ContainerConnectException e) {
-					logException("Exception connecting container id=" //$NON-NLS-1$
-							+ container.getID() + " to connectTargetID=" //$NON-NLS-1$
-							+ connectTargetID, e);
-				}
-			}
-		}
-	}
-
-	protected IConnectContext getConnectContext(IContainer container,
-			ID connectTargetID) {
-		return null;
-	}
-
-	protected Collection createAndConfigureProxyContainers(
-			String[] remoteSupportedConfigs, Map remoteExportedProperties) {
-		if (remoteSupportedConfigs == null
-				|| remoteSupportedConfigs.length == 0)
-			return Collections.EMPTY_LIST;
-		// Get container factory
-		IContainerFactory containerFactory = getContainerFactory();
-		if (containerFactory == null)
-			return Collections.EMPTY_LIST;
-		// Get all container type descriptions from factory
-		List containerTypeDescriptions = containerFactory.getDescriptions();
-		if (containerTypeDescriptions == null)
-			return Collections.EMPTY_LIST;
-
-		List results = new ArrayList();
-		// Go through all containerTypeDescriptions
-		for (Iterator i = containerTypeDescriptions.iterator(); i.hasNext();) {
-			ContainerTypeDescription desc = (ContainerTypeDescription) i.next();
-			// For each one, get the localImportedConfigs for the remote
-			// supported configs
-			String[] localImportedConfigs = desc
-					.getImportedConfigs(remoteSupportedConfigs);
-			// If their are some local imported configs for this description
-			if (localImportedConfigs != null) {
-				// Then get the imported config properties
-				Dictionary importedConfigProperties = desc
-						.getPropertiesForImportedConfigs(
-								localImportedConfigs,
-								createDictionaryFromMap(remoteExportedProperties));
-				// Then select a specific local imported config (typically the
-				// first on in the array)
-				String selectedConfig = selectLocalImportedConfig(
-						localImportedConfigs, importedConfigProperties);
-				// If we have one to use, then create the container
-				if (selectedConfig != null) {
-					IRemoteServiceContainer rsContainer = createContainer(
-							selectedConfig,
-							createMapFromDictionary(importedConfigProperties));
-					if (rsContainer != null) {
-						trace("createAndConfigureProxyContainers", //$NON-NLS-1$
-								"created new proxy container with config type=" //$NON-NLS-1$
-										+ selectedConfig + " and id=" //$NON-NLS-1$
-										+ rsContainer.getContainer().getID());
-						results.add(rsContainer);
-					}
-				}
-			}
-		}
-		return results;
-	}
-
-	private Map createMapFromDictionary(Dictionary input) {
-		if (input == null)
-			return null;
-		Map result = new HashMap();
-		for (Enumeration e = input.keys(); e.hasMoreElements();) {
-			Object key = e.nextElement();
-			Object val = input.get(key);
-			result.put(key, val);
-		}
-		return result;
-	}
-
-	private Dictionary createDictionaryFromMap(Map propMap) {
-		if (propMap == null)
-			return null;
-		Dictionary result = new Properties();
-		for (Iterator i = propMap.keySet().iterator(); i.hasNext();) {
-			Object key = i.next();
-			Object val = propMap.get(key);
-			result.put(key, val);
-		}
-		return result;
-	}
-
-	protected IRemoteServiceContainer createContainer(
-			String containerTypeDescriptionName, Map properties) {
-		try {
-			IContainer container = (properties == null) ? getContainerFactory()
-					.createContainer(containerTypeDescriptionName)
-					: getContainerFactory().createContainer(
-							containerTypeDescriptionName, properties);
-			return new RemoteServiceContainer(container);
-		} catch (Exception e) {
-			logException(
-					"Cannot create container with container type description name=" //$NON-NLS-1$
-							+ containerTypeDescriptionName, e);
-			return null;
-		}
-	}
-
-	protected String selectLocalImportedConfig(String[] localConfigTypes,
-			Dictionary importedConfigProperties) {
-		if (localConfigTypes == null || localConfigTypes.length == 0)
-			return null;
-		// By default, we'll select the first config to use...
-		return localConfigTypes[0];
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/DefaultHostContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/DefaultHostContainerFinder.java
deleted file mode 100644
index 2ce4c95..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/DefaultHostContainerFinder.java
+++ /dev/null
@@ -1,77 +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.distribution;
-
-import java.util.Collection;
-import java.util.Iterator;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Default implementation of IHostContainerFinder.
- * 
- */
-public class DefaultHostContainerFinder extends AbstractHostContainerFinder
-		implements IHostContainerFinder {
-
-	private boolean autoCreateContainer = false;
-
-	public DefaultHostContainerFinder(boolean autoCreateContainer,
-			String[] defaultConfigTypes) {
-		super(defaultConfigTypes);
-		this.autoCreateContainer = autoCreateContainer;
-	}
-
-	public IRemoteServiceContainer[] findHostContainers(
-			ServiceReference serviceReference,
-			String[] serviceExportedInterfaces,
-			String[] serviceExportedConfigs, String[] serviceIntents) {
-
-		// Find previously created containers that match the given
-		// serviceExportedConfigs and serviceIntents
-		Collection rsContainers = findExistingHostContainers(serviceReference,
-				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);
-
-			// if SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET service property is
-			// specified, then
-			// connect the host container(s)
-			Object target = serviceReference
-					.getProperty(IDistributionConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET);
-			if (target != null) {
-				for (Iterator i = rsContainers.iterator(); i.hasNext();) {
-					IContainer container = ((IRemoteServiceContainer) i.next())
-							.getContainer();
-					try {
-						connectHostContainer(serviceReference, container,
-								target);
-					} catch (Exception e) {
-						logException("doConnectContainer failure containerID=" //$NON-NLS-1$
-								+ container.getID() + " target=" + target, e); //$NON-NLS-1$
-					}
-				}
-
-			}
-		}
-
-		// return result
-		return (IRemoteServiceContainer[]) rsContainers
-				.toArray(new IRemoteServiceContainer[] {});
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/DefaultProxyContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/DefaultProxyContainerFinder.java
deleted file mode 100644
index afc7354..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/DefaultProxyContainerFinder.java
+++ /dev/null
@@ -1,67 +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.distribution;
-
-import java.util.Collection;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.osgi.services.discovery.IRemoteServiceEndpointDescription;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-
-/**
- * Default implementation of IProxyContainerFinder.
- * 
- */
-public class DefaultProxyContainerFinder extends AbstractProxyContainerFinder
-		implements IProxyContainerFinder {
-
-	private boolean autoCreateContainer = false;
-
-	public DefaultProxyContainerFinder(boolean autoCreateContainer) {
-		this.autoCreateContainer = autoCreateContainer;
-	}
-
-	public IRemoteServiceContainer[] findProxyContainers(IServiceID serviceID,
-			IRemoteServiceEndpointDescription endpointDescription) {
-
-		trace("findProxyContainers", "serviceID=" + serviceID //$NON-NLS-1$ //$NON-NLS-2$
-				+ " endpointDescription=" + endpointDescription); //$NON-NLS-1$
-
-		// Get the endpointID
-		ID endpointID = endpointDescription.getEndpointAsID();
-		// Get the remote supported configs
-		String[] remoteSupportedConfigs = endpointDescription
-				.getSupportedConfigs();
-		// Get connect targetID
-		ID connectTargetID = endpointDescription.getConnectTargetID();
-
-		// Find any/all existing containers for the proxy that
-		// match the endpointID namespace and the remoteSupportedConfigs
-		Collection rsContainers = findExistingProxyContainers(endpointID,
-				remoteSupportedConfigs, connectTargetID);
-
-		// If we haven't found any existing containers then we create one
-		// from the remoteSupportedConfigs...*iff* autoCreateContainer is
-		// set to true
-		if (rsContainers.size() == 0 && autoCreateContainer)
-			rsContainers = createAndConfigureProxyContainers(
-					remoteSupportedConfigs, 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
-		connectContainersToTarget(rsContainers, connectTargetID);
-
-		return (IRemoteServiceContainer[]) rsContainers
-				.toArray(new IRemoteServiceContainer[] {});
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionConstants.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionConstants.java
index 3d64ee5..486e529 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionConstants.java
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionConstants.java
@@ -9,171 +9,39 @@
  ******************************************************************************/
 package org.eclipse.ecf.osgi.services.distribution;
 
+import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;
+
 /**
  * @since 1.1
  */
 public interface IDistributionConstants {
 
-	// From OSGi 4.2 Compendium Specification, table 13.1 in r4.cmpn.pdf
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: Registered by the distribution provider on one of its
-	 * services to indicate the supported configuration types.
-	 * </p>
-	 */
-	public static final String REMOTE_CONFIGS_SUPPORTED = "remote.configs.supported"; //$NON-NLS-1$
+	public static final String REMOTE_CONFIGS_SUPPORTED = org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: Registered by the distribution provider on one of its
-	 * services to indicate the vocabulary of implemented intent.
-	 * </p>
-	 */
-	public static final String REMOTE_INTENTS_SUPPORTED = "remote.intents.supported"; //$NON-NLS-1$
+	public static final String REMOTE_INTENTS_SUPPORTED = org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: A list of configuration types that should be used to
-	 * export the service. Each configuration type represents the configuration
-	 * parameters for an endpoint. A distribution provider should create an
-	 * endpoint for each configuration type that it supports.
-	 * </p>
-	 */
-	public static final String SERVICE_EXPORTED_CONFIGS = "service.exported.configs"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_CONFIGS = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: A list of intents that the distribution provider must
-	 * implement to distribute the service. Intents listed in this property are
-	 * reserved for intents that are critical for the code to function
-	 * correctly, for example, ordering of messages. These intents should not be
-	 * configurable.
-	 * </p>
-	 */
-	public static final String SERVICE_EXPORTED_INTENTS = "service.exported.intents"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_INTENTS = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: This property is merged with the
-	 * service.exported.intents property before the distribution provider
-	 * interprets the listed intents; it has therefore the same semantics but
-	 * the property should be configurable so the administrator can choose the
-	 * intents based on the topology. Bundles should therefore make this
-	 * property configurable, for example through the Configuration Admin
-	 * service.
-	 * </p>
-	 */
-	public static final String SERVICE_EXPORTED_INTENTS_EXTRA = "service.exported.intents.extra"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_INTENTS_EXTRA = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: Setting this property marks this service for export.
-	 * It defines the interfaces under which this service can be exported. This
-	 * list must be a subset of the types listed in the objectClass service
-	 * property. The single value of an asterisk (Â’*Â’, \u002A) indicates all
-	 * interfaces in the registrationÂ’s objectClass property and ignore the
-	 * classes. It is strongly recommended to only export interfaces and not
-	 * concrete classes due to the complexity of creating proxies for some type
-	 * of concrete classes.
-	 * </p>
-	 */
-	public static final String SERVICE_EXPORTED_INTERFACES = "service.exported.interfaces"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_INTERFACES = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES;
 
 	public static final String SERVICE_EXPORTED_INTERFACES_WILDCARD = "*"; //$NON-NLS-1$
 
-	/**
-	 * <p>
-	 * <b>Type</b>: *
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: Must be set by a distribution provider to any value
-	 * when it registers the endpoint proxy as an imported service. A bundle can
-	 * use this property to filter out imported services.
-	 * </p>
-	 */
-	public static final String SERVICE_IMPORTED = "service.imported"; //$NON-NLS-1$
+	public static final String SERVICE_IMPORTED = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: The configuration information used to import this
-	 * service, as described in service.exported.configs. Any associated
-	 * properties for this configuration types must be properly mapped to the
-	 * importing system. For example, a URL in these properties must point to a
-	 * valid resource when used in the importing framework. If multiple
-	 * configuration types are listed in this property, then they must be
-	 * synonyms for exactly the same remote endpoint that is used to export this
-	 * service.
-	 * </p>
-	 */
-	public static final String SERVICE_IMPORTED_CONFIGS = "service.imported.configs"; //$NON-NLS-1$
+	public static final String SERVICE_IMPORTED_CONFIGS = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: A list of intents that this service implements. This
-	 * property has a dual purpose:
-	 * <ul>
-	 * <li>A bundle can use this service property to notify the distribution
-	 * provider that these intents are already implemented by the exported
-	 * service object.</li>
-	 * <li>A distribution provider must use this property to convey the combined
-	 * intents of:
-	 * <ul>
-	 * <li>The exporting service, and</li>
-	 * <li>The intents that the exporting distribution provider adds.</li>
-	 * <li>The intents that the importing distribution provider adds.</li>
-	 * </ul>
-	 * </ul>
-	 * To export a service, a distribution provider must expand any qualified
-	 * intents. Both the exporting and importing distribution providers must
-	 * recognize all intents before a service can be distributed.
-	 * </p>
-	 */
-	public static final String SERVICE_INTENTS = "service.intents"; //$NON-NLS-1$
+	public static final String SERVICE_INTENTS = org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS;
 
-	/**
-	 * <p>
-	 * <b>Type</b>: String+
-	 * </p>
-	 * <p>
-	 * <b>Description</b>: Services that are exported should have a service.pid
-	 * property. The service.pid (PID) is a unique persistent identity for the
-	 * service, the PID is defined in Persistent Identifier (PID) on page 129 of
-	 * the Core specification. This property enables a distribution provider to
-	 * associate persistent proprietary data with a service registration.
-	 * </p>
-	 */
-	public static final String SERVICE_PID = "service.pid"; //$NON-NLS-1$
+	public static final String SERVICE_PID = org.osgi.framework.Constants.SERVICE_PID;
 
-	public static final String SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS = "org.eclipse.ecf.containerFactoryArgs"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS = RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS;
 
-	public static final String SERVICE_EXPORTED_CONTAINER_CONNECT_TARGET = "org.eclipse.ecf.containerConnectTarget"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT = RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT;
 
-	public static final String SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT = "org.eclipse.ecf.containerConnectContext"; //$NON-NLS-1$
-
-	public static final String SERVICE_EXPORTED_CONTAINER_ID = "org.eclipse.ecf.containerID"; //$NON-NLS-1$
+	public static final String SERVICE_EXPORTED_CONTAINER_ID = RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID;
 
 }
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionProvider.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionProvider.java
deleted file mode 100644
index cabb643..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IDistributionProvider.java
+++ /dev/null
@@ -1,17 +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.distribution;
-
-/**
- * @since 1.1
- */
-public interface IDistributionProvider {
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IHostContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IHostContainerFinder.java
deleted file mode 100644
index 8c7f3b7..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IHostContainerFinder.java
+++ /dev/null
@@ -1,63 +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.distribution;
-
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Service interface for customizing the finding of host remote service
- * containers. Services registered with this interfaces will be consulted when a
- * remote service host is registered, in order to select and/or connect
- * IRemoteServiceContainer instances to use to publish remote references.
- */
-public interface IHostContainerFinder {
-
-	/**
-	 * Find remote service containers. Implementers of this service will be
-	 * consulted when a remote service is registered, so that they may provide
-	 * access to zero or more {@link IRemoteServiceContainer} instances to use
-	 * for distribution and remote service publication and discovery.
-	 * 
-	 * @param serviceReference
-	 *            the ServiceReference of the remote service service
-	 *            registration.
-	 * @param serviceExportedInterfaces
-	 *            The exported interfaces specified by the remote service
-	 *            registration. These are the values associated with the
-	 *            required service property
-	 *            {@link IDistributionConstants#SERVICE_EXPORTED_INTERFACES} as
-	 *            per chapter 13 of the OSGi 4.2 compendium specification. Will
-	 *            not be <code>null</code>.
-	 * @param serviceExportedConfigs
-	 *            The exported configuration types specified by the remote
-	 *            service registration. These are the values associated with the
-	 *            optional service property
-	 *            {@link IDistributionConstants#SERVICE_EXPORTED_CONFIGS} as per
-	 *            chapter 13 of the OSGi 4.2 compendium specification. May be
-	 *            <code>null</code>.
-	 * @param serviceIntents
-	 *            The service intents specified by the remote service
-	 *            registration. These are the values associated with the union
-	 *            of the service properties
-	 *            {@link IDistributionConstants#SERVICE_INTENTS},
-	 *            {@link IDistributionConstants#SERVICE_EXPORTED_INTENTS}, and
-	 *            {@link IDistributionConstants#SERVICE_EXPORTED_INTENTS_EXTRA}.
-	 *            May be <code>null</code>.
-	 * @return IRemoteServiceContainer[] the ECF remote service containers that
-	 *         should distribute and publish the remote service (specified by
-	 *         the serviceReference) for remote access.
-	 */
-	public IRemoteServiceContainer[] findHostContainers(
-			ServiceReference serviceReference,
-			String[] serviceExportedInterfaces,
-			String[] serviceExportedConfigs, String[] serviceIntents);
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IHostDistributionListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IHostDistributionListener.java
deleted file mode 100644
index edbf5f4..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IHostDistributionListener.java
+++ /dev/null
@@ -1,62 +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.distribution;
-
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Listener for host distribution events. Services registered with this as their
- * service interface will have their methods called when the distribution
- * implementation events occur.
- * 
- * @since 1.1
- * 
- */
-public interface IHostDistributionListener {
-
-	/**
-	 * Event indicating that a remote service has been registered, with the
-	 * given local serviceReference, the given remoteServiceContainer, and the
-	 * given remoteRegistration.
-	 * 
-	 * @param serviceReference
-	 *            the ServiceReference of the locally registered service. Will
-	 *            not be <code>null</code>.
-	 * 
-	 * @param remoteServiceContainer
-	 *            the remoteServiceContainer that is doing the distribution for
-	 *            this remote service. Will not be <code>null</code>.
-	 * 
-	 * @param remoteRegistration
-	 *            The remote service registration created with successful
-	 *            registration with the remoteServiceContainer. Will not be
-	 *            <code>null</code>.
-	 */
-	public void registered(ServiceReference serviceReference,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceRegistration remoteRegistration);
-
-	/**
-	 * Event indicating that a remote service has been unregistered.
-	 * 
-	 * @param serviceReference
-	 *            the ServiceReference of the locally registered service. Will
-	 *            not be <code>null</code>.
-	 * 
-	 * @param remoteRegistration
-	 *            The remote service registration previously created upon
-	 *            registration. Will not be <code>null</code>.
-	 */
-	public void unregistered(ServiceReference serviceReference,
-			IRemoteServiceRegistration remoteRegistration);
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IProxyContainerFinder.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IProxyContainerFinder.java
deleted file mode 100644
index 94ac670..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IProxyContainerFinder.java
+++ /dev/null
@@ -1,54 +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.distribution;
-
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.osgi.services.discovery.IRemoteServiceEndpointDescription;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-
-/**
- * Service interface for customizing the finding of proxy remote service
- * containers. Services registered with this interfaces will be consulted when a
- * remote proxy is discovered, in order to select and/or connect
- * IRemoteServiceContainer instances to use to create proxies.
- * 
- * @since 1.1
- */
-public interface IProxyContainerFinder {
-
-	/**
-	 * 
-	 * Find remote service containers. Implementers of this service will be
-	 * consulted when a remote proxy is discovered, so that they may provide
-	 * access to zero or more {@link IRemoteServiceContainer} instances to use
-	 * for proxy creation and local publication in the service registry.
-	 * 
-	 * @param serviceID
-	 *            the service ID exposed by the discovery provider. Will not be
-	 *            <code>null</code>.
-	 * @param endpointDescription
-	 *            the endpoint description created from the discovered remote
-	 *            service meta data. This endpointDescription may be used to
-	 *            decide what IRemoteServiceContainer[] to return, as well as
-	 *            whether or not to connect the IContainer to the targetID
-	 *            (provided by
-	 *            {@link IRemoteServiceEndpointDescription#getConnectTargetID()}
-	 *            . Will not be <code>null</code>.
-	 * 
-	 * @return IRemoteServiceContainer[] the remote service containers that
-	 *         should be used to get remote service references for the remote
-	 *         service described by the endpointDescription. If no containers
-	 *         are relevant, then an empty array should be returned rather than
-	 *         <code>null</code>.
-	 */
-	public IRemoteServiceContainer[] findProxyContainers(IServiceID serviceID,
-			IRemoteServiceEndpointDescription endpointDescription);
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IProxyDistributionListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IProxyDistributionListener.java
deleted file mode 100644
index 3792c6f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/IProxyDistributionListener.java
+++ /dev/null
@@ -1,112 +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.distribution;
-
-import org.eclipse.ecf.osgi.services.discovery.IRemoteServiceEndpointDescription;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-/**
- * Listener for proxy distribution events. Services registered with this as
- * their service interface will have their methods called when the distribution
- * implementation events occur.
- * 
- */
-public interface IProxyDistributionListener {
-
-	/**
-	 * Event that indicates that an endpointDescription has been discovered and
-	 * that the remote service references (specified by the endpointDescription)
-	 * are being lookedup using the given remoteServiceContainer. If multiple
-	 * remoteServiceContainers are found, this method will be called multiple
-	 * times, each with a distinct remoteServiceContainer.
-	 * 
-	 * @param endpointDescription
-	 *            the endpointDescription that describes the discovered endpoint
-	 *            that exposes some remote services. Will not be
-	 *            <code>null</code>.
-	 * @param remoteServiceContainer
-	 *            a remote service container that has been found (via the
-	 *            {@link IProxyContainerFinder}) and will be used for remote
-	 *            lookup.
-	 */
-	public void retrievingRemoteServiceReferences(
-			IRemoteServiceEndpointDescription endpointDescription,
-			IRemoteServiceContainer remoteServiceContainer);
-
-	/**
-	 * Event that indicates that the given endpointDescription and
-	 * remoteServiceContainer have resulted in a remoteServiceReference that
-	 * will be used to register a remote service.
-	 * 
-	 * @param endpointDescription
-	 *            the endpointDescription that describes the discovered endpoint
-	 *            that exposes some remote services. Will not be
-	 *            <code>null</code>.
-	 * @param remoteServiceContainer
-	 *            a remote service container that has been found (via the
-	 *            {@link IProxyContainerFinder}) and will be used for remote
-	 *            lookup. Will not be <code>null</code>.
-	 * @param remoteServiceReference
-	 *            a remote service reference that has resulted from using the
-	 *            endpointDescription meta-data and remoteServiceContainer to
-	 *            successfully lookup this reference. Will not be
-	 *            <code>null</code>.
-	 */
-	public void registering(
-			IRemoteServiceEndpointDescription endpointDescription,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceReference remoteServiceReference);
-
-	/**
-	 * Event that indicates that a remote service proxy has been successfully
-	 * been looked up, created, and registered in the local service registry.
-	 * 
-	 * @param endpointDescription
-	 *            the endpointDescription that describes the discovered endpoint
-	 *            that exposes some remote services. Will not be
-	 *            <code>null</code>.
-	 * @param remoteServiceContainer
-	 *            a remote service container that has been found (via the
-	 *            {@link IProxyContainerFinder}) and will be used for remote
-	 *            lookup. Will not be <code>null</code>.
-	 * @param remoteServiceReference
-	 *            a remote service reference that has resulted from using the
-	 *            endpointDescription meta-data and remoteServiceContainer to
-	 *            successfully lookup this reference. Will not be
-	 *            <code>null</code>.
-	 * @param proxyServiceRegistration
-	 *            the local ServiceRegistration that was created when the local
-	 *            proxy was successfully added to the service registry.
-	 */
-	public void registered(
-			IRemoteServiceEndpointDescription endpointDescription,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceReference remoteServiceReference,
-			ServiceRegistration proxyServiceRegistration);
-
-	/**
-	 * Event that indicates that a remote service proxy has been unregistered
-	 * from the local service registry.
-	 * 
-	 * @param endpointDescription
-	 *            the endpointDescription that describes the discovered endpoint
-	 *            that exposes some remote services. May be <code>null</code> if
-	 *            the service is unregistered for some event other than
-	 *            discovery (e.g. container disconnection).
-	 * @param proxyServiceRegistration
-	 *            the local ServiceRegistration that was created when the local
-	 *            proxy was successfully added to the service registry.
-	 */
-	public void unregistered(
-			IRemoteServiceEndpointDescription endpointDescription,
-			ServiceRegistration proxyServiceRegistration);
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/LoggingHostDistributionListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/LoggingHostDistributionListener.java
deleted file mode 100644
index 0e5ea65..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/LoggingHostDistributionListener.java
+++ /dev/null
@@ -1,58 +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.distribution;
-
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
-import org.osgi.framework.ServiceReference;
-
-public class LoggingHostDistributionListener extends
-		AbstractDistributionListener implements IHostDistributionListener {
-
-	public void registered(ServiceReference serviceReference,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceRegistration remoteRegistration) {
-
-		if (serviceReference == null || remoteServiceContainer == null
-				|| remoteRegistration == null)
-			return;
-
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service distribution: registered").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		sb.append(createTabs(1)).append("serviceReference=") //$NON-NLS-1$
-				.append(serviceReference);
-		sb.append("\n"); //$NON-NLS-1$
-		sb.append(createTabs(1)).append("remoteServiceContainer") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceContainer(2, remoteServiceContainer));
-		sb.append("\n"); //$NON-NLS-1$
-		sb.append(createTabs(1)).append("remoteServiceRegistration") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceRegistration(2, remoteRegistration));
-		log(serviceReference, sb.toString(), null);
-	}
-
-	public void unregistered(ServiceReference serviceReference,
-			IRemoteServiceRegistration remoteRegistration) {
-		if (serviceReference == null || remoteRegistration == null)
-			return;
-
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service distribution: unregistered").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		sb.append(createTabs(1)).append("serviceReference=") //$NON-NLS-1$
-				.append(serviceReference);
-		sb.append("\n"); //$NON-NLS-1$
-		sb.append(createTabs(1)).append("remoteServiceRegistration") //$NON-NLS-1$
-				.append(printRemoteServiceRegistration(2, remoteRegistration));
-		sb.append("\n"); //$NON-NLS-1$
-		log(serviceReference, sb.toString(), null);
-	}
-
-}
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/LoggingProxyDistributionListener.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/LoggingProxyDistributionListener.java
deleted file mode 100644
index 8f9282f..0000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/osgi/services/distribution/LoggingProxyDistributionListener.java
+++ /dev/null
@@ -1,107 +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.distribution;
-
-import org.eclipse.ecf.osgi.services.discovery.IRemoteServiceEndpointDescription;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-public class LoggingProxyDistributionListener extends
-		AbstractDistributionListener implements IProxyDistributionListener {
-
-	public void retrievingRemoteServiceReferences(
-			IRemoteServiceEndpointDescription endpointDescription,
-			IRemoteServiceContainer remoteServiceContainer) {
-		if (endpointDescription == null || remoteServiceContainer == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service distribution: retrievingRemoteServiceReferences").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		sb.append(createTabs(1))
-				.append("endpointDescription=").append(endpointDescription).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		sb.append(createTabs(1)).append("remoteServiceContainer") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceContainer(2, remoteServiceContainer));
-		sb.append("\n"); //$NON-NLS-1$
-		log(null, sb.toString(), null);
-	}
-
-	public void registering(
-			IRemoteServiceEndpointDescription endpointDescription,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceReference remoteServiceReference) {
-		if (endpointDescription == null || remoteServiceContainer == null
-				|| remoteServiceReference == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service distribution: registering").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		sb.append(createTabs(1))
-				.append("endpointDescription=").append(endpointDescription).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		sb.append(createTabs(1)).append("remoteServiceContainer") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceContainer(2, remoteServiceContainer));
-		sb.append("\n"); //$NON-NLS-1$
-		sb.append(createTabs(1)).append("remoteServiceReference") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceReference(2, remoteServiceReference));
-		sb.append("\n"); //$NON-NLS-1$
-		log(null, sb.toString(), null);
-
-	}
-
-	public void registered(
-			IRemoteServiceEndpointDescription endpointDescription,
-			IRemoteServiceContainer remoteServiceContainer,
-			IRemoteServiceReference remoteServiceReference,
-			ServiceRegistration proxyServiceRegistration) {
-		if (endpointDescription == null || remoteServiceContainer == null
-				|| remoteServiceReference == null
-				|| proxyServiceRegistration == null)
-			return;
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service distribution: registered").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		sb.append(createTabs(1))
-				.append("endpointDescription=").append(endpointDescription).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		sb.append(createTabs(1)).append("remoteServiceContainer") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceContainer(2, remoteServiceContainer));
-		sb.append("\n"); //$NON-NLS-1$
-		sb.append(createTabs(1)).append("remoteServiceReference") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(printRemoteServiceReference(2, remoteServiceReference));
-		sb.append(createTabs(1)).append("proxyServiceRegistration=") //$NON-NLS-1$
-				.append(proxyServiceRegistration);
-		sb.append("\n"); //$NON-NLS-1$
-		log(null, sb.toString(), null);
-	}
-
-	public void unregistered(
-			IRemoteServiceEndpointDescription endpointDescription,
-			ServiceRegistration proxyServiceRegistration) {
-
-		StringBuffer sb = new StringBuffer(
-				"OSGi ECF service distribution: unregistered").append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		sb.append(createTabs(1))
-				.append("endpointDescription=").append(endpointDescription).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
-		sb.append(createTabs(1)).append("proxyServiceRegistration=") //$NON-NLS-1$
-				.append("\n") //$NON-NLS-1$
-				.append(proxyServiceRegistration);
-		sb.append("\n"); //$NON-NLS-1$
-		log(null, sb.toString(), null);
-
-	}
-
-}
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/javadoc.xml b/doc/bundles/org.eclipse.ecf.doc/javadoc.xml
index a80989e..baa9595 100644
--- a/doc/bundles/org.eclipse.ecf.doc/javadoc.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/javadoc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <project default="javadoc">
     <target name="javadoc">
-        <javadoc access="protected" additionalparam="-J-Xmx256m  -tag model:a:Model -tag generated:a:Generated -tag noreference:tcmf:DoNotReference -tag ordered:a:Ordered -tag noimplement:a:NoImplement -tag noextend:a:NoExtend " author="false" classpath="../org.apache.log4j;../org.eclipse.ecf.remoteservice/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.concurrent_1.0.100.v20100503.jar;../org.eclipse.ecf.presence.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.resources_3.6.0.v20100526-0737.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.security_1.0.200.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.swt_3.6.0.v3650b.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.osgi.services_3.2.100.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.preferences_3.3.0.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.registry_3.5.0.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.expressions_3.4.200.v20100505.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.workbench.texteditor_3.6.0.v20100520-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.jobs_3.5.0.v20100515.jar;../org.eclipse.emf.ecore.change/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui_3.6.0.I20100603-1100.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.runtime_3.6.0.v20100505.jar;../org.eclipse.ecf.provider.remoteservice/bin;../org.eclipse.ecf.presence/bin;../org.eclipse.ecf.provider.xmpp/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.forms_3.5.0.v20100427.jar;../org.eclipse.ecf.provider.irc/lib/irclib.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.jface.text_3.6.0.v20100526-0800.jar;../org.eclipse.ecf/bin;../org.eclipse.ecf.provider.datashare/bin;../org.eclipse.ecf.discovery.ui.edit/bin;../org.jivesoftware.smack/bin;../org.eclipse.ecf.sync/bin;C:\eclipse3.6rc4\eclipse\plugins\org.apache.commons.httpclient_3.1.0.v201005080502.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.net_1.2.100.I20100511-0800.jar;../org.eclipse.ecf.provider.filetransfer/bin;../org.eclipse.ecf.identity/bin;../org.eclipse.emf.ecore/bin;../org.eclipse.ecf.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.jface_3.6.0.I20100601-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.filebuffers_3.5.100.v20100520-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.common_3.6.0.v20100503.jar;../org.jivesoftware.smack/jars/xpp.jar;../org.eclipse.emf.edit/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100520\runtime_registry_compatibility.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.editors_3.6.0.v20100520-0800.jar;../org.eclipse.ecf.provider.irc/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.app_1.3.0.v20100512.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.ide_3.6.0.I20100601-0800.jar;../org.eclipse.ecf.telephony.call/bin;../org.eclipse.ecf.sharedobject/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.workbench_3.6.0.I20100603-1100.jar;../org.eclipse.ecf.provider.datashare.nio/bin;../org.apache.zookeeper/zookeeper-3.3.0.jar;C:\eclipse3.6rc4\eclipse\plugins\org.objectweb.asm_3.2.0.v200909071300.jar;../org.eclipse.emf.edit.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.osgi_3.6.0.v20100517.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.text_3.5.0.v20100601-1300.jar;../org.eclipse.ecf.filetransfer/bin;../org.eclipse.ecf.provider/bin;../ch.ethz.iks.slp/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.views_3.5.0.I20100527-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.console_3.5.0.v20100526.jar;../org.eclipse.ecf.discovery/bin;../org.eclipse.ecf.datashare/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.commands_3.6.0.I20100512-1500.jar;../ch.ethz.iks.r_osgi.remote/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.filesystem_1.3.0.v20100526-0737.jar;../org.eclipse.emf.common.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.6.0.v3650b.jar;../org.eclipse.ecf.discovery.ui.model/bin;../org.eclipse.emf.common/bin;../org.eclipse.ecf.discovery.ui/bin;../org.eclipse.ecf.osgi.services.discovery/bin" destdir="html/reference/api" doctitle="Eclipse Communication Framework 3.3.0" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.eclipse.ecf.ui.hyperlink,org.eclipse.ecf.core.sharedobject.util,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.core.sharedobject.provider,org.eclipse.ecf.example.clients,org.eclipse.ecf.presence.im,org.eclipse.ecf.ui.actions,org.eclipse.ecf.telephony.call.ui.actions,org.eclipse.ecf.core.provider,org.eclipse.ecf.discovery.service,org.eclipse.ecf.presence.bot,org.eclipse.ecf.provider.zookeeper,org.eclipse.ecf.provider.remoteservice,org.eclipse.ecf.core.sharedobject.events,org.eclipse.ecf.provider.jslp.identity,org.eclipse.ecf.remoteservice.soap.identity,org.eclipse.ecf.telephony.call.events,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.core.identity,org.eclipse.ecf.provider.remoteservice.generic,org.eclipse.ecf.remoteservice.soap.client,org.eclipse.ecf.docshare,org.eclipse.ecf.provider.irc.bot,org.eclipse.ecf.presence.collab.ui.url,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.presence.roster,org.eclipse.ecf.core.events,org.eclipse.ecf.provider.zookeeper.node.internal,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.provider.filetransfer.events.socket,org.eclipse.ecf.provider.generic.gmm,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.ecf.presence.collab.ui.screencapture,org.eclipse.ecf.provider.zookeeper.core,org.eclipse.ecf.provider.filetransfer.outgoing,org.eclipse.ecf.filetransfer.events,org.eclipse.ecf.datashare.service,org.eclipse.ecf.filetransfer.ui.actions,org.eclipse.ecf.core.sharedobject,org.eclipse.ecf.filetransfer.events.socket,org.eclipse.ecf.sync.doc,org.eclipse.ecf.ui.util,org.eclipse.ecf.core.sharedobject.security,org.eclipse.ecf.provider.zookeeper.core.internal,org.eclipse.ecf.remoteservice.client,org.eclipse.ecf.provider.filetransfer.retrieve,org.eclipse.ecf.core.user,org.eclipse.ecf.presence.chatroom,org.eclipse.ecf.provider.filetransfer.identity,org.eclipse.ecf.remoteservices.ui,org.eclipse.ecf.provider.generic,org.eclipse.ecf.presence.ui.dnd,org.eclipse.ecf.presence.bot.application,org.eclipse.ecf.provider.comm,org.eclipse.ecf.ui.screencapture,org.eclipse.ecf.presence.search.message,org.eclipse.ecf.provider.jslp.container,org.eclipse.ecf.provider.ui.wizards,org.eclipse.ecf.ui.dialogs,org.eclipse.ecf.ui.wizards,org.eclipse.ecf.presence.history,org.eclipse.ecf.presence.collab.ui.view,org.eclipse.ecf.core.start,org.eclipse.ecf.osgi.services.distribution,org.eclipse.ecf.docshare.messages,org.eclipse.ecf.provider.filetransfer.browse,org.eclipse.ecf.remoteservice.rest.util,org.eclipse.ecf.provider.localdiscovery,org.eclipse.ecf.core.security,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.discovery.ui.model.resource,org.eclipse.ecf.provider.irc.bot.handler,org.eclipse.ecf.remoteservice.rest.client,org.eclipse.ecf.presence.ui.menu,org.eclipse.ecf.protocol.msn.events,org.eclipse.ecf.presence.search,org.eclipse.ecf.provider.zookeeper.util,org.eclipse.ecf.ui,org.eclipse.ecf.provider.comm.tcp,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.remoteservice.util.tracker,org.eclipse.ecf.presence.bot.impl,org.eclipse.ecf.presence.ui,org.eclipse.ecf.storage,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.filetransfer.events.socketfactory,org.eclipse.ecf.presence.ui.chatroom,org.eclipse.ecf.server.generic,org.eclipse.ecf.provider.xmpp.identity,org.eclipse.ecf.docshare.menu,org.eclipse.ecf.datashare.events,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.example.clients.applications,org.eclipse.ecf.provider.jmdns.identity,org.eclipse.ecf.telephony.call.service,org.eclipse.ecf.filetransfer.identity,org.eclipse.ecf.telephony.call,org.eclipse.ecf.server.generic.app,org.eclipse.ecf.datashare,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.discovery.ui.model.provider,org.eclipse.ecf.provider.r_osgi.identity,org.eclipse.ecf.remoteservice.util,org.eclipse.ecf.sync,org.eclipse.ecf.discovery.ui.model.impl,org.eclipse.ecf.presence.collab.ui.console,org.eclipse.ecf.provider.jmdns.container,org.eclipse.ecf.datashare.mergeable,org.eclipse.ecf.discovery.identity,org.eclipse.ecf.provider.util,org.eclipse.ecf.presence.ui.roster,org.eclipse.ecf.remoteservice.rest.identity,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.filetransfer.service,org.eclipse.ecf.discovery.ui.model.util,org.eclipse.ecf.presence.service,org.eclipse.ecf.core.util,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.provider.filetransfer.util,org.eclipse.ecf.core.jobs,org.eclipse.ecf.osgi.services.discovery.local,org.eclipse.ecf.remoteservice.events,org.eclipse.ecf.core.status" source="1.5" sourcefiles="../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryPropertyTesterUtil.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainerAdapter.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceRegistration.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceHelper.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerManager.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceProperties.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFile.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceProperties.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferPausable.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClientManager.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceReference.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/UserCancelledException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/BrowseFileTransferException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransferRequestListener.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainerAdapterFactory.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/SharedObjectDatashareContainerAdapter.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteCallListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceProxy.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransfer.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerCreateException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteFilter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRateControl.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainer.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceID.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileAttributes.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerManagerListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceInfo.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IProxyDiscoveryListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileRangeSpecification.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageEvent.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferInfo.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/Presence.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IReliableContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceListener.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServiceEndpointDescription.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerAuthenticationException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/DiscoveryContainerConfig.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteCallListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRunnable.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMMessage.java,../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServicePublication.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteCall.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/InvalidFileRangeSpecificationException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferListener.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/BaseContainer.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerAdapterFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/SendFileTransferException.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferContainerAdapter.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceID.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerConfig.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemRequest.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresence.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/RemoteFileSystemException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/AbstractPresenceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IOutgoingFileTransfer.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceInfo.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransfer.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerAdapter.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessage.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IContainerServiceInfoAdapter.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClient.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceHost.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemBrowserContainerAdapter.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainer.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IRemoteServiceEndpointDescription.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IHostDiscoveryListener.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerConnectException.java" sourcepath="../org.eclipse.ecf.provider.jslp/src;../org.eclipse.ecf.provider.ui/src;../org.eclipse.ecf.identity/src;../org.eclipse.ecf.ui/src;../org.eclipse.ecf.presence.collab.ui/src;../org.eclipse.ecf.osgi.services.discovery/src;../org.eclipse.ecf.examples.provider.trivial/src;../org.eclipse.ecf.storage/src;../org.eclipse.ecf.remoteservice.ui/src;../org.eclipse.ecf.server/src;../org.eclipse.ecf.osgi.services.discovery.local/src;../org.eclipse.ecf.provider.r_osgi/src;../org.eclipse.ecf.provider.zookeeper/src;../org.eclipse.ecf.remoteservice.eventadmin/src;../org.eclipse.ecf.protocol.bittorrent/src;../org.eclipse.ecf.provider.datashare.nio/src;../org.eclipse.ecf.osgi.services.distribution/src;../org.eclipse.ecf.provider.filetransfer/src;../org.eclipse.ecf.filetransfer.ui/src;../org.eclipse.ecf.remoteservice.rest/src;../org.eclipse.ecf.protocol.msn/src;../org.eclipse.ecf.provider.filetransfer.httpclient/src;../org.eclipse.ecf.discovery.ui/src;../org.eclipse.ecf.remoteservice/src;../org.eclipse.ecf.provider.localdiscovery/src;../org.eclipse.ecf.provider/src;../org.eclipse.ecf.datashare/src;../org.eclipse.ecf.presence.bot/src;../org.eclipse.ecf/src;../org.eclipse.ecf.discovery.ui.edit/src;../org.eclipse.ecf.presence.ui/src;../org.eclipse.ecf.telephony.call/src;../org.eclipse.ecf.sharedobject/src;../org.eclipse.ecf.sync/src;../org.eclipse.ecf.provider.discovery/src;../org.eclipse.ecf.provider.datashare/src;../org.eclipse.ecf.docshare/src;../org.eclipse.ecf.remoteservice.soap/src;../org.eclipse.ecf.discovery/src;../org.eclipse.ecf.provider.remoteservice/src;../org.eclipse.ecf.provider.jmdns/jmdns;../org.eclipse.ecf.provider.irc.bot/src;../org.eclipse.ecf.presence/src;../org.eclipse.ecf.telephony.call.ui/src;../org.eclipse.ecf.examples.remoteservices.hello/src;../org.eclipse.ecf.provider.xmpp/src;../org.eclipse.ecf.discovery.ui.model/src;../org.eclipse.ecf.example.clients/src;../org.eclipse.ecf.server.generic/src;../org.eclipse.ecf.filetransfer/src;../org.eclipse.ecf.provider.jmdns/src" splitindex="true" use="true" version="true"/>
+        <javadoc access="protected" additionalparam="-J-Xmx256m  -tag model:a:Model -tag generated:a:Generated -tag noreference:tcmf:DoNotReference -tag ordered:a:Ordered -tag noimplement:a:NoImplement -tag noextend:a:NoExtend " author="false" classpath="../org.apache.log4j;../org.eclipse.ecf.remoteservice/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.concurrent_1.0.100.v20100503.jar;../org.eclipse.ecf.presence.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.resources_3.6.0.v20100526-0737.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.security_1.0.200.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.swt_3.6.0.v3650b.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.osgi.services_3.2.100.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.preferences_3.3.0.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.registry_3.5.0.v20100503.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.expressions_3.4.200.v20100505.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.workbench.texteditor_3.6.0.v20100520-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.jobs_3.5.0.v20100515.jar;../org.eclipse.emf.ecore.change/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui_3.6.0.I20100603-1100.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.runtime_3.6.0.v20100505.jar;../org.eclipse.ecf.provider.remoteservice/bin;../org.eclipse.ecf.presence/bin;../org.eclipse.ecf.provider.xmpp/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.contenttype_3.4.100.v20100505-1235.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.forms_3.5.0.v20100427.jar;../org.eclipse.ecf.provider.irc/lib/irclib.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.jface.text_3.6.0.v20100526-0800.jar;../org.eclipse.ecf/bin;../org.eclipse.ecf.provider.datashare/bin;../org.eclipse.ecf.discovery.ui.edit/bin;../org.jivesoftware.smack/bin;../org.eclipse.ecf.sync/bin;C:\eclipse3.6rc4\eclipse\plugins\org.apache.commons.httpclient_3.1.0.v201005080502.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.net_1.2.100.I20100511-0800.jar;../org.eclipse.ecf.provider.filetransfer/bin;../org.eclipse.ecf.identity/bin;../org.eclipse.emf.ecore/bin;../org.eclipse.ecf.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.jface_3.6.0.I20100601-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.filebuffers_3.5.100.v20100520-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.common_3.6.0.v20100503.jar;../org.jivesoftware.smack/jars/xpp.jar;../org.eclipse.emf.edit/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.runtime.compatibility.registry_3.3.0.v20100520\runtime_registry_compatibility.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.editors_3.6.0.v20100520-0800.jar;../org.eclipse.ecf.provider.irc/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.equinox.app_1.3.0.v20100512.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.ide_3.6.0.I20100601-0800.jar;../org.eclipse.ecf.telephony.call/bin;../org.eclipse.ecf.sharedobject/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.workbench_3.6.0.I20100603-1100.jar;../org.eclipse.ecf.provider.datashare.nio/bin;C:\eclipse3.6rc4\eclipse\plugins\org.objectweb.asm_3.2.0.v200909071300.jar;../org.eclipse.emf.edit.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.osgi_3.6.0.v20100517.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.text_3.5.0.v20100601-1300.jar;../org.eclipse.ecf.filetransfer/bin;../org.eclipse.ecf.provider/bin;../ch.ethz.iks.slp/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.views_3.5.0.I20100527-0800.jar;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.ui.console_3.5.0.v20100526.jar;../org.eclipse.ecf.discovery/bin;../org.eclipse.ecf.datashare/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.commands_3.6.0.I20100512-1500.jar;../ch.ethz.iks.r_osgi.remote/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.core.filesystem_1.3.0.v20100526-0737.jar;../org.eclipse.emf.common.ui/bin;C:\eclipse3.6rc4\eclipse\plugins\org.eclipse.swt.win32.win32.x86_3.6.0.v3650b.jar;../org.eclipse.ecf.discovery.ui.model/bin;../org.eclipse.emf.common/bin;../org.eclipse.ecf.discovery.ui/bin;../org.eclipse.ecf.osgi.services.discovery/bin" destdir="html/reference/api" doctitle="Eclipse Communication Framework 3.3.0" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="org.eclipse.ecf.ui.hyperlink,org.eclipse.ecf.core.sharedobject.util,org.eclipse.ecf.filetransfer.ui,org.eclipse.ecf.core.sharedobject.provider,org.eclipse.ecf.example.clients,org.eclipse.ecf.presence.im,org.eclipse.ecf.ui.actions,org.eclipse.ecf.telephony.call.ui.actions,org.eclipse.ecf.core.provider,org.eclipse.ecf.discovery.service,org.eclipse.ecf.presence.bot,org.eclipse.ecf.provider.zookeeper,org.eclipse.ecf.provider.remoteservice,org.eclipse.ecf.core.sharedobject.events,org.eclipse.ecf.provider.jslp.identity,org.eclipse.ecf.remoteservice.soap.identity,org.eclipse.ecf.telephony.call.events,org.eclipse.ecf.presence.collab.ui,org.eclipse.ecf.core.identity,org.eclipse.ecf.provider.remoteservice.generic,org.eclipse.ecf.remoteservice.soap.client,org.eclipse.ecf.docshare,org.eclipse.ecf.provider.irc.bot,org.eclipse.ecf.presence.collab.ui.url,org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.presence.roster,org.eclipse.ecf.core.events,org.eclipse.ecf.provider.zookeeper.node.internal,org.eclipse.ecf.discovery.ui.model,org.eclipse.ecf.provider.discovery,org.eclipse.ecf.provider.filetransfer.events.socket,org.eclipse.ecf.provider.generic.gmm,org.eclipse.ecf.examples.remoteservices.hello,org.eclipse.ecf.presence.collab.ui.screencapture,org.eclipse.ecf.provider.zookeeper.core,org.eclipse.ecf.provider.filetransfer.outgoing,org.eclipse.ecf.filetransfer.events,org.eclipse.ecf.datashare.service,org.eclipse.ecf.filetransfer.ui.actions,org.eclipse.ecf.core.sharedobject,org.eclipse.ecf.filetransfer.events.socket,org.eclipse.ecf.sync.doc,org.eclipse.ecf.ui.util,org.eclipse.ecf.core.sharedobject.security,org.eclipse.ecf.provider.zookeeper.core.internal,org.eclipse.ecf.remoteservice.client,org.eclipse.ecf.provider.filetransfer.retrieve,org.eclipse.ecf.core.user,org.eclipse.ecf.presence.chatroom,org.eclipse.ecf.provider.filetransfer.identity,org.eclipse.ecf.remoteservices.ui,org.eclipse.ecf.provider.generic,org.eclipse.ecf.presence.ui.dnd,org.eclipse.ecf.presence.bot.application,org.eclipse.ecf.provider.comm,org.eclipse.ecf.ui.screencapture,org.eclipse.ecf.presence.search.message,org.eclipse.ecf.provider.jslp.container,org.eclipse.ecf.provider.ui.wizards,org.eclipse.ecf.ui.dialogs,org.eclipse.ecf.ui.wizards,org.eclipse.ecf.presence.history,org.eclipse.ecf.presence.collab.ui.view,org.eclipse.ecf.core.start,org.eclipse.ecf.osgi.services.distribution,org.eclipse.ecf.docshare.messages,org.eclipse.ecf.provider.filetransfer.browse,org.eclipse.ecf.remoteservice.rest.util,org.eclipse.ecf.provider.localdiscovery,org.eclipse.ecf.core.security,org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.discovery.ui.model.resource,org.eclipse.ecf.provider.irc.bot.handler,org.eclipse.ecf.remoteservice.rest.client,org.eclipse.ecf.presence.ui.menu,org.eclipse.ecf.protocol.msn.events,org.eclipse.ecf.presence.search,org.eclipse.ecf.provider.zookeeper.util,org.eclipse.ecf.ui,org.eclipse.ecf.provider.comm.tcp,org.eclipse.ecf.protocol.msn,org.eclipse.ecf.remoteservice.util.tracker,org.eclipse.ecf.presence.bot.impl,org.eclipse.ecf.presence.ui,org.eclipse.ecf.storage,org.eclipse.ecf.remoteservice.eventadmin,org.eclipse.ecf.filetransfer.events.socketfactory,org.eclipse.ecf.presence.ui.chatroom,org.eclipse.ecf.server.generic,org.eclipse.ecf.provider.xmpp.identity,org.eclipse.ecf.docshare.menu,org.eclipse.ecf.datashare.events,org.eclipse.ecf.provider.datashare.nio,org.eclipse.ecf.example.clients.applications,org.eclipse.ecf.provider.jmdns.identity,org.eclipse.ecf.telephony.call.service,org.eclipse.ecf.filetransfer.identity,org.eclipse.ecf.telephony.call,org.eclipse.ecf.server.generic.app,org.eclipse.ecf.datashare,org.eclipse.ecf.provider.xmpp,org.eclipse.ecf.discovery.ui.model.provider,org.eclipse.ecf.provider.r_osgi.identity,org.eclipse.ecf.remoteservice.util,org.eclipse.ecf.sync,org.eclipse.ecf.discovery.ui.model.impl,org.eclipse.ecf.presence.collab.ui.console,org.eclipse.ecf.provider.jmdns.container,org.eclipse.ecf.datashare.mergeable,org.eclipse.ecf.discovery.identity,org.eclipse.ecf.provider.util,org.eclipse.ecf.presence.ui.roster,org.eclipse.ecf.remoteservice.rest.identity,org.eclipse.ecf.examples.provider.trivial,org.eclipse.ecf.filetransfer.service,org.eclipse.ecf.discovery.ui.model.util,org.eclipse.ecf.presence.service,org.eclipse.ecf.core.util,org.eclipse.ecf.provider.filetransfer.httpclient,org.eclipse.ecf.provider.filetransfer.util,org.eclipse.ecf.core.jobs,org.eclipse.ecf.osgi.services.discovery.local,org.eclipse.ecf.remoteservice.events,org.eclipse.ecf.core.status" source="1.5" sourcefiles="../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryPropertyTesterUtil.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceContainerAdapter.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceRegistration.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceHelper.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerTypeDescription.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerManager.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceProperties.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFile.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceProperties.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferJob.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferPausable.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClientManager.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceReference.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/UserCancelledException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/BrowseFileTransferException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransferRequestListener.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainerAdapterFactory.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/SharedObjectDatashareContainerAdapter.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteCallListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceProxy.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IIncomingFileTransfer.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerCreateException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteFilter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRateControl.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainer.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceID.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileAttributes.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerManagerListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceInfo.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IProxyDiscoveryListener.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileRangeSpecification.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageEvent.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferInfo.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/Presence.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceSender.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IReliableContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceListener.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServiceEndpointDescription.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerAuthenticationException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/DiscoveryContainerConfig.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteCallListener.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresenceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferRunnable.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IMMessage.java,../org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/RemoteServicePublication.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteCall.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/InvalidFileRangeSpecificationException.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransferListener.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/BaseContainer.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IAccountManager.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerAdapterFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/SendFileTransferException.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerFactory.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRetrieveFileTransferContainerAdapter.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceID.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerConfig.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IncomingFileTransferException.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/ISendFileTransferContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessageListener.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemRequest.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IPresence.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/RemoteFileSystemException.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceTypeEvent.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/AbstractPresenceContainer.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IOutgoingFileTransfer.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/AbstractContainer.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceInfo.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IFileTransfer.java,../org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/DatashareContainerAdapter.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java,../org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/IIMMessage.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainerListener.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/FileTransferInfo.java,../org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IContainerServiceInfoAdapter.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceClient.java,../org.eclipse.ecf.server/src/org/eclipse/ecf/server/IServiceHost.java,../org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java,../org.eclipse.ecf.filetransfer/src/org/eclipse/ecf/filetransfer/IRemoteFileSystemBrowserContainerAdapter.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/IContainer.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IRemoteServiceEndpointDescription.java,../org.eclipse.ecf.osgi.services.discovery/src/org/eclipse/ecf/osgi/services/discovery/IHostDiscoveryListener.java,../org.eclipse.ecf/src/org/eclipse/ecf/core/ContainerConnectException.java" sourcepath="../org.eclipse.ecf.provider.jslp/src;../org.eclipse.ecf.provider.ui/src;../org.eclipse.ecf.identity/src;../org.eclipse.ecf.ui/src;../org.eclipse.ecf.presence.collab.ui/src;../org.eclipse.ecf.osgi.services.discovery/src;../org.eclipse.ecf.examples.provider.trivial/src;../org.eclipse.ecf.storage/src;../org.eclipse.ecf.remoteservice.ui/src;../org.eclipse.ecf.server/src;../org.eclipse.ecf.osgi.services.discovery.local/src;../org.eclipse.ecf.provider.r_osgi/src;../org.eclipse.ecf.provider.zookeeper/src;../org.eclipse.ecf.remoteservice.eventadmin/src;../org.eclipse.ecf.protocol.bittorrent/src;../org.eclipse.ecf.provider.datashare.nio/src;../org.eclipse.ecf.osgi.services.distribution/src;../org.eclipse.ecf.provider.filetransfer/src;../org.eclipse.ecf.filetransfer.ui/src;../org.eclipse.ecf.remoteservice.rest/src;../org.eclipse.ecf.protocol.msn/src;../org.eclipse.ecf.provider.filetransfer.httpclient/src;../org.eclipse.ecf.discovery.ui/src;../org.eclipse.ecf.remoteservice/src;../org.eclipse.ecf.provider.localdiscovery/src;../org.eclipse.ecf.provider/src;../org.eclipse.ecf.datashare/src;../org.eclipse.ecf.presence.bot/src;../org.eclipse.ecf/src;../org.eclipse.ecf.discovery.ui.edit/src;../org.eclipse.ecf.presence.ui/src;../org.eclipse.ecf.telephony.call/src;../org.eclipse.ecf.sharedobject/src;../org.eclipse.ecf.sync/src;../org.eclipse.ecf.provider.discovery/src;../org.eclipse.ecf.provider.datashare/src;../org.eclipse.ecf.docshare/src;../org.eclipse.ecf.remoteservice.soap/src;../org.eclipse.ecf.discovery/src;../org.eclipse.ecf.provider.remoteservice/src;../org.eclipse.ecf.provider.jmdns/jmdns;../org.eclipse.ecf.provider.irc.bot/src;../org.eclipse.ecf.presence/src;../org.eclipse.ecf.telephony.call.ui/src;../org.eclipse.ecf.examples.remoteservices.hello/src;../org.eclipse.ecf.provider.xmpp/src;../org.eclipse.ecf.discovery.ui.model/src;../org.eclipse.ecf.example.clients/src;../org.eclipse.ecf.server.generic/src;../org.eclipse.ecf.filetransfer/src;../org.eclipse.ecf.provider.jmdns/src" splitindex="true" use="true" version="true"/>
     </target>
 </project>
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/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/.settings/org.eclipse.jdt.core.prefs
index 67237f6..abb12a4 100644
--- a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/.settings/org.eclipse.jdt.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.consumer/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,74 @@
-#Mon Oct 19 12:13:39 PDT 2009
-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
+#Tue Jan 11 20:02:54 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/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/build.properties b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/build.properties
index 4c1d3c1..0449e52 100644
--- a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.ds.consumer/build.properties
@@ -3,5 +3,6 @@
                .,\
                OSGI-INF/dataprocessorclient.xml,\
                plugin.xml,\
-               bundle.properties
+               bundle.properties,\
+               OSGI-INF/
 source.. = src/
diff --git a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/.settings/org.eclipse.jdt.core.prefs
index 762a0ce..d65376c 100644
--- a/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/.settings/org.eclipse.jdt.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.loadbalancing.server/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,74 @@
-#Mon Oct 19 09:00:48 PDT 2009
-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
+#Tue Jan 11 20:02:06 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.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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
similarity index 90%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.project
index 1acd148..ef31131 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.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.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>
+<?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/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
copy from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
copy to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
index 122a97b..a97b222 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,8 @@
-#Mon Oct 11 08:19:28 MSD 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#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.poststarted2/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.poststarted2/build.properties
rename to examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
index aa1a008..8665ac2 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/build.properties
@@ -1,5 +1,6 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-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%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
copy 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/.classpath b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.classpath
new file mode 100644
index 0000000..07a958e
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.classpath
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+</classpath>

diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.project
similarity index 88%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
copy to examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.project
index 1acd148..c307390 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.project
@@ -1,28 +1,28 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.examples.remoteservices.hello.consumer.edef</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.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
copy from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
copy to examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.settings/org.eclipse.jdt.core.prefs
index 122a97b..4d7f143 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,8 @@
-#Mon Oct 11 08:19:28 MSD 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#Thu Feb 03 17:54:54 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/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.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 examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..9f2f23b 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/.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
+#Thu Feb 03 17:54:54 PST 2011

+eclipse.preferences.version=1

+pluginProject.extensions=false

+resolve.requirebundle=false

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fa04dd8
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF RemoteServices Hello Example Endpoint Description Extender Format
+Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.consumer.edef
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Remote-Service: generic_hello.xml
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/about.html
similarity index 100%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
rename to examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/about.html
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/build.properties b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/build.properties
new file mode 100644
index 0000000..815f6b9
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/build.properties
@@ -0,0 +1,6 @@
+bin.includes = META-INF/,\

+               .,\

+               generic_hello.xml,\

+               about.html

+src.includes = generic_hello.xml,\

+               about.html

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
new file mode 100644
index 0000000..6fe7d65
--- /dev/null
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">

+  <endpoint-description>

+    <property name="ecf.endpoint.id.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://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.examples.remoteservices.hello.IHello</value>

+      </array>

+    </property>

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

+      <array>

+        <value>ecf.generic.server</value>

+      </array>

+    </property>

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

+      <array>

+        <value>passByValue</value>

+        <value>exactlyOnce</value>

+        <value>ordered</value>

+      </array>

+    </property>

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

+    <property name="service.imported" value-type="String" value="true"/>

+    <property name="service.imported.configs" value-type="String">

+      <array>

+        <value>ecf.generic.server</value>

+      </array>

+    </property>

+  </endpoint-description>

+</endpoint-descriptions>

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..b93b277 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,51 @@
-<?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.1.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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF
index 1483fa1..7a9e3b7 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.consumer;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.examples.remoteservices.hello.consumer.Activator
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
@@ -11,7 +11,6 @@
 Import-Package: org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
- org.eclipse.ecf.osgi.services.discovery;version="1.1.0",
  org.eclipse.ecf.osgi.services.distribution;version="1.0.0",
  org.eclipse.ecf.remoteservice,
  org.eclipse.ecf.remoteservice.events,
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/OSGI-INF/remote-service/hello-service-description-generic.xml b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/OSGI-INF/remote-service/hello-service-description-generic.xml
deleted file mode 100644
index b46e9e1..0000000
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/OSGI-INF/remote-service/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/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/build.properties b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/build.properties
index f2d5daa..83fd982 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/build.properties
@@ -5,7 +5,6 @@
                about.html,\
                bundle.properties,\
                plugin.xml,\
-               OSGI-INF/,\
                products/
 src.includes = about.html,\
                bundle.properties,\
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 60%
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 df3b907..0faf6c5 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,51 +1,60 @@
-<?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">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog -containerType ecf.generic.client</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.consumer"/>
-      <plugin id="org.eclipse.ecf.identity"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery"/>
-      <plugin id="org.eclipse.ecf.osgi.services.discovery.local"/>
-      <plugin id="org.eclipse.ecf.osgi.services.distribution"/>
-      <plugin id="org.eclipse.ecf.provider"/>
-      <plugin id="org.eclipse.ecf.provider.localdiscovery"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </plugins>
-
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

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

+

+   <launcherArgs>

+      <programArgs>-console -consoleLog -containerType ecf.generic.client</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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

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

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

+      <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.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 0e6b690..054f172 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,50 +1,56 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog -containerType ecf.generic.client</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.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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </plugins>
-
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-console -consoleLog -containerType ecf.generic.client</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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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.eclipse.osgi.services.remoteserviceadmin"/>

+   </plugins>

+

+

+</product>

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 325b3bb..d6624a3 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,54 +1,61 @@
-<?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="1.0.0" 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="ch.ethz.iks.r_osgi.remote"/>
-      <plugin id="ch.ethz.iks.slp"/>
-      <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.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.jslp"/>
-      <plugin id="org.eclipse.ecf.provider.r_osgi"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-
-</product>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.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="ch.ethz.iks.r_osgi.remote"/>

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

+      <plugin id="org.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

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

+      <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.eclipse.osgi.services.remoteserviceadmin"/>

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

+   </plugins>

+

+

+</product>

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 82588f7..8776393 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,63 +1,66 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

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

       <vmArgs>-Dzoodiscovery.autoStart=true;
 -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:2001;clientPort=2002
 -Xms40m
--Xmx512m</vmArgs>
-      <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.apache.log4j"/>
-      <plugin id="org.apache.zookeeper"/>
-      <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.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.remoteservice"/>
-      <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </plugins>
-
-
-</product>
+-Xmx512m</vmArgs>

+      <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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

+      <plugin id="org.apache.hadoop.zookeeper"/>

+      <plugin id="org.apache.log4j"/>

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

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

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

+      <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.eclipse.osgi.services.remoteserviceadmin"/>

+   </plugins>

+

+

+</product>

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 1731482..388c526 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,60 +1,66 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console  -consoleLog</programArgs>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

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

       <vmArgs>-Dzoodiscovery.autoStart=true;
 -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:2001;clientPort=2002
 -Xms40m
--Xmx512m</vmArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <windowImages/>
-
-   <launcher>
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-      <plugin id="ch.ethz.iks.r_osgi.remote"/>
-      <plugin id="org.apache.log4j"/>
-      <plugin id="org.apache.zookeeper"/>
-      <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.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.r_osgi"/>
-      <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-
-</product>
+-Xmx512m</vmArgs>

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

+   </launcherArgs>

+

+   <windowImages/>

+

+   <launcher>

+      <solaris/>

+      <win useIco="false">

+         <bmp/>

+      </win>

+   </launcher>

+

+   <vm>

+   </vm>

+

+   <plugins>

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

+      <plugin id="org.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

+      <plugin id="org.apache.hadoop.zookeeper"/>

+      <plugin id="org.apache.log4j"/>

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

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

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

+      <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.eclipse.osgi.services.remoteserviceadmin"/>

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

+   </plugins>

+

+

+</product>

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 b6bb0bb..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
@@ -16,11 +16,7 @@
 import org.eclipse.ecf.examples.remoteservices.hello.HelloMessage;
 import org.eclipse.ecf.examples.remoteservices.hello.IHello;
 import org.eclipse.ecf.examples.remoteservices.hello.IHelloAsync;
-import org.eclipse.ecf.osgi.services.discovery.IProxyDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.LoggingProxyDiscoveryListener;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.osgi.services.distribution.IProxyDistributionListener;
-import org.eclipse.ecf.osgi.services.distribution.LoggingProxyDistributionListener;
 import org.eclipse.ecf.remoteservice.IAsyncCallback;
 import org.eclipse.ecf.remoteservice.IRemoteService;
 import org.eclipse.ecf.remoteservice.IRemoteServiceProxy;
@@ -28,7 +24,6 @@
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.equinox.concurrent.future.IFuture;
-import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.InvalidSyntaxException;
@@ -65,50 +60,17 @@
 		// upon discovery via the IProxyContainerFinder/DefaultProxyContainerFinder.  
 		getContainerFactory().createContainer(containerType);
 
-		// Register osgi discovery and distribution listeners
-		registerRemoteServiceListeners();
-
 		// Create service tracker to track IHello instances that have the 'service.imported'
 		// property set (as defined by OSGi 4.2 remote services spec).
 		helloServiceTracker = new ServiceTracker(bundleContext,
 				createRemoteFilter(), this);
 		helloServiceTracker.open();
 
-		startLocalDiscoveryIfPresent();
-		
 		waitForDone();
 
 		return IApplication.EXIT_OK;
 	}
 
-	private void registerRemoteServiceListeners() {
-		// Register proxy discovery listener to log the publish/unpublish of remote services.  
-		// This LoggingProxyDiscoveryListener logs the publication of OSGi remote services...so 
-		// that the discovery can be more easily debugged.
-		// Note that other IProxyDiscoveryListeners may be created and registered, and
-		// all will be notified of publish/unpublish events
-		discoveryListenerRegistration = bundleContext.registerService(IProxyDiscoveryListener.class.getName(), new LoggingProxyDiscoveryListener(), null);
-		// Register proxy distribution listener to log the register/unregister of remote services.  
-		// This LoggingProxyDistributionListener logs the register/unregister of OSGi remote services...so 
-		// that the distribution can be more easily debugged.
-		// Note that other IProxyDistributionListener may be created and registered, and
-		// all will be notified of register/unregister events
-		distributionListenerRegistration = bundleContext.registerService(IProxyDistributionListener.class.getName(), new LoggingProxyDistributionListener(), null);
-	}
-
-	private void startLocalDiscoveryIfPresent() {
-		Bundle[] bundles = bundleContext.getBundles();
-		for(int i=0; i < bundles.length; i++) {
-			if (bundles[i].getSymbolicName().equals("org.eclipse.ecf.osgi.services.discovery.local")) {
-				try {
-					bundles[i].start();
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-		}
-	}
-
 	private Filter createRemoteFilter() throws InvalidSyntaxException {
 		// This filter looks for IHello instances that have the 
 		// 'service.imported' property set, as specified by OSGi 4.2
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/build.properties b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/build.properties
index c3e9d32..489a858 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/build.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/build.properties
@@ -5,7 +5,8 @@
                about.html,\
                bundle.properties,\
                plugin.xml,\
-               products/
+               products/,\
+               OSGI-INF/
 source.. = src/
 src.includes = bundle.properties,\
                about.html,\
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..e29cc2e 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,71 @@
-<?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.1.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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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 04e12ad..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,15 +2,14 @@
 bin.includes = META-INF/,\
                .,\
                OSGI-INF/hello.xml,\
-               plugin.xml,\
                about.html,\
                bundle.properties,\
-               products/
+               products/,\
+               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..03e662c 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,70 @@
-<?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.1.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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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..fddddc1 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,57 @@
-<?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" version="1.0.1.qualifier" 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>

+

+   <launcher>

+      <solaris/>

+      <win useIco="false">

+         <bmp/>

+      </win>

+   </launcher>

+

+   <vm>

+   </vm>

+

+   <plugins>

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

+      <plugin id="org.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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.host/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF
index 1a7fb05..7b7d39b 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.host;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 3.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.examples.remoteservices.hello.host.Activator
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: J2SE-1.4,
@@ -12,7 +12,6 @@
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
  org.eclipse.ecf.examples.remoteservices.hello.impl;version="3.0.0",
- org.eclipse.ecf.osgi.services.discovery;version="1.1.0",
  org.eclipse.ecf.osgi.services.distribution;version="1.0.0",
  org.eclipse.equinox.app;version="1.0.0",
  org.eclipse.osgi.framework.console,
diff --git "a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
new file mode 100644
index 0000000..5177cc5
--- /dev/null
+++ "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050edef,generic\051.product"
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-containerType ecf.generic.server

+-containerId ecftcp://localhost:3787/server

+-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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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.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 a1f1d34..e91cfa4 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,58 +1,64 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

       <programArgs>-containerType ecf.generic.server
 -containerId ecftcp://localhost:3787/server
 -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.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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </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>
+-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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

+      <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.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,rosgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zeroconf,rosgi\051.product"
index 3eee248..f06b94e 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,53 +1,59 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.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="ch.ethz.iks.r_osgi.remote"/>
-      <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.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.r_osgi"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-
-</product>
+-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="ch.ethz.iks.r_osgi.remote"/>

+      <plugin id="org.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

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

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

+      <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.eclipse.osgi.services.remoteserviceadmin"/>

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

+   </plugins>

+

+

+</product>

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 26cfd7c..4723536 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,67 +1,72 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console 
--consoleLog
--containerType ecf.generic.server
--containerId ecftcp://localhost:5782/server</programArgs>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

+      <programArgs>-console

+-consoleLog

+-containerType ecf.generic.server

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

       <vmArgs>-Dzoodiscovery.dataDir=zookeeperdata2
 -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:2002;clientPort=2001
 -Xms40m
--Xmx512m</vmArgs>
-      <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.apache.log4j"/>
-      <plugin id="org.apache.zookeeper"/>
-      <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.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.remoteservice"/>
-      <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-   </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>
+-Xmx512m</vmArgs>

+      <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.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

+      <plugin id="org.apache.hadoop.zookeeper"/>

+      <plugin id="org.apache.log4j"/>

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

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

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

+      <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.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 \050zookeeper,rosgi\051.product" "b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host \050zookeeper,rosgi\051.product"
index 38bc2e5..efd7ec8 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,60 +1,66 @@
-<?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="1.0.0" useFeatures="false" includeLaunchers="false">
-
-   <configIni use="default">
-   </configIni>
-
-   <launcherArgs>
-      <programArgs>-console -consoleLog</programArgs>
+<?xml version="1.0" encoding="UTF-8"?>

+<?pde version="3.5"?>

+

+<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.1.qualifier" useFeatures="false" includeLaunchers="false">

+

+   <configIni use="default">

+   </configIni>

+

+   <launcherArgs>

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

       <vmArgs>-Dzoodiscovery.dataDir=zookeeperdata2
 -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:2002;clientPort=2001
 -Xms40m
--Xmx512m</vmArgs>
-      <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
-   </launcherArgs>
-
-   <windowImages/>
-
-   <launcher>
-      <solaris/>
-      <win useIco="false">
-         <bmp/>
-      </win>
-   </launcher>
-
-   <vm>
-   </vm>
-
-   <plugins>
-      <plugin id="ch.ethz.iks.r_osgi.remote"/>
-      <plugin id="org.apache.log4j"/>
-      <plugin id="org.apache.zookeeper"/>
-      <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.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.r_osgi"/>
-      <plugin id="org.eclipse.ecf.provider.zookeeper"/>
-      <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.preferences"/>
-      <plugin id="org.eclipse.equinox.registry"/>
-      <plugin id="org.eclipse.osgi"/>
-      <plugin id="org.eclipse.osgi.services"/>
-      <plugin id="org.objectweb.asm"/>
-   </plugins>
-
-
-</product>
+-Xmx512m</vmArgs>

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

+   </launcherArgs>

+

+   <windowImages/>

+

+   <launcher>

+      <solaris/>

+      <win useIco="false">

+         <bmp/>

+      </win>

+   </launcher>

+

+   <vm>

+   </vm>

+

+   <plugins>

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

+      <plugin id="org.apache.felix.gogo.command"/>

+      <plugin id="org.apache.felix.gogo.runtime"/>

+      <plugin id="org.apache.felix.gogo.shell"/>

+      <plugin id="org.apache.hadoop.zookeeper"/>

+      <plugin id="org.apache.log4j"/>

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

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

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

+      <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.eclipse.osgi.services.remoteserviceadmin"/>

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

+   </plugins>

+

+

+</product>

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java
index f0a5861..524de10 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java
@@ -16,11 +16,7 @@
 
 import org.eclipse.ecf.examples.remoteservices.hello.IHello;
 import org.eclipse.ecf.examples.remoteservices.hello.impl.Hello;
-import org.eclipse.ecf.osgi.services.discovery.IHostDiscoveryListener;
-import org.eclipse.ecf.osgi.services.discovery.LoggingHostDiscoveryListener;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.osgi.services.distribution.IHostDistributionListener;
-import org.eclipse.ecf.osgi.services.distribution.LoggingHostDistributionListener;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.osgi.framework.console.CommandProvider;
@@ -49,8 +45,6 @@
 		bundleContext = Activator.getContext();
 		// Process Arguments
 		processArgs(appContext);
-		// Register osgi discovery and distribution listeners
-		registerRemoteServiceListeners();
 		// Finally, register the actual remote service
 		registerHelloRemoteService();
 		// Register console provider. This adds 'start' and 'stop' commands to
@@ -121,30 +115,6 @@
 				helloCommandProvider, props);
 	}
 
-	private void registerRemoteServiceListeners() {
-		// Register host discovery listener to log the publish/unpublish of
-		// remote services.
-		// This LoggingHostDiscoveryListener logs the publication of OSGi remote
-		// services...so
-		// that the discovery can be more easily debugged.
-		// Note that other IHostDiscoveryListener may be created and registered,
-		// and
-		// all will be notified of publish/unpublish events
-		discoveryListenerRegistration = bundleContext.registerService(IHostDiscoveryListener.class.getName(),
-				new LoggingHostDiscoveryListener(), null);
-		// Register host distribution listener to log the register/unregister of
-		// remote services.
-		// This LoggingHostDistributionListener logs the register/unregister of
-		// OSGi remote services...so
-		// that the distribution can be more easily debugged.
-		// Note that other IHostDistributionListener may be created and
-		// registered, and
-		// all will be notified of register/unregister events
-		distributionListenerRegistration = bundleContext.registerService(
-				IHostDistributionListener.class.getName(),
-				new LoggingHostDistributionListener(), null);
-	}
-
 	private void processArgs(IApplicationContext appContext) {
 		String[] originalArgs = (String[]) appContext.getArguments().get(
 				"application.args");
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/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/.settings/org.eclipse.jdt.core.prefs
similarity index 89%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
rename to examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/.settings/org.eclipse.jdt.core.prefs
index 9f29bbb..027f768 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/.settings/org.eclipse.jdt.core.prefs
@@ -1,73 +1,68 @@
-#Mon Oct 11 15:03:13 PDT 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
+#Tue Jan 11 19:59:24 PST 2011

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=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=disabled

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

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

+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

diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/plugin.properties b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/plugin.properties
index 2020cc5..c650eed 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/plugin.properties
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/plugin.properties
@@ -7,4 +7,4 @@
  * Contributors: Pavel Samolisov - initial API and implementation
  ******************************************************************************/
 plugin.provider=Eclipse.org - ECF
-plugin.name=RSS/Atom support example for ECF REST remoteservices
+plugin.name=ECF REST RSS/Atom Support
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.console/plugin.properties b/framework/bundles/org.eclipse.ecf.console/plugin.properties
index aacd628..4a010e4 100644
--- a/framework/bundles/org.eclipse.ecf.console/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.console/plugin.properties
@@ -1,10 +1,10 @@
 ############################################################################
-# Copyright (c) 2007 Composent Inc., IBM Corp. and others.
+# Copyright (c) 2011 Composent Inc., 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
 #
 ############################################################################
-plugin.name=ECF Console
+plugin.name=ECF OSGi Console Provider
 plugin.provider=Eclipse.org - ECF
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui.properties.tabbed/plugin.properties b/framework/bundles/org.eclipse.ecf.discovery.ui.properties.tabbed/plugin.properties
index f8869c0..5bd91a3 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui.properties.tabbed/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui.properties.tabbed/plugin.properties
@@ -6,6 +6,6 @@
 * http://www.eclipse.org/legal/epl-v10.html
 *
 *****************************************************************************/
-pluginName=ECF Tabbed Properties for Discovery UI Fragment
+pluginName=ECF Discovery UI Tabbed Properties Fragment
 providerName=Eclipse.org - ECF
 
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/build.properties b/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/build.properties
index 2601b9b..2083e23 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/build.properties
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/build.properties
@@ -9,3 +9,4 @@
 source.. = src/
 src.includes = about.html,\
                icons/
+additional.bundles = org.eclipse.equinox.concurrent
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/plugin.properties b/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/plugin.properties
index 7e8d78e..80611e1 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui.userinput/plugin.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF discovery provider based on user input
+plugin.name=ECF Discovery UI UserInput
 plugin.provider=Eclipse.org - ECF
 lookup.name=Lookup Service
 lookup.category=Discovery Category
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.core.prefs
index e8e43e5..92be65e 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,80 +1,332 @@
 #Mon Feb 09 22:27:23 CET 2009
 eclipse.preferences.version=1
+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.maxProblemPerUnit=100
+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=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+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=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.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=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=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=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=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.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=ignore
+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=ignore
+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=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+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=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.unsafeTypeOperation=warning
+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.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.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_annotation=insert
+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
+org.eclipse.jdt.core.incompleteClasspath=error
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.ui.prefs b/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.ui.prefs
index 9bb86c1..497a0fb 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.ui.prefs
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/.settings/org.eclipse.jdt.ui.prefs
@@ -1,8 +1,9 @@
-#Wed Oct 10 22:18:36 EDT 2007
+#Tue Aug 21 11:27:48 CDT 2007
 eclipse.preferences.version=1
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
 formatter_profile=_core
 formatter_settings_version=11
+internal.default.compliance=user
 org.eclipse.jdt.ui.ignorelowercasenames=true
 org.eclipse.jdt.ui.importorder=;
 org.eclipse.jdt.ui.ondemandthreshold=3
@@ -54,4 +55,4 @@
 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
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.properties b/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.properties
index 38c027c..2c28568 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.properties
@@ -9,4 +9,5 @@
 pluginName=ECF Discovery UI
 providerName=Eclipse.org - ECF
 discovery.view=Service Discovery
-
+menu.showIn.label=Show In
+menu.showIn.mnemonic=w
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.xml b/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.xml
index d3c37ba..378956a 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.xml
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/plugin.xml
@@ -23,4 +23,24 @@
             type="org.eclipse.ecf.discovery.ui.model.IServiceInfo">
       </propertyTester>
    </extension>
+  <extension
+        point="org.eclipse.ui.menus">
+     <menuContribution
+           locationURI="popup:org.eclipse.ecf.discovery.ui.DiscoveryView">
+        <menu
+              commandId="org.eclipse.ui.navigate.showInQuickMenu"
+              id="org.eclipse.ecf.discovery.ui.DiscoveryView.showInMenu"
+              label="%menu.showIn.label"
+              mnemonic="%menu.showIn.mnemonic">
+           <dynamic
+                 class="org.eclipse.ui.ExtensionFactory:showInContribution"
+                 id="org.eclipse.ui.menus.dynamicShowInMenu">
+           </dynamic>
+        </menu>
+        <separator
+              name="additions"
+              visible="true">
+        </separator>
+     </menuContribution>
+  </extension>
 </plugin>
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java
index 48013ad..6135e9b 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/discovery/ui/DiscoveryHandlerUtil.java
@@ -25,23 +25,23 @@
 	public static IServiceInfo getActiveIServiceInfoChecked(ExecutionEvent event) throws ExecutionException {
 		ISelection selection = HandlerUtil.getCurrentSelectionChecked(event);
 		org.eclipse.ecf.discovery.ui.model.IServiceInfo serviceInfo = toIServiceInfo(selection);
-		if(serviceInfo == null) {
+		if (serviceInfo == null) {
 			return null;
-		} else {
-			return serviceInfo.getEcfServiceInfo();
 		}
+		return serviceInfo.getEcfServiceInfo();
 	}
+
 	public static IServiceInfo getActiveIServiceInfo(ExecutionEvent event) {
 		ISelection selection = HandlerUtil.getCurrentSelection(event);
 		org.eclipse.ecf.discovery.ui.model.IServiceInfo serviceInfo = toIServiceInfo(selection);
-		if(serviceInfo == null) {
+		if (serviceInfo == null) {
 			return null;
-		} else {
-			return serviceInfo.getEcfServiceInfo();
 		}
+		return serviceInfo.getEcfServiceInfo();
 	}
+
 	private static org.eclipse.ecf.discovery.ui.model.IServiceInfo toIServiceInfo(ISelection selection) {
-		if(selection instanceof IStructuredSelection) {
+		if (selection instanceof IStructuredSelection) {
 			return (org.eclipse.ecf.discovery.ui.model.IServiceInfo) ((IStructuredSelection) selection).getFirstElement();
 		}
 		return null;
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/DiscoveryUIPlugin.java b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/DiscoveryUIPlugin.java
index a7a1045..4e67af0 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/DiscoveryUIPlugin.java
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/DiscoveryUIPlugin.java
@@ -26,8 +26,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final String copyright = "";
-	
+	public static final String copyright = ""; //$NON-NLS-1$
+
 	/**
 	 * Keep track of the singleton.
 	 * <!-- begin-user-doc -->
@@ -35,14 +35,14 @@
 	 * @generated
 	 */
 	public static final DiscoveryUIPlugin INSTANCE = new DiscoveryUIPlugin();
-	
+
 	/**
 	 * Keep track of the singleton.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private static Implementation plugin;
+	static Implementation plugin;
 
 	/**
 	 * Create the instance.
@@ -51,9 +51,7 @@
 	 * @generated
 	 */
 	public DiscoveryUIPlugin() {
-		super
-			(new ResourceLocator [] {
-			});
+		super(new ResourceLocator[] {});
 	}
 
 	/**
@@ -66,7 +64,7 @@
 	public ResourceLocator getPluginResourceLocator() {
 		return plugin;
 	}
-	
+
 	/**
 	 * Returns the singleton instance of the Eclipse plugin.
 	 * <!-- begin-user-doc -->
@@ -77,7 +75,7 @@
 	public static Implementation getPlugin() {
 		return plugin;
 	}
-	
+
 	/**
 	 * The actual implementation of the Eclipse <b>Plugin</b>.
 	 * <!-- begin-user-doc -->
@@ -93,7 +91,7 @@
 		 */
 		public Implementation() {
 			super();
-	
+
 			// Remember the static instance.
 			//
 			plugin = this;
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/property/ServiceTypeTester.java b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/property/ServiceTypeTester.java
index 02a69be..1ecf68a 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/property/ServiceTypeTester.java
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/property/ServiceTypeTester.java
@@ -13,7 +13,6 @@
 
 import java.util.Arrays;
 import java.util.List;
-
 import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.ecf.discovery.ui.model.IServiceInfo;
 import org.eclipse.ecf.discovery.ui.model.IServiceTypeID;
@@ -23,19 +22,18 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
 	 */
-	public boolean test(Object receiver, String property, Object[] args,
-			Object expectedValue) {
-		if(args == null || !(expectedValue instanceof Boolean)) {
+	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+		if (args == null || !(expectedValue instanceof Boolean)) {
 			return false;
 		}
-		boolean expected = ((Boolean)expectedValue).booleanValue();
-		
+		boolean expected = ((Boolean) expectedValue).booleanValue();
+
 		boolean isServiceType = isServiceType(receiver, args);
-		if(expected && isServiceType) {
+		if (expected && isServiceType) {
 			return true;
-		} else if(expected && !isServiceType) {
+		} else if (expected && !isServiceType) {
 			return false;
-		} else if(!expected && isServiceType) {
+		} else if (!expected && isServiceType) {
 			return false;
 		} else {
 			return true;
@@ -45,16 +43,15 @@
 	private boolean isServiceType(Object receiver, Object[] args) {
 		// convert the args to a list we can use for comparison
 		List asList = Arrays.asList(args);
-		
+
 		// extract the sublist from the service types
 		IServiceInfo serviceInfo = (IServiceInfo) receiver;
 		IServiceTypeID serviceTypeId = serviceInfo.getServiceID().getServiceTypeID();
 		List services = serviceTypeId.getEcfServices();
-		if(services.size() < args.length) {
+		if (services.size() < args.length) {
 			return false;
-		} else {
-			List ecfServices = services.subList(0, args.length);
-			return asList.equals(ecfServices);
 		}
+		List ecfServices = services.subList(0, args.length);
+		return asList.equals(ecfServices);
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/statusline/AdapterFactoryStatuslineProvider.java b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/statusline/AdapterFactoryStatuslineProvider.java
index bfd3538..ab65453 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/statusline/AdapterFactoryStatuslineProvider.java
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/statusline/AdapterFactoryStatuslineProvider.java
@@ -15,11 +15,7 @@
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-
+import org.eclipse.jface.viewers.*;
 
 public class AdapterFactoryStatuslineProvider implements ISelectionChangedListener {
 	private ComposedAdapterFactory adapterFactory;
@@ -44,8 +40,7 @@
 			IStructuredSelection ss = (IStructuredSelection) selection;
 			EObject object = (EObject) ss.getFirstElement();
 			if (object != null) { // do we really have a selection?
-				IItemStatusLineProvider itemStatusLineProvider = (IItemStatusLineProvider) adapterFactory
-						.adapt(object, IItemStatusLineProvider.class);
+				IItemStatusLineProvider itemStatusLineProvider = (IItemStatusLineProvider) adapterFactory.adapt(object, IItemStatusLineProvider.class);
 				if (itemStatusLineProvider != null) {
 					statusline.setMessage(itemStatusLineProvider.getStatusLineText(object));
 				} else {
@@ -58,7 +53,7 @@
 
 			}
 		} else {
-			statusline.setMessage("");
+			statusline.setMessage(""); //$NON-NLS-1$
 		}
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/views/DiscoveryView.java b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/views/DiscoveryView.java
index abaf856..55047e8 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/views/DiscoveryView.java
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui/src/org/eclipse/ecf/internal/discovery/ui/views/DiscoveryView.java
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2008 Versant Corp. and others.
+ * Copyright (c) 2010 Remain Software, Versant 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
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    Versant Corp. - initial API and implementation
+ *    Remain Software - 333137 - Show In menu implementation
  *****************************************************************************/
 package org.eclipse.ecf.internal.discovery.ui.views;
 
@@ -17,36 +18,21 @@
 import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.*;
 import org.eclipse.jface.util.LocalSelectionTransfer;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.viewers.*;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSourceAdapter;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.*;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.*;
 import org.eclipse.ui.handlers.CollapseAllHandler;
 import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.part.*;
 
+public class DiscoveryView extends ViewPart implements IShowInSource, ISelectionListener {
 
-public class DiscoveryView extends ViewPart {
-
-	public static final String ID = "org.eclipse.ecf.discovery.ui.DiscoveryView";
+	public static final String ID = "org.eclipse.ecf.discovery.ui.DiscoveryView"; //$NON-NLS-1$
 
 	private DrillDownAdapter drillDownAdapter;
 
@@ -54,6 +40,9 @@
 
 	private CollapseAllHandler collapseHandler;
 
+	private IWorkbenchPart selectedPart;
+
+	private ISelection currentSelection;
 
 	private void contributeToActionBars() {
 		IActionBars bars = getViewSite().getActionBars();
@@ -62,8 +51,9 @@
 	}
 
 	/**
-	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. <!--
-	 * begin-user-doc --> <!-- end-user-doc -->
+	 * This creates a context menu for the viewer and adds a listener as well
+	 * registering the menu for extension. <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
 	 */
 	protected void createContextMenuFor(StructuredViewer viewer) {
 		MenuManager contextMenu = new MenuManager("#PopUp"); //$NON-NLS-1$
@@ -72,64 +62,67 @@
 		Menu menu = contextMenu.createContextMenu(viewer.getControl());
 		viewer.getControl().setMenu(menu);
 		getSite().registerContextMenu(contextMenu, viewer);
-    }
+	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets
+	 * .Composite)
 	 */
 	public void createPartControl(Composite parent) {
 		ComposedAdapterFactory adapterFactory = DiscoveryEditingDomainProvider.eINSTANCE.getAdapterFactory();
-		
+
 		// create the viewer
-		selectionViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
-		selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
-		selectionViewer.setComparator(new ViewerComparator());
-		selectionViewer.setFilters(getViewerFilters());
-		getSite().setSelectionProvider(selectionViewer);
+		setSelectionViewer(new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL));
+		getSelectionViewer().setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+		getSelectionViewer().setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+		getSelectionViewer().setComparator(new ViewerComparator());
+		getSelectionViewer().setFilters(getViewerFilters());
+		getSite().setSelectionProvider(getSelectionViewer());
 
 		// populate the viewer with the model if available
-		EList resources = DiscoveryEditingDomainProvider.eINSTANCE.getEditingDomain().getResourceSet()
-				.getResources();
+		EList resources = DiscoveryEditingDomainProvider.eINSTANCE.getEditingDomain().getResourceSet().getResources();
 		if (resources != null) {
-			selectionViewer.setInput(resources.get(0));
-			selectionViewer.setSelection(new StructuredSelection(resources.get(0)), true);
+			getSelectionViewer().setInput(resources.get(0));
+			getSelectionViewer().setSelection(new StructuredSelection(resources.get(0)), true);
 		}
 
-		new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
-		selectionViewer.addPostSelectionChangedListener(new AdapterFactoryStatuslineProvider(adapterFactory,
-				getViewSite().getActionBars().getStatusLineManager()));
-		
-		drillDownAdapter = new DrillDownAdapter(selectionViewer);
-		createContextMenuFor(selectionViewer);
+		new AdapterFactoryTreeEditor(getSelectionViewer().getTree(), adapterFactory);
+		getSelectionViewer().addPostSelectionChangedListener(new AdapterFactoryStatuslineProvider(adapterFactory, getViewSite().getActionBars().getStatusLineManager()));
+
+		drillDownAdapter = new DrillDownAdapter(getSelectionViewer());
+		createContextMenuFor(getSelectionViewer());
 		hookContextMenu();
 		contributeToActionBars();
-		
+
 		// add collapse handler
 		IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
-		collapseHandler = new CollapseAllHandler(selectionViewer);
+		collapseHandler = new CollapseAllHandler(getSelectionViewer());
 		handlerService.activateHandler(CollapseAllHandler.COMMAND_ID, collapseHandler);
-		
+
 		// add DND support
-		Transfer[] supportedTransfers = { LocalSelectionTransfer.getTransfer() };
-		selectionViewer.addDragSupport(DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE, supportedTransfers, new DragSourceAdapter() {
+		Transfer[] supportedTransfers = {LocalSelectionTransfer.getTransfer()};
+		getSelectionViewer().addDragSupport(DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE, supportedTransfers, new DragSourceAdapter() {
 			public void dragSetData(DragSourceEvent event) {
-				LocalSelectionTransfer.getTransfer().setSelection(selectionViewer.getSelection());
+				LocalSelectionTransfer.getTransfer().setSelection(getSelectionViewer().getSelection());
 			}
 		});
-		
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "org.eclipse.ecf.discovery.ui.ServiceView");
+
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "org.eclipse.ecf.discovery.ui.ServiceView"); //$NON-NLS-1$
+
+		getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
 	}
 
 	/**
-	 * @return
+	 * @return a new empty ViewerFilter
 	 */
 	private ViewerFilter[] getViewerFilters() {
-		//TODO lookup view filters via EP
 		return new ViewerFilter[0];
 	}
 
-	private void fillContextMenu(IMenuManager manager) {
+	void fillContextMenu(IMenuManager manager) {
 		manager.add(new Separator());
 		drillDownAdapter.addNavigationActions(manager);
 
@@ -146,41 +139,77 @@
 	}
 
 	private void hookContextMenu() {
-		MenuManager menuMgr = new MenuManager("#PopupMenu");
+		MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
 		menuMgr.setRemoveAllWhenShown(true);
 		menuMgr.addMenuListener(new IMenuListener() {
-			/* (non-Javadoc)
-			 * @see org.eclipse.jface.action.IMenuListener#menuAboutToShow(org.eclipse.jface.action.IMenuManager)
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.action.IMenuListener#menuAboutToShow(org.eclipse
+			 * .jface.action.IMenuManager)
 			 */
 			public void menuAboutToShow(IMenuManager manager) {
-				//TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=151604
-				// add a menu listener 
-		        // that will fire a selection changed event, in order
-		        // to update the selection in contributed actions
-				selectionViewer.setSelection(selectionViewer.getSelection());
-				
-				DiscoveryView.this.fillContextMenu(manager);
+				// TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=151604
+				// add a menu listener
+				// that will fire a selection changed event, in order
+				// to update the selection in contributed actions
+				getSelectionViewer().setSelection(getSelectionViewer().getSelection());
+
+				fillContextMenu(manager);
 			}
 		});
-		Menu menu = menuMgr.createContextMenu(selectionViewer.getControl());
-		selectionViewer.getControl().setMenu(menu);
-		getSite().registerContextMenu(menuMgr, selectionViewer);
+		Menu menu = menuMgr.createContextMenu(getSelectionViewer().getControl());
+		getSelectionViewer().getControl().setMenu(menu);
+		getSite().registerContextMenu(menuMgr, getSelectionViewer());
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
 	 */
 	public void setFocus() {
-		selectionViewer.getControl().setFocus();
+		getSelectionViewer().getControl().setFocus();
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ui.part.WorkbenchPart#dispose()
 	 */
 	public void dispose() {
 		super.dispose();
-		if(collapseHandler != null) {
+		if (collapseHandler != null) {
 			collapseHandler.dispose();
 		}
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.part.IShowInSource#getShowInContext()
+	 */
+	public ShowInContext getShowInContext() {
+		return new ShowInContext(selectedPart, currentSelection);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.
+	 * IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+	 */
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		this.selectedPart = part;
+		this.currentSelection = selection;
+	}
+
+	public void setSelectionViewer(TreeViewer selectionViewer) {
+		this.selectionViewer = selectionViewer;
+	}
+
+	public TreeViewer getSelectionViewer() {
+		return selectionViewer;
+	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java
index b980615..8edea5c 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceContainerEvent.java
@@ -12,13 +12,11 @@
 import org.eclipse.ecf.core.identity.ID;
 
 /**
- * Base event implementation of {@link IServiceEvent}.  Subclasses
- * may be created as appropriate.
+ * Base event implementation of {@link IServiceEvent}. Subclasses may be created
+ * as appropriate.
  */
 public class ServiceContainerEvent implements IServiceEvent {
 
-	private static final long serialVersionUID = -2704247495748252242L;
-
 	protected IServiceInfo info;
 
 	protected ID containerID;
@@ -28,21 +26,27 @@
 		this.containerID = containerID;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.discovery.IServiceEvent#getServiceInfo()
 	 */
 	public IServiceInfo getServiceInfo() {
 		return info;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.core.events.IContainerEvent#getLocalContainerID()
 	 */
 	public ID getLocalContainerID() {
 		return containerID;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see java.lang.Object#toString()
 	 */
 	public String toString() {
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java
index 18e901b..21d1018 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/ServiceTypeContainerEvent.java
@@ -13,13 +13,11 @@
 import org.eclipse.ecf.discovery.identity.IServiceTypeID;
 
 /**
- * Base event implementation of {@link IServiceEvent}.  Subclasses
- * may be created as appropriate.
+ * Base event implementation of {@link IServiceEvent}. Subclasses may be created
+ * as appropriate.
  */
 public class ServiceTypeContainerEvent implements IServiceTypeEvent {
 
-	private static final long serialVersionUID = -2989101661453584041L;
-
 	protected IServiceTypeID serviceType;
 
 	protected ID containerID;
@@ -29,14 +27,18 @@
 		this.containerID = containerID;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.core.events.IContainerEvent#getLocalContainerID()
 	 */
 	public ID getLocalContainerID() {
 		return containerID;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see java.lang.Object#toString()
 	 */
 	public String toString() {
@@ -45,7 +47,9 @@
 		return buf.toString();
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.ecf.discovery.IServiceTypeEvent#getServiceTypeID()
 	 */
 	public IServiceTypeID getServiceTypeID() {
diff --git a/framework/bundles/org.eclipse.ecf.filetransfer/.settings/org.eclipse.pde.api.tools.prefs b/framework/bundles/org.eclipse.ecf.filetransfer/.settings/org.eclipse.pde.api.tools.prefs
index 16aea9f..ab93531 100644
--- a/framework/bundles/org.eclipse.ecf.filetransfer/.settings/org.eclipse.pde.api.tools.prefs
+++ b/framework/bundles/org.eclipse.ecf.filetransfer/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 14:55:34 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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/framework/bundles/org.eclipse.ecf.identity/.settings/.api_filters b/framework/bundles/org.eclipse.ecf.identity/.settings/.api_filters
new file mode 100644
index 0000000..dfeb7be
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.identity/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<component id="org.eclipse.ecf.identity" version="2">

+    <resource path="src/org/eclipse/ecf/core/util/SystemLogService.java" type="org.eclipse.ecf.core.util.SystemLogService">

+        <filter id="574619656">

+            <message_arguments>

+                <message_argument value="LogService"/>

+                <message_argument value="SystemLogService"/>

+            </message_arguments>

+        </filter>

+    </resource>

+</component>

diff --git a/framework/bundles/org.eclipse.ecf.identity/.settings/org.eclipse.pde.api.tools.prefs b/framework/bundles/org.eclipse.ecf.identity/.settings/org.eclipse.pde.api.tools.prefs
index add1632..ab93531 100644
--- a/framework/bundles/org.eclipse.ecf.identity/.settings/org.eclipse.pde.api.tools.prefs
+++ b/framework/bundles/org.eclipse.ecf.identity/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:13:28 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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/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/plugin.properties b/framework/bundles/org.eclipse.ecf.identity/plugin.properties
index eba4079..aeebc90 100644
--- a/framework/bundles/org.eclipse.ecf.identity/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.identity/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-plugin.name=ECF Identity API
+plugin.name=ECF Core Identity API
 plugin.provider=Eclipse.org - ECF
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..a2f6459 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,12 +400,18 @@
 
 		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);
 			trace(buf.toString());
-			throwable.printStackTrace(System.err);
+			if(throwable != null) {
+			    throwable.printStackTrace(System.err);
+			}
 		}
 	}
 
@@ -431,7 +437,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.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java
index d90b46c..7e1eaad 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java
@@ -1008,7 +1008,6 @@
 		private String getRosterEntryChildrenFromPresence(IRosterEntry entry) {
 			IPresence presence = entry.getPresence();
 			Map properties = presence.getProperties();
-			int fixedEntries = 4;
 			String resourceName = getResourceName(entry.getUser().getID());
 			StringBuffer buffer = new StringBuffer();
 			buffer.append("<form>"); //$NON-NLS-1$
@@ -1024,7 +1023,7 @@
 			buffer.append("<p>"); //$NON-NLS-1$
 			buffer.append(NLS.bind(Messages.RosterWorkbenchAdapterFactory_Resource, ((resourceName == null) ? "" : resourceName))); //$NON-NLS-1$
 			buffer.append("</p>"); //$NON-NLS-1$
-			for (Iterator i = properties.keySet().iterator(); i.hasNext(); fixedEntries++) {
+			for (Iterator i = properties.keySet().iterator(); i.hasNext();) {
 				buffer.append("<p>"); //$NON-NLS-1$
 				Object key = i.next();
 				buffer.append(key).append(": ").append(properties.get(key)); //$NON-NLS-1$
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.presence/src/org/eclipse/ecf/presence/chatroom/ChatRoomMessageEvent.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chatroom/ChatRoomMessageEvent.java
index 1eedb91..5ecb50a 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chatroom/ChatRoomMessageEvent.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/chatroom/ChatRoomMessageEvent.java
@@ -19,8 +19,6 @@
  */
 public class ChatRoomMessageEvent implements IChatRoomMessageEvent {
 
-	private static final long serialVersionUID = 241668017694136249L;
-
 	protected ID fromID;
 
 	protected IChatRoomMessage chatMessage;
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/ChatMessageEvent.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/ChatMessageEvent.java
index c751314..b41ab2c42 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/ChatMessageEvent.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/ChatMessageEvent.java
@@ -18,8 +18,6 @@
  */
 public class ChatMessageEvent implements IChatMessageEvent {
 
-	private static final long serialVersionUID = 3813922441423314924L;
-
 	protected ID fromID;
 	protected IChatMessage message;
 	protected IChat chat;
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/TypingMessageEvent.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/TypingMessageEvent.java
index 508f2e9..c7af597 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/TypingMessageEvent.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/TypingMessageEvent.java
@@ -15,8 +15,6 @@
 
 public class TypingMessageEvent implements ITypingMessageEvent {
 
-	private static final long serialVersionUID = 6612754945575950442L;
-
 	protected ID fromID;
 
 	protected ITypingMessage typingMessage;
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/XHTMLChatMessageEvent.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/XHTMLChatMessageEvent.java
index 6c11bf2..dc261fa 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/XHTMLChatMessageEvent.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/im/XHTMLChatMessageEvent.java
@@ -13,10 +13,7 @@
 
 import org.eclipse.ecf.core.identity.ID;
 
-public class XHTMLChatMessageEvent extends ChatMessageEvent implements
-		IXHTMLChatMessageEvent {
-
-	private static final long serialVersionUID = -1936360806544087276L;
+public class XHTMLChatMessageEvent extends ChatMessageEvent implements IXHTMLChatMessageEvent {
 
 	/**
 	 * @param fromID
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/Roster.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/Roster.java
index f47b691..308b3ab 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/Roster.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/Roster.java
@@ -10,11 +10,7 @@
  *****************************************************************************/
 package org.eclipse.ecf.presence.roster;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
+import java.util.*;
 import org.eclipse.ecf.core.user.IUser;
 import org.eclipse.ecf.presence.IPresenceContainerAdapter;
 
@@ -25,18 +21,15 @@
  */
 public class Roster extends RosterItem implements IRoster {
 
-	private static final long serialVersionUID = 5600691290032864241L;
-
 	protected List rosteritems;
 
 	protected IUser rosterUser;
 
 	protected IPresenceContainerAdapter presenceContainer;
-	
+
 	public Roster(IPresenceContainerAdapter pc, IUser user) {
 		super(null, (user == null) ? "<unknown>" //$NON-NLS-1$
-				: ((user.getName() == null) ? user.getID().getName() : user
-						.getName()));
+				: ((user.getName() == null) ? user.getID().getName() : user.getName()));
 		this.presenceContainer = pc;
 		this.rosterUser = user;
 		this.rosteritems = Collections.synchronizedList(new ArrayList());
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/search/UserSearchCompleteEvent.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/search/UserSearchCompleteEvent.java
index 45c1da1..4d90003 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/search/UserSearchCompleteEvent.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/search/UserSearchCompleteEvent.java
@@ -15,10 +15,6 @@
  */
 public class UserSearchCompleteEvent implements IUserSearchCompleteEvent {
 
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1563126741187575435L;
 	private ISearch search;
 
 	public UserSearchCompleteEvent(ISearch search) {
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 d3d51de..5a5a0aa 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.0.0.qualifier
+Bundle-Version: 4.2.200.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/AsynchEvent.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/AsynchEvent.java
index 5940dea..7d89d06 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/AsynchEvent.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/AsynchEvent.java
@@ -15,8 +15,6 @@
  * 
  */
 public class AsynchEvent extends ConnectionEvent {
-	private static final long serialVersionUID = 3618136762325873465L;
-
 	public AsynchEvent(IAsynchConnection conn, Object data) {
 		super(conn, data);
 	}
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/ConnectionEvent.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/ConnectionEvent.java
index ef6bfea..a576371 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/ConnectionEvent.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/ConnectionEvent.java
@@ -17,8 +17,6 @@
  * 
  */
 public class ConnectionEvent implements Event {
-	private static final long serialVersionUID = 3257290214476362291L;
-
 	private final Object data;
 
 	private final IConnection connection;
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/DisconnectEvent.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/DisconnectEvent.java
index c1ad171..b2b54cb 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/DisconnectEvent.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/DisconnectEvent.java
@@ -15,8 +15,6 @@
  * 
  */
 public class DisconnectEvent extends ConnectionEvent {
-	private static final long serialVersionUID = 3545519491132832050L;
-
 	Throwable exception = null;
 
 	public DisconnectEvent(IAsynchConnection conn, Throwable e, Object data) {
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/SynchEvent.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/SynchEvent.java
index e6638b8..67c7a6c 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/SynchEvent.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/comm/SynchEvent.java
@@ -15,8 +15,6 @@
  * 
  */
 public class SynchEvent extends ConnectionEvent {
-	private static final long serialVersionUID = 3257288019714324532L;
-
 	public SynchEvent(ISynchConnection conn, Object data) {
 		super(conn, data);
 	}
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 e50b15b..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
@@ -58,6 +58,7 @@
 	protected Object pingLock = new Object();
 	boolean disconnectHandled = false;
 	private final Object disconnectLock = new Object();
+	protected final Object outputStreamLock = new Object();
 
 	private String getHostNameForAddressWithoutLookup(InetAddress inetAddress) {
 		// First get InetAddress.toString(), which returns
@@ -108,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();
 	}
 
@@ -178,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
@@ -239,7 +239,10 @@
 						// Successful...remove message from queue
 						queue.removeHead();
 						if (msgCount >= maxMsg) {
-							outputStream.reset();
+							// need to synchronize to avoid concurrent access to outputStream
+							synchronized (outputStreamLock) {
+								outputStream.reset();
+							}
 							msgCount = 0;
 						} else
 							msgCount++;
@@ -285,8 +288,11 @@
 
 	void send(Serializable snd) throws IOException {
 		//		debug("send(" + snd + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		outputStream.writeObject(snd);
-		outputStream.flush();
+		// need to synchronize to avoid concurrent access to outputStream
+		synchronized (outputStreamLock) {
+			outputStream.writeObject(snd);
+			outputStream.flush();
+		}
 	}
 
 	private void handlePingResp() {
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java
index 693bff1..0347817 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/ClientSOContainer.java
@@ -447,7 +447,7 @@
 					try {
 						connection.sendSynch(groupID, serialize(ContainerMessage.createLeaveGroupMessage(getID(), groupID, getNextSequenceNumber(), getLeaveData(groupID))));
 					} catch (final Exception e) {
-						ProviderPlugin.getDefault().log(new Status(IStatus.ERROR, ProviderPlugin.PLUGIN_ID, IStatus.ERROR, "disconnect.sendSynch", e)); //$NON-NLS-1$
+						ProviderPlugin.getDefault().log(new Status(IStatus.WARNING, ProviderPlugin.PLUGIN_ID, IStatus.WARNING, "disconnect.sendSynch", e)); //$NON-NLS-1$
 					}
 					synchronized (getGroupMembershipLock()) {
 						handleLeave(groupID, connection);
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 ee8ed68..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$
 		}
 	}
 
@@ -177,9 +243,8 @@
 
 	protected Set getInterfacesForClass(Class clazz) {
 		Set clazzes = getInterfacesForClass(new HashSet(), clazz);
-		int index = 0;
 		Set result = new HashSet();
-		for (Iterator i = clazzes.iterator(); i.hasNext(); index++)
+		for (Iterator i = clazzes.iterator(); i.hasNext();)
 			result.add(((Class) i.next()).getName());
 		return result;
 	}
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOWrapper.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOWrapper.java
index 6f76dba..6874604 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOWrapper.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SOWrapper.java
@@ -161,7 +161,6 @@
 	}
 
 	public static class ProcEvent implements Event {
-		private static final long serialVersionUID = 3257002142513378616L;
 		Event theEvent = null;
 
 		public ProcEvent(Event event) {
@@ -174,8 +173,6 @@
 	}
 
 	protected static class DisposeEvent implements Event {
-		private static final long serialVersionUID = 3688503311859135536L;
-
 		DisposeEvent() {
 			//
 		}
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.synd/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties
index 79e0790..9755a29 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties
@@ -7,4 +7,4 @@
  * Contributors: Pavel Samolisov - initial API and implementation
  ******************************************************************************/
 plugin.provider=Eclipse.org - ECF
-plugin.name=RSS/Atom support for ECF REST remoteservices
+plugin.name=ECF REST RemoteServices RSS/Atom support
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 c2b7551..849e1f5 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.0.100.qualifier
+Bundle-Version: 2.2.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rest.Activator
 Bundle-ActivationPolicy: lazy
 Eclipse-BuddyPolicy: global
@@ -19,7 +19,7 @@
  org.apache.commons.httpclient.methods;version="3.0.1",
  org.apache.commons.httpclient.params;version="3.0.1",
  org.apache.commons.httpclient.util,
- org.eclipse.ecf.remoteservice,
+ org.eclipse.ecf.remoteservice;version="6.0.0",
  org.eclipse.ecf.remoteservice.client,
  org.eclipse.ecf.remoteservice.events,
  org.eclipse.ecf.remoteservice.util,
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
index ac1326c..2ba3946 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
@@ -7,4 +7,4 @@
 #
 ############################################################################
 plugin.provider=Eclipse.org - ECF
-plugin.name=ECF REST API
+plugin.name=ECF REST RemoteServices API
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/AbstractEntityRequestType.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/AbstractEntityRequestType.java
index 99f2225..7bf44ad 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/AbstractEntityRequestType.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/AbstractEntityRequestType.java
@@ -116,7 +116,7 @@
 		if (defaultParameters != null) {
 			for (int i = 0; i < defaultParameters.length; i++) {
 				if (CHARSET_PARAM_NAME.equals(defaultParameters[i].getName())) {
-					Object o = (parameters != null && parameters.length > i) ? parameters[i] : defaultParameters[i];
+					Object o = (parameters != null && parameters.length > i) ? parameters[i] : defaultParameters[i].getValue();
 					if (o instanceof String) {
 						return (String) o;
 					}
@@ -132,7 +132,7 @@
 		if (defaultParameters != null) {
 			for (int i = 0; i < defaultParameters.length; i++) {
 				if (CONTENT_LENGTH_PARAM_NAME.equals(defaultParameters[i].getName())) {
-					Object o = (parameters != null && parameters.length > i) ? parameters[i] : defaultParameters[i];
+					Object o = (parameters != null && parameters.length > i) ? parameters[i] : defaultParameters[i].getValue();
 					if (o instanceof Number) {
 						return ((Number) o).longValue();
 					} else if (o instanceof String) {
@@ -154,7 +154,7 @@
 		if (defaultParameters != null) {
 			for (int i = 0; i < defaultParameters.length; i++) {
 				if (CONTENT_TYPE_PARAM_NAME.equals(defaultParameters[i].getName())) {
-					Object o = (parameters != null && parameters.length > i) ? parameters[i] : defaultParameters[i];
+					Object o = (parameters != null && parameters.length > i) ? parameters[i] : defaultParameters[i].getValue();
 					if (o instanceof String) {
 						return (String) o;
 					}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java
index 79229f1..290ecb8 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rest/src/org/eclipse/ecf/remoteservice/rest/client/RestClientContainer.java
@@ -11,8 +11,7 @@
 
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.remoteservice.IRemoteCall;
-import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.remoteservice.*;
 import org.eclipse.ecf.remoteservice.client.*;
 import org.eclipse.ecf.remoteservice.rest.identity.RestID;
 import org.eclipse.ecf.remoteservice.rest.identity.RestNamespace;
@@ -62,4 +61,10 @@
 		return null;
 	}
 
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		// REST clients don't have way to invoke call policy by default,
+		// so return false
+		return false;
+	}
+
 }
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/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
index fef42de..eaa6f70 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
@@ -1,355 +1,369 @@
-#Fri Jan 08 20:31:00 YEKT 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=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=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=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=20
-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=20
-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_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-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.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-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=120
-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
+#Tue Jan 25 11:25:01 MSK 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=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=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_annotation=0

+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=20

+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_method_declaration=0

+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=20

+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.comment.new_lines_at_block_boundaries=true

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

+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.disabling_tag=@formatter\:off

+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on

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

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

+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_annotation_on_field=insert

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

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

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

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

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

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

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

+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.join_lines_in_comments=true

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

+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=120

+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_on_off_tags=false

+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.formatter.wrap_outer_expressions_when_nested=true

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

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

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs
index a74093c..a041cb0 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs
@@ -1,60 +1,60 @@
-#Fri Oct 08 22:57:55 MSD 2010
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_Equinox
-formatter_settings_version=11
-internal.default.compliance=user
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.javadoc=false
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-JSDoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated function stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2009-2010 Naumen. All rights reserved. This\r\n * program and the accompanying materials are made available under the terms of\r\n * the Eclipse Public License v1.0 which accompanies this distribution, and is\r\n * available at http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\: Pavel Samolisov - initial API and implementation\r\n ******************************************************************************/\r\n${package_declaration}\r\n\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
-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
+#Tue Jan 25 17:13:15 MSK 2011

+eclipse.preferences.version=1

+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true

+formatter_profile=_Equinox

+formatter_settings_version=12

+internal.default.compliance=user

+org.eclipse.jdt.ui.ignorelowercasenames=true

+org.eclipse.jdt.ui.importorder=;

+org.eclipse.jdt.ui.javadoc=false

+org.eclipse.jdt.ui.ondemandthreshold=3

+org.eclipse.jdt.ui.staticondemandthreshold=99

+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-JSDoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated function stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2010-2011 Naumen. All rights reserved. This\r\n * program and the accompanying materials are made available under the terms of\r\n * the Eclipse Public License v1.0 which accompanies this distribution, and is\r\n * available at http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\: Pavel Samolisov - initial API and implementation\r\n ******************************************************************************/\r\n${package_declaration}\r\n\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>

+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/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF
index 8244bf8..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,13 +5,32 @@
 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.eclipse.ecf.core;version="3.0.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",
+ org.apache.commons.httpclient.util;version="3.1.0",
+ org.apache.xmlrpc,
+ org.apache.xmlrpc.client,
+ org.apache.xmlrpc.client.util,
+ org.apache.xmlrpc.common,
+ org.apache.xmlrpc.parser,
+ org.apache.xmlrpc.serializer,
+ org.eclipse.ecf.core;version="3.0.0",
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.core.provider,
- org.eclipse.ecf.remoteservice,
+ org.eclipse.ecf.remoteservice;version="6.0.0",
  org.eclipse.ecf.remoteservice.client,
  org.osgi.service.log;version="1.3.0"
+Export-Package: org.eclipse.ecf.internal.remoteservice.rpc;x-internal:=true,
+ org.eclipse.ecf.remoteservice.rpc,
+ org.eclipse.ecf.remoteservice.rpc.client,
+ org.eclipse.ecf.remoteservice.rpc.identity
+Bundle-Localization: plugin
+DynamicImport-Package: *
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/build.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/build.properties
index ea07f80..e3c9c6c 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/build.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/build.properties
@@ -1,6 +1,15 @@
+############################################################################
+# 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
+############################################################################
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               plugin.xml
+               plugin.xml,\
+               plugin.properties
 jre.compilation.profile = J2SE-1.4
+additional.bundles = org.eclipse.equinox.concurrent
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/plugin.properties
index 99b48a1..f367ca0 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/plugin.properties
@@ -1,10 +1,9 @@
 ############################################################################
-# Copyright (c) 2009 Pavel Samolisov, IBM Corp, and others.
+# 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
-#
 ############################################################################
 pluginName = ECF XML-RPC API
 providerName = Eclipse.org - ECF
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java
index d37fe69..9295d1c 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Activator.java
@@ -1,5 +1,5 @@
 /******************************************************************************* 
- * Copyright (c) 2010 Naumen. All rights reserved. This
+ * 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
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 62f38b4..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/Messages.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 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"; //$NON-NLS-1$
-
-	public static String RPC_INVALID_PARAMETERS_TO_ID_CREATION;
-	public static String RPC_COULD_NOT_CREATE_ID;
-	public static String PRC_COULD_NOT_CREATE_CONTAINER;
-
-	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 cb1d75d..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
@@ -1,11 +1,12 @@
-/*******************************************************************************
- * Copyright (c) 2010 Naumen. All rights reserved. This
+/******************************************************************************* 
+ * 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
- ******************************************************************************/
+ * Contributors:
+ *   Pavel Samolisov - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.ecf.internal.remoteservice.rpc;
 
 import java.util.*;
@@ -32,7 +33,7 @@
 				ID = (RpcId) IDFactory.getDefault().createID(RpcNamespace.NAME, parameters);
 			return new RpcClientContainer(ID);
 		} catch (Exception e) {
-			throw new ContainerCreateException(Messages.PRC_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 b466234..0000000
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/internal/remoteservice/rpc/messages.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-RPC_INVALID_PARAMETERS_TO_ID_CREATION = Invalid parameters to RPCID creation
-RPC_COULD_NOT_CREATE_ID = Could not create RPC ID
-PRC_COULD_NOT_CREATE_CONTAINER = Could not create RPCClientContainer
\ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/RpcException.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/RpcException.java
index 18b3950..1221a7a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/RpcException.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/RpcException.java
@@ -1,11 +1,12 @@
-/*******************************************************************************
- * Copyright (c) 2010 Naumen. All rights reserved. This
+/******************************************************************************* 
+ * 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
- ******************************************************************************/
+ * Contributors:
+ *   Pavel Samolisov - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.ecf.remoteservice.rpc;
 
 import org.eclipse.ecf.core.util.ECFException;
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientContainer.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientContainer.java
index c01e6d6..344e486 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientContainer.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientContainer.java
@@ -1,17 +1,18 @@
-/*******************************************************************************
- * Copyright (c) 2010 Naumen. All rights reserved. This
+/******************************************************************************* 
+ * 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
- ******************************************************************************/
+ * Contributors:
+ *   Pavel Samolisov - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.ecf.remoteservice.rpc.client;
 
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.remoteservice.IRemoteCall;
-import org.eclipse.ecf.remoteservice.IRemoteService;
+import org.eclipse.ecf.core.util.ECFException;
+import org.eclipse.ecf.remoteservice.*;
 import org.eclipse.ecf.remoteservice.client.*;
 import org.eclipse.ecf.remoteservice.rpc.identity.RpcId;
 import org.eclipse.ecf.remoteservice.rpc.identity.RpcNamespace;
@@ -19,10 +20,13 @@
 /**
  * A container for XML-RPC services. 
  */
+// TODO add working with auth via header params (Cookies, see http://ws.apache.org/xmlrpc/server.html)
 public class RpcClientContainer extends AbstractClientContainer implements IRemoteServiceClientContainerAdapter {
 
 	public RpcClientContainer(RpcId id) {
 		super(id);
+
+		setParameterSerializer(new TrivialParameterServializer());
 	}
 
 	public Namespace getConnectNamespace() {
@@ -30,13 +34,24 @@
 	}
 
 	protected IRemoteService createRemoteService(RemoteServiceClientRegistration registration) {
-		// TODO
-		return null;
+		IRemoteService service = null;
+		try {
+			service = new RpcClientService(this, registration);
+		} catch (ECFException e) {
+			logException(e.getMessage(), e);
+		}
+
+		return service;
 	}
 
 	protected String prepareEndpointAddress(IRemoteCall call, IRemoteCallable callable) {
-		// TODO
+		// For XML-RPC, endpoint == resource.path
 		return callable.getResourcePath();
 	}
 
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		// By default, XML-RPC client cannot set the call policy, so
+		// return false
+		return false;
+	}
 }
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
new file mode 100644
index 0000000..b8b41a0
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/RpcClientService.java
@@ -0,0 +1,131 @@
+/******************************************************************************* 

+ * 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.remoteservice.rpc.client;

+

+import java.io.NotSerializableException;

+import java.net.MalformedURLException;

+import org.apache.xmlrpc.client.*;

+import org.apache.xmlrpc.client.util.ClientFactory;

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

+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.remoteservice.IRemoteCall;

+import org.eclipse.ecf.remoteservice.client.*;

+import org.eclipse.ecf.remoteservice.rpc.RpcException;

+import org.eclipse.ecf.remoteservice.rpc.identity.RpcId;

+

+public class RpcClientService extends AbstractClientService {

+

+	private XmlRpcClient client;

+

+	public RpcClientService(RpcClientContainer container, RemoteServiceClientRegistration registration)

+			throws RpcException {

+		super(container, registration);

+		client = getXmlRpcClient();

+	}

+

+	protected XmlRpcClientConfig getXmlRpcClientConfig() throws RpcException {

+		try {

+			RpcId id = (RpcId) container.getID();

+

+			XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();

+			config.setServerURL(id.toURI().toURL());

+			config.setEnabledForExtensions(true);

+			// Set default timeouts

+			config.setConnectionTimeout(60 * 1000);

+			config.setReplyTimeout(60 * 1000);

+

+			return config;

+		} catch (MalformedURLException e) {

+			handleException(e.getMessage(), e);

+			return null;

+		}

+	}

+

+	protected XmlRpcClient getXmlRpcClient() throws RpcException {

+		XmlRpcClient xmlRpcClient = new XmlRpcClient();

+		xmlRpcClient.setConfig(getXmlRpcClientConfig());

+		xmlRpcClient.setTransportFactory(new XmlRpcCommonsTransportFactory(xmlRpcClient));

+

+		return xmlRpcClient;

+	}

+

+	/**

+	 * Create a Dynamic Proxy for using XML-RPC servers, which builded on Apache XML-RPC.	   

+	 */

+	public Object createProxy(ClassLoader cl, Class[] classes) {

+		if (classes == null || classes.length < 1)

+			return null;

+

+		ClientFactory factory = new ClientFactory(client);

+		return factory.newInstance(classes[0]);

+	}

+

+	/**

+	 * Create a Dynamic Proxy for using XML-RPC servers, which builded on Apache XML-RPC.

+	 * See the <a href="http://ws.apache.org/xmlrpc/advanced.html">Dynamic proxies</a> section.    

+	 */

+	protected Object createProxy(Class[] classes) {

+		if (classes == null || classes.length < 1)

+			return null;

+

+		ClientFactory factory = new ClientFactory(client);

+		return factory.newInstance(classes[0]);

+	}

+

+	/**

+	 * Calls the XML-RPC Service with given operation of IRemoteCall. The returned value is

+	 * the returned value from server

+	 * 

+	 * @param call The remote call to make.  Must not be <code>null</code>.

+	 * @param callable The callable with default parameters to use to make the call.

+	 * @return The XML-RPC Service's return value

+	 */

+	protected Object invokeRemoteCall(final IRemoteCall call, final IRemoteCallable callable) throws ECFException {

+		String operation = prepareEndpointAddress(call, callable);

+		Object result = null;

+		try {

+			result = client.execute(operation, toObjectsArray(operation, call, callable));

+		} catch (Exception e) {

+			handleException("Exception while executing method:" + operation, e); //$NON-NLS-1$

+		}

+

+		return result;

+	}

+

+	protected void handleException(String message, Throwable e) throws RpcException {

+		logException(message, e);

+		throw new RpcException(message, e);

+	}

+

+	protected Object[] toObjectsArray(String uri, IRemoteCall call, IRemoteCallable callable)

+			throws NotSerializableException {

+		IRemoteCallParameter[] rpcParameters = prepareParameters(uri, call, callable);

+		Object[] result = new Object[rpcParameters.length];

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

+			result[i] = rpcParameters[i].getValue();

+		}

+

+		return result;

+	}

+

+	protected void logException(String string, Throwable e) {

+		Activator a = Activator.getDefault();

+		if (a != null)

+			a.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, string, 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));

+	}

+}

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java
new file mode 100644
index 0000000..7f353a3
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java
@@ -0,0 +1,34 @@
+/******************************************************************************* 

+ * 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.remoteservice.rpc.client;

+

+import org.eclipse.ecf.remoteservice.IRemoteCall;

+import org.eclipse.ecf.remoteservice.client.*;

+

+/**

+ * Trivial parameter serializer - just copy a parameter value

+ * 

+ * @author psamolisov

+ */

+public class TrivialParameterServializer implements IRemoteCallParameterSerializer {

+

+	/**

+	 * All parameters will be serialized in the Apache XML-RPC library. We shouldn't serialize any parameters

+	 * by default. 

+	 * 

+	 * @return the parameter value

+	 */

+	public IRemoteCallParameter serializeParameter(String endpoint, IRemoteCall call, IRemoteCallable callable,

+			IRemoteCallParameter paramDefault, Object paramToSerialize) {

+		// Just return a parameter		

+		return new RemoteCallParameter(paramDefault.getName(), paramToSerialize == null ? paramDefault.getValue()

+				: paramToSerialize);

+	}

+}

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcId.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcId.java
index f879ac5..14b2c33 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcId.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/identity/RpcId.java
@@ -1,11 +1,12 @@
-/*******************************************************************************
- * Copyright (c) 2009-2010 Naumen. All rights reserved. This
+/******************************************************************************* 
+ * 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
- ******************************************************************************/
+ * Contributors:
+ *   Pavel Samolisov - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.ecf.remoteservice.rpc.identity;
 
 import java.net.URI;
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 673217b..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
@@ -1,18 +1,19 @@
-/*******************************************************************************
- * Copyright (c) 2010 Naumen. All rights reserved. This
+/******************************************************************************* 
+ * 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
- ******************************************************************************/
+ * Contributors:
+ *   Pavel Samolisov - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.ecf.remoteservice.rpc.identity;
 
 import java.net.URI;
 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;
 
 /**
  * This class represents a {@link Namespace} for {@link RpcClientContainer}s.
@@ -78,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.soap/build.properties b/framework/bundles/org.eclipse.ecf.remoteservice.soap/build.properties
index 2b63999..b4715cb 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.soap/build.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.soap/build.properties
@@ -6,3 +6,5 @@
                about.html,\
                plugin.properties
 src.includes = about.html
+additional.bundles = org.eclipse.osgi,\
+                     org.eclipse.equinox.concurrent
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.ui/src/org/eclipse/ecf/internal/remoteservices/ui/Activator.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/Activator.java
index e967ca5..c0fe065 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/Activator.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/Activator.java
@@ -21,7 +21,7 @@
 	private volatile ServiceTracker containerManagerTracker;
 	// The shared instance
 	private volatile static Activator plugin;
-	
+
 	/**
 	 * The constructor
 	 */
@@ -29,21 +29,25 @@
 		plugin = this;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+	 * )
 	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
-		if(containerManagerTracker != null) {
+		if (containerManagerTracker != null) {
 			containerManagerTracker.close();
 			containerManagerTracker = null;
 		}
 		super.stop(context);
 	}
-	
+
 	/**
 	 * Returns the shared instance
-	 *
+	 * 
 	 * @return the shared instance
 	 */
 	public static Activator getDefault() {
@@ -53,7 +57,8 @@
 	public IContainerManager getContainerManager() {
 		BundleContext context = getBundle().getBundleContext();
 		if (containerManagerTracker == null) {
-			containerManagerTracker = new ServiceTracker(context, IContainerManager.class.getName(), null);
+			containerManagerTracker = new ServiceTracker(context,
+					IContainerManager.class.getName(), null);
 			containerManagerTracker.open();
 		}
 		return (IContainerManager) containerManagerTracker.getService();
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/RemoteServiceHandlerUtil.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/RemoteServiceHandlerUtil.java
index 4a4b3e9..fbb683a 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/RemoteServiceHandlerUtil.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/RemoteServiceHandlerUtil.java
@@ -29,21 +29,26 @@
 
 public class RemoteServiceHandlerUtil {
 
-	public static IRemoteServiceContainerAdapter getActiveIRemoteServiceContainerAdapterChecked(ExecutionEvent event) throws ExecutionException {
+	public static IRemoteServiceContainerAdapter getActiveIRemoteServiceContainerAdapterChecked(
+			ExecutionEvent event) throws ExecutionException {
 		final ID activeConnectId = getActiveConnectIDChecked(event);
 		final IContainer container = getContainerWithConnectID(activeConnectId);
 		if (container == null) {
 			return null;
 		}
-		final IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container.getAdapter(IRemoteServiceContainerAdapter.class);
+		final IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) container
+				.getAdapter(IRemoteServiceContainerAdapter.class);
 		return adapter;
 	}
-	
-	public static IRemoteServiceReference[] getActiveIRemoteServiceReferencesChecked(ExecutionEvent event) throws ExecutionException {
-		final IServiceInfo serviceInfo = DiscoveryHandlerUtil.getActiveIServiceInfoChecked(event);
+
+	public static IRemoteServiceReference[] getActiveIRemoteServiceReferencesChecked(
+			ExecutionEvent event) throws ExecutionException {
+		final IServiceInfo serviceInfo = DiscoveryHandlerUtil
+				.getActiveIServiceInfoChecked(event);
 		final IRemoteServiceContainerAdapter adapter = getActiveIRemoteServiceContainerAdapterChecked(event);
 		try {
-			return getRemoteServiceReferencesForRemoteServiceAdapter(adapter, serviceInfo);
+			return getRemoteServiceReferencesForRemoteServiceAdapter(adapter,
+					serviceInfo);
 		} catch (IDCreateException e) {
 			throw new ExecutionException(e.getMessage(), e);
 		} catch (InvalidSyntaxException e) {
@@ -51,8 +56,10 @@
 		}
 	}
 
-	public static ID getActiveConnectIDChecked(ExecutionEvent event) throws ExecutionException {
-		final IServiceInfo serviceInfo = DiscoveryHandlerUtil.getActiveIServiceInfoChecked(event);
+	public static ID getActiveConnectIDChecked(ExecutionEvent event)
+			throws ExecutionException {
+		final IServiceInfo serviceInfo = DiscoveryHandlerUtil
+				.getActiveIServiceInfoChecked(event);
 		final String connectNamespace = getConnectNamespace(serviceInfo);
 		final String connectId = getConnectID(serviceInfo);
 		try {
@@ -62,31 +69,37 @@
 		}
 	}
 
-	public static IContainer getActiveIRemoteServiceContainerChecked(ExecutionEvent event) throws ExecutionException {
-		final IServiceInfo serviceInfo = DiscoveryHandlerUtil.getActiveIServiceInfoChecked(event);
+	public static IContainer getActiveIRemoteServiceContainerChecked(
+			ExecutionEvent event) throws ExecutionException {
+		final IServiceInfo serviceInfo = DiscoveryHandlerUtil
+				.getActiveIServiceInfoChecked(event);
 		final ID createConnectId = getActiveConnectIDChecked(event);
 		final IContainer container = getContainerWithConnectID(createConnectId);
 		if (container != null) {
 			return container;
 		}
-		//TODO remove parameters once https://bugs.eclipse.org/bugs/show_bug.cgi?id=256586 is fixed
+		// TODO remove parameters once
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=256586 is fixed
 		final Object[] parameters = new Object[] { createConnectId };
 		try {
-		// If it's not there and already connected then create and return new one
-			return ContainerFactory.getDefault().createContainer(getContainerFactory(serviceInfo), parameters);
+			// If it's not there and already connected then create and return
+			// new one
+			return ContainerFactory.getDefault().createContainer(
+					getContainerFactory(serviceInfo), parameters);
 		} catch (ContainerCreateException e) {
 			throw new ExecutionException(e.getMessage(), e);
 		}
 	}
-	
-	//TODO push this functionality down into the ContainerManager
+
+	// TODO push this functionality down into the ContainerManager
 	private static IContainer getContainerWithConnectID(ID aConnectedID) {
-		final IContainerManager containerManager = Activator.getDefault().getContainerManager();
+		final IContainerManager containerManager = Activator.getDefault()
+				.getContainerManager();
 		final IContainer[] containers = containerManager.getAllContainers();
 		if (containers == null) {
 			return null;
 		}
-		for(int i=0; i < containers.length; i++) {
+		for (int i = 0; i < containers.length; i++) {
 			ID connectedId = containers[i].getConnectedID();
 			if (connectedId != null && connectedId.equals(aConnectedID)) {
 				return containers[i];
@@ -95,39 +108,54 @@
 		return null;
 	}
 
-	private static IRemoteServiceReference[] getRemoteServiceReferencesForRemoteServiceAdapter(IRemoteServiceContainerAdapter adapter, IServiceInfo serviceInfo) throws InvalidSyntaxException, IDCreateException {
-		if(adapter == null) {
-			return null;
-		}
+	private static IRemoteServiceReference[] getRemoteServiceReferencesForRemoteServiceAdapter(
+			IRemoteServiceContainerAdapter adapter, IServiceInfo serviceInfo)
+			throws InvalidSyntaxException, IDCreateException {
 		ID serviceID = null;
 		final String serviceNamespace = getServiceNamespace(serviceInfo);
 		final String serviceid = getServiceID(serviceInfo);
 		if (serviceNamespace != null && serviceid != null) {
-			serviceID = IDFactory.getDefault().createID(serviceNamespace, serviceid);
+			serviceID = IDFactory.getDefault().createID(serviceNamespace,
+					serviceid);
 		}
-		final ID[] targets = (serviceID == null) ? null : new ID[] {serviceID};
-		return adapter.getRemoteServiceReferences(targets, getRemoteServiceClass(serviceInfo), getFilter(serviceInfo));
+		final ID[] targets = (serviceID == null) ? null
+				: new ID[] { serviceID };
+		return adapter.getRemoteServiceReferences(targets,
+				getRemoteServiceClass(serviceInfo), null);
 	}
-	
+
 	private static String getServiceNamespace(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_IDFILTER_NAMESPACE);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_IDFILTER_NAMESPACE);
 	}
+
 	private static String getServiceID(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_IDFILTER_ID);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_IDFILTER_ID);
 	}
+
 	private static String getRemoteServiceClass(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_OBJECTCLASS);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_OBJECTCLASS);
 	}
+
 	private static String getFilter(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_FILTER_PROPERTY);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_FILTER_PROPERTY);
 	}
+
 	private static String getConnectNamespace(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_CONNECT_ID_NAMESPACE);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_CONNECT_ID_NAMESPACE);
 	}
+
 	private static String getConnectID(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_CONNECT_ID);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_CONNECT_ID);
 	}
+
 	private static String getContainerFactory(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_CONTAINER_FACTORY_NAME);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_CONTAINER_FACTORY_NAME);
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectRemoteServicehandler.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectRemoteServicehandler.java
index 59066cc..75b7713 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectRemoteServicehandler.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectRemoteServicehandler.java
@@ -25,13 +25,16 @@
 public class ConnectRemoteServicehandler extends ConnectionHandler {
 
 	protected Job getJob(final ExecutionEvent event) throws ExecutionException {
-		final ID createConnectId = RemoteServiceHandlerUtil.getActiveConnectIDChecked(event);
-		final IContainer container = RemoteServiceHandlerUtil.getActiveIRemoteServiceContainerChecked(event);
+		final ID createConnectId = RemoteServiceHandlerUtil
+				.getActiveConnectIDChecked(event);
+		final IContainer container = RemoteServiceHandlerUtil
+				.getActiveIRemoteServiceContainerChecked(event);
 		// decouple the long running connect call from the ui thread
 		return new Job(NLS.bind("Connecting {0}", createConnectId.getName())) {
 			protected IStatus run(IProgressMonitor monitor) {
 				try {
-					if (container != null) container.connect(createConnectId, null);
+					if (container != null)
+						container.connect(createConnectId, null);
 				} catch (ContainerConnectException e) {
 					showException(e);
 					return Status.CANCEL_STATUS;
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectionHandler.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectionHandler.java
index ec8ce16..a1529ff 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectionHandler.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ConnectionHandler.java
@@ -21,8 +21,12 @@
 
 public abstract class ConnectionHandler extends AbstractHandler {
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
+	 * ExecutionEvent)
 	 */
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		Job job = getJob(event);
@@ -30,9 +34,10 @@
 		job.schedule();
 		return null;
 	}
-	
-	protected abstract Job getJob(ExecutionEvent event) throws ExecutionException;
-	
+
+	protected abstract Job getJob(ExecutionEvent event)
+			throws ExecutionException;
+
 	protected void showException(final Throwable t) {
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
@@ -40,7 +45,8 @@
 				if (t.getCause() != null) {
 					msg += t.getCause().toString();
 				}
-				MessageDialog.openError(null, t.getLocalizedMessage(), NLS.bind("Exception: {0}", msg));
+				MessageDialog.openError(null, t.getLocalizedMessage(),
+						NLS.bind("Exception: {0}", msg));
 			}
 		});
 	}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/DisonnectRemoteServicehandler.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/DisonnectRemoteServicehandler.java
index f4e9af7..8566c70 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/DisonnectRemoteServicehandler.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/DisonnectRemoteServicehandler.java
@@ -22,17 +22,24 @@
 import org.eclipse.osgi.util.NLS;
 
 public class DisonnectRemoteServicehandler extends ConnectionHandler {
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.internal.remoteservices.ui.handlers.ConnectionHandler#getJob()
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.internal.remoteservices.ui.handlers.ConnectionHandler
+	 * #getJob()
 	 */
 	protected Job getJob(final ExecutionEvent event) throws ExecutionException {
-		final ID createConnectId = RemoteServiceHandlerUtil.getActiveConnectIDChecked(event);
-		final IContainer container = RemoteServiceHandlerUtil.getActiveIRemoteServiceContainerChecked(event);
+		final ID createConnectId = RemoteServiceHandlerUtil
+				.getActiveConnectIDChecked(event);
+		final IContainer container = RemoteServiceHandlerUtil
+				.getActiveIRemoteServiceContainerChecked(event);
 		// decouple the long running connect call from the ui thread
 		return new Job(NLS.bind("Connecting {0}", createConnectId.getName())) {
 			protected IStatus run(IProgressMonitor monitor) {
-				if (container == null) return Status.OK_STATUS;
+				if (container == null)
+					return Status.OK_STATUS;
 				container.disconnect();
 				return Status.OK_STATUS;
 			}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ReflectiveRemoteServiceHandler.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ReflectiveRemoteServiceHandler.java
index a1e7785..ee06173 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ReflectiveRemoteServiceHandler.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/handlers/ReflectiveRemoteServiceHandler.java
@@ -42,41 +42,51 @@
 
 	/*
 	 * (non-Javadoc)
+	 * 
 	 * @see
 	 * org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands
 	 * .ExecutionEvent)
 	 */
 	public Object execute(ExecutionEvent event) throws ExecutionException {
-		final String clazz = event.getParameter("org.eclipse.ecf.remoteservices.ui.commands.reflectiveMethodDialogParameter"); //$NON-NLS-1$
+		final String clazz = event
+				.getParameter("org.eclipse.ecf.remoteservices.ui.commands.reflectiveMethodDialogParameter"); //$NON-NLS-1$
 
-		final IRemoteServiceContainerAdapter adapter = RemoteServiceHandlerUtil.getActiveIRemoteServiceContainerAdapterChecked(event);
+		final IRemoteServiceContainerAdapter adapter = RemoteServiceHandlerUtil
+				.getActiveIRemoteServiceContainerAdapterChecked(event);
 		if (adapter == null) {
-			MessageDialog.openError(null, "Handler invocation failed", "No container found");
+			MessageDialog.openError(null, "Handler invocation failed",
+					"No container found");
 			return null;
 		}
 
-		final IRemoteServiceReference[] references = RemoteServiceHandlerUtil.getActiveIRemoteServiceReferencesChecked(event);
+		final IRemoteServiceReference[] references = RemoteServiceHandlerUtil
+				.getActiveIRemoteServiceReferencesChecked(event);
 		if (references == null || references.length == 0) {
-			MessageDialog.openError(null, "Handler invocation failed", "No remote service reference found");
+			MessageDialog.openError(null, "Handler invocation failed",
+					"No remote service reference found");
 			return null;
 		}
 
-		final IRemoteService remoteService = adapter.getRemoteService(references[0]);
-		if(remoteService == null) {
-			MessageDialog.openError(null, "Handler invocation failed", "No remote service found");
+		final IRemoteService remoteService = adapter
+				.getRemoteService(references[0]);
+		if (remoteService == null) {
+			MessageDialog.openError(null, "Handler invocation failed",
+					"No remote service found");
 			return null;
 		}
-		
+
 		try {
 			executeMethodInvocationDialog(Class.forName(clazz), remoteService);
 		} catch (ClassNotFoundException e) {
-			MessageDialog.openError(null, "Handler invocation failed", e.getLocalizedMessage());
+			MessageDialog.openError(null, "Handler invocation failed",
+					e.getLocalizedMessage());
 			throw new ExecutionException(e.getMessage(), e);
-		} 
+		}
 		return null;
 	}
 
-	protected void executeMethodInvocationDialog(final Class cls, final IRemoteService remoteService) {
+	protected void executeMethodInvocationDialog(final Class cls,
+			final IRemoteService remoteService) {
 		final MethodInvocationDialog mid = new MethodInvocationDialog(
 				(Shell) null, cls);
 		if (mid.open() == Window.OK) {
@@ -137,8 +147,8 @@
 				if (t.getCause() != null) {
 					msg += t.getCause().toString();
 				}
-				MessageDialog.openInformation(null, "Received Exception", NLS
-						.bind("Exception: {0}", msg));
+				MessageDialog.openInformation(null, "Received Exception",
+						NLS.bind("Exception: {0}", msg));
 				container.disconnect();
 			}
 		});
@@ -170,8 +180,8 @@
 		});
 	}
 
-	private void invokeSync(final Class interfaceClass, final IRemoteService remoteService,
-			final IRemoteCall remoteCall) {
+	private void invokeSync(final Class interfaceClass,
+			final IRemoteService remoteService, final IRemoteCall remoteCall) {
 		try {
 			Object callSync = remoteService.callSync(remoteCall);
 			showResult(interfaceClass.getName(), remoteCall, callSync);
@@ -187,8 +197,8 @@
 				if (t.getCause() != null) {
 					msg += t.getCause().toString();
 				}
-				MessageDialog.openInformation(null, "Received Exception", NLS
-						.bind("Exception: {0}", msg));
+				MessageDialog.openInformation(null, "Received Exception",
+						NLS.bind("Exception: {0}", msg));
 			}
 		});
 	}
@@ -196,21 +206,18 @@
 	protected void showResult(final String serviceInterface,
 			final IRemoteCall remoteCall, final Object result) {
 		final Object display = (result != null && result.getClass().isArray()) ? Arrays
-				.asList((Object[]) result)
-				: result;
+				.asList((Object[]) result) : result;
 		final Object[] bindings = new Object[] { serviceInterface,
 				remoteCall.getMethod(),
 				Arrays.asList(remoteCall.getParameters()), display };
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
-				MessageDialog
-						.openInformation(
-								null,
-								"Received Response",
-								NLS
-										.bind(
-												"Service Interface:\n{0}\n\nMethod: {1}\nParameters: {2}\n\nResult:  {3}",
-												bindings));
+				MessageDialog.openInformation(
+						null,
+						"Received Response",
+						NLS.bind(
+								"Service Interface:\n{0}\n\nMethod: {1}\nParameters: {2}\n\nResult:  {3}",
+								bindings));
 			}
 		});
 	}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/property/ConnectedTester.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/property/ConnectedTester.java
index 620c678..dbe386c 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/property/ConnectedTester.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/internal/remoteservices/ui/property/ConnectedTester.java
@@ -10,7 +10,6 @@
  ******************************************************************************/
 package org.eclipse.ecf.internal.remoteservices.ui.property;
 
-
 import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.IContainerManager;
@@ -23,27 +22,31 @@
 import org.eclipse.ecf.remoteservice.Constants;
 
 public class ConnectedTester extends PropertyTester {
-	
+
 	public ConnectedTester() {
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object,
+	 * java.lang.String, java.lang.Object[], java.lang.Object)
 	 */
-	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+	public boolean test(Object receiver, String property, Object[] args,
+			Object expectedValue) {
 		// consumers expect connected or disconnected
-		if(!(expectedValue instanceof Boolean)) {
+		if (!(expectedValue instanceof Boolean)) {
 			return false;
 		}
 		boolean expected = ((Boolean) expectedValue).booleanValue();
 
 		boolean hasContainer = hasContainer(receiver);
 
-		if(expected && hasContainer) {
+		if (expected && hasContainer) {
 			return true;
-		} else if(expected && !hasContainer) {
+		} else if (expected && !hasContainer) {
 			return false;
-		} else if(!expected && hasContainer) {
+		} else if (!expected && hasContainer) {
 			return false;
 		} else {
 			return true;
@@ -52,31 +55,34 @@
 
 	private boolean hasContainer(Object receiver) {
 		// get the container instance
-		IServiceInfo serviceInfo = DiscoveryPropertyTesterUtil.getIServiceInfoReceiver(receiver);
+		IServiceInfo serviceInfo = DiscoveryPropertyTesterUtil
+				.getIServiceInfoReceiver(receiver);
 		final String connectNamespace = getConnectNamespace(serviceInfo);
 		final String connectId = getConnectID(serviceInfo);
 		try {
-			final ID createConnectId = IDFactory.getDefault().createID(connectNamespace, connectId);
+			final ID createConnectId = IDFactory.getDefault().createID(
+					connectNamespace, connectId);
 			return (getContainerByConnectID(createConnectId) != null);
 		} catch (IDCreateException e) {
-			//Trace.trace(...);
+			// Trace.trace(...);
 			return false;
 		}
 	}
 
-
 	/**
-	 * @param connectID The conected ID for which an IContainer is to be returned
+	 * @param connectID
+	 *            The conected ID for which an IContainer is to be returned
 	 * @return a IContainer instance of null
 	 */
-	//TODO push this functionality down into the ContainerManager
+	// TODO push this functionality down into the ContainerManager
 	private IContainer getContainerByConnectID(ID connectID) {
-		final IContainerManager containerManager = Activator.getDefault().getContainerManager();
+		final IContainerManager containerManager = Activator.getDefault()
+				.getContainerManager();
 		final IContainer[] containers = containerManager.getAllContainers();
 		if (containers == null) {
 			return null;
 		}
-		for(int i=0; i < containers.length; i++) {
+		for (int i = 0; i < containers.length; i++) {
 			ID connectedId = containers[i].getConnectedID();
 			if (connectedId != null && connectedId.equals(connectID)) {
 				return containers[i];
@@ -85,12 +91,13 @@
 		return null;
 	}
 
-	
 	private String getConnectNamespace(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_CONNECT_ID_NAMESPACE);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_CONNECT_ID_NAMESPACE);
 	}
 
 	private String getConnectID(IServiceInfo serviceInfo) {
-		return serviceInfo.getServiceProperties().getPropertyString(Constants.SERVICE_CONNECT_ID);
+		return serviceInfo.getServiceProperties().getPropertyString(
+				Constants.SERVICE_CONNECT_ID);
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteservices/ui/MethodInvocationDialog.java b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteservices/ui/MethodInvocationDialog.java
index 2decfaf..73bdc95 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteservices/ui/MethodInvocationDialog.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.ui/src/org/eclipse/ecf/remoteservices/ui/MethodInvocationDialog.java
@@ -53,8 +53,7 @@
 
 /**
  * The MethodInvocationDialog allows a user to select a method given a
- * <code>java.lang.Class</code> to invoke and communicate with a remote
- * service.
+ * <code>java.lang.Class</code> to invoke and communicate with a remote service.
  * 
  * @since 2.0
  */
@@ -104,7 +103,7 @@
 	 */
 	public static final int SYNCHRONOUS = REMOTE_SERVICE_PROXY + 1;
 
-	private static final String[] COLUMN_PROPERTIES = {"Parameter", "Argument"}; //$NON-NLS-1$ //$NON-NLS-2$
+	private static final String[] COLUMN_PROPERTIES = { "Parameter", "Argument" }; //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * Provide a default timeout value of 30,000 milliseconds.
@@ -164,7 +163,8 @@
 			}
 		}
 
-		methods = (Method[]) validMethods.toArray(new Method[validMethods.size()]);
+		methods = (Method[]) validMethods.toArray(new Method[validMethods
+				.size()]);
 		this.methods = new RemoteMethod[methods.length];
 		for (int i = 0; i < methods.length; i++) {
 			this.methods[i] = new RemoteMethod(methods[i]);
@@ -201,20 +201,25 @@
 		label = new Label(composite, SWT.LEAD);
 		label.setText(Messages.MethodInvocationDialog_ArgumentsLabel);
 
-		methodsViewer = new TableViewer(composite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
-		methodsViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+		methodsViewer = new TableViewer(composite, SWT.V_SCROLL | SWT.H_SCROLL
+				| SWT.BORDER);
+		methodsViewer.getControl().setLayoutData(
+				new GridData(SWT.FILL, SWT.FILL, true, true));
 		methodsViewer.setContentProvider(new ArrayContentProvider());
-		methodsViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent e) {
-				final IStructuredSelection iss = (IStructuredSelection) e.getSelection();
-				final Object element = iss.getFirstElement();
-				if (element != null) {
-					getButton(IDialogConstants.OK_ID).setEnabled(!timeoutText.getText().equals("")); //$NON-NLS-1$
-					final RemoteMethod method = (RemoteMethod) element;
-					parametersViewer.setInput(method.getParameters());
-				}
-			}
-		});
+		methodsViewer
+				.addSelectionChangedListener(new ISelectionChangedListener() {
+					public void selectionChanged(SelectionChangedEvent e) {
+						final IStructuredSelection iss = (IStructuredSelection) e
+								.getSelection();
+						final Object element = iss.getFirstElement();
+						if (element != null) {
+							getButton(IDialogConstants.OK_ID).setEnabled(
+									!timeoutText.getText().equals("")); //$NON-NLS-1$
+							final RemoteMethod method = (RemoteMethod) element;
+							parametersViewer.setInput(method.getParameters());
+						}
+					}
+				});
 		methodsViewer.setLabelProvider(new LabelProvider() {
 			public String getText(Object element) {
 				final RemoteMethod method = (RemoteMethod) element;
@@ -222,8 +227,10 @@
 			}
 		});
 
-		parametersViewer = new TableViewer(composite, SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.BORDER);
-		parametersViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+		parametersViewer = new TableViewer(composite, SWT.V_SCROLL
+				| SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.BORDER);
+		parametersViewer.getControl().setLayoutData(
+				new GridData(SWT.FILL, SWT.FILL, true, true));
 		parametersViewer.setContentProvider(new ArrayContentProvider());
 		parametersViewer.setLabelProvider(new ITableLabelProvider() {
 			public Image getColumnImage(Object element, int columnIndex) {
@@ -258,7 +265,8 @@
 			public void removeListener(ILabelProviderListener listener) {
 			}
 		});
-		parametersViewer.setCellEditors(new CellEditor[] {null, new TextCellEditor(parametersViewer.getTable())});
+		parametersViewer.setCellEditors(new CellEditor[] { null,
+				new TextCellEditor(parametersViewer.getTable()) });
 		parametersViewer.setCellModifier(new ICellModifier() {
 			public boolean canModify(Object element, String property) {
 				return property.equals(COLUMN_PROPERTIES[1]);
@@ -295,7 +303,8 @@
 		methodsViewer.setInput(methods);
 
 		final Composite bottomComposite = new Composite(composite, SWT.NONE);
-		bottomComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+		bottomComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+				false, 2, 1));
 		final GridLayout layout = new GridLayout(2, false);
 		layout.marginWidth = 0;
 		layout.marginHeight = 0;
@@ -310,34 +319,44 @@
 		timeoutText.addVerifyListener(new VerifyListener() {
 			public void verifyText(VerifyEvent e) {
 				switch (e.text.length()) {
-					case 0 :
-						e.doit = true;
-						break;
-					case 1 :
-						e.doit = Character.isDigit(e.text.charAt(0));
-						break;
-					default :
-						e.doit = false;
-						break;
+				case 0:
+					e.doit = true;
+					break;
+				case 1:
+					e.doit = Character.isDigit(e.text.charAt(0));
+					break;
+				default:
+					e.doit = false;
+					break;
 				}
 			}
 		});
 		timeoutText.addModifyListener(new ModifyListener() {
 			public void modifyText(ModifyEvent e) {
-				getButton(IDialogConstants.OK_ID).setEnabled(!timeoutText.getText().equals("") //$NON-NLS-1$
-						&& !methodsViewer.getSelection().isEmpty());
+				getButton(IDialogConstants.OK_ID).setEnabled(
+						!timeoutText.getText().equals("") //$NON-NLS-1$
+								&& !methodsViewer.getSelection().isEmpty());
 			}
 		});
-		timeoutText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+		timeoutText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
+				false));
 
 		label = new Label(bottomComposite, SWT.LEAD);
 		label.setText(Messages.MethodInvocationDialog_InvocationTypeLabel);
 		label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, true));
 
 		invocationCombo = new Combo(bottomComposite, SWT.READ_ONLY);
-		invocationCombo.setItems(new String[] {Messages.MethodInvocationDialog_InvocationTypeAsyncListener, Messages.MethodInvocationDialog_InvocationTypeAsyncFutureResult, Messages.MethodInvocationDialog_InvocationTypeAsyncFireAndGo, Messages.MethodInvocationDialog_InvocationTypeOSGiServiceProxy, Messages.MethodInvocationDialog_InvocationTypeRemoteServiceProxy, Messages.MethodInvocationDialog_InvocationTypeSynchronous});
+		invocationCombo
+				.setItems(new String[] {
+						Messages.MethodInvocationDialog_InvocationTypeAsyncListener,
+						Messages.MethodInvocationDialog_InvocationTypeAsyncFutureResult,
+						Messages.MethodInvocationDialog_InvocationTypeAsyncFireAndGo,
+						Messages.MethodInvocationDialog_InvocationTypeOSGiServiceProxy,
+						Messages.MethodInvocationDialog_InvocationTypeRemoteServiceProxy,
+						Messages.MethodInvocationDialog_InvocationTypeSynchronous });
 		invocationCombo.select(0);
-		bottomComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+		bottomComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
+				false));
 
 		return parent;
 	}
@@ -350,8 +369,10 @@
 	}
 
 	protected void okPressed() {
-		final IStructuredSelection selection = (IStructuredSelection) methodsViewer.getSelection();
-		final RemoteMethod remoteMethod = (RemoteMethod) selection.getFirstElement();
+		final IStructuredSelection selection = (IStructuredSelection) methodsViewer
+				.getSelection();
+		final RemoteMethod remoteMethod = (RemoteMethod) selection
+				.getFirstElement();
 		method = remoteMethod.getMethod();
 		final Parameter[] p = remoteMethod.getParameters();
 		methodArguments = new Object[p.length];
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
new file mode 100644
index 0000000..7b6ead6
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/.api_filters
@@ -0,0 +1,31 @@
+<?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>

+                <message_argument value="IRemoteFilter"/>

+                <message_argument value="Filter"/>

+                <message_argument value="RemoteFilterImpl"/>

+            </message_arguments>

+        </filter>

+    </resource>

+</component>

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/org.eclipse.jdt.core.prefs b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/org.eclipse.jdt.core.prefs
index ed4f3e5..8e985d7 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/.settings/org.eclipse.jdt.core.prefs
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/.settings/org.eclipse.jdt.core.prefs
@@ -1,350 +1,351 @@
-#Thu Sep 30 07:17:51 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.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.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=ignore
-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.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=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.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.5
-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
+#Tue Jan 11 19:53:19 PST 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=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.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=ignore

+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.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.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.5

+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.remoteservice/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
index b9f9955..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,17 +2,17 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice;singleton:=true
-Bundle-Version: 5.1.0.qualifier
+Bundle-Version: 6.0.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
 Eclipse-LazyStart: true
 Export-Package: org.eclipse.ecf.internal.remoteservice;x-internal:=true,
- org.eclipse.ecf.remoteservice,
- org.eclipse.ecf.remoteservice.client,
- org.eclipse.ecf.remoteservice.events,
- org.eclipse.ecf.remoteservice.util,
- org.eclipse.ecf.remoteservice.util.tracker
+ org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.client;version="6.0.0",
+ org.eclipse.ecf.remoteservice.events;version="6.0.0",
+ org.eclipse.ecf.remoteservice.util;version="6.0.0",
+ org.eclipse.ecf.remoteservice.util.tracker;version="6.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  J2SE-1.4,
  CDC-1.0/Foundation-1.0
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 c8db992..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
@@ -17,6 +17,7 @@
 import org.eclipse.ecf.internal.remoteservice.Activator;
 import org.eclipse.equinox.concurrent.future.IFuture;
 import org.eclipse.equinox.concurrent.future.IProgressRunnable;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceException;
 
 /**
@@ -36,7 +37,14 @@
 	protected abstract IRemoteServiceReference getRemoteServiceReference();
 
 	protected Class loadInterfaceClass(String className) throws ClassNotFoundException {
-		return Class.forName(className);
+		return loadInterfaceClass(this.getClass().getClassLoader(), className);
+	}
+
+	/**
+	 * @since 6.0
+	 */
+	protected Class loadInterfaceClass(ClassLoader cl, String className) throws ClassNotFoundException {
+		return Class.forName(className, true, cl);
 	}
 
 	protected IRemoteService getRemoteService() {
@@ -58,21 +66,55 @@
 
 	@SuppressWarnings("unchecked")
 	public Object getProxy() throws ECFException {
+		List classes = new ArrayList();
+		ClassLoader cl = this.getClass().getClassLoader();
 		try {
 			// Get clazz from reference
 			final String[] clazzes = getInterfaceClassNames();
-			List classes = new ArrayList();
-			for (int i = 0; i < clazzes.length; i++) {
-				Class c = loadInterfaceClass(clazzes[i]);
-				classes.add(c);
-				// check to see if async remote service proxy interface is defined
-				Class asyncRemoteServiceProxyClass = findAsyncRemoteServiceProxyClass(c);
-				if (asyncRemoteServiceProxyClass != null && asyncRemoteServiceProxyClass.isInterface())
-					classes.add(asyncRemoteServiceProxyClass);
-			}
-			// add IRemoteServiceProxy interface to set of interfaces supported by this proxy
+			for (int i = 0; i < clazzes.length; i++)
+				classes.add(loadInterfaceClass(cl, clazzes[i]));
+		} catch (final Exception e) {
+			ECFException except = new ECFException("Failed to create proxy", e); //$NON-NLS-1$
+			logWarning("Exception in remote service getProxy", except); //$NON-NLS-1$
+			throw except;
+		} catch (final NoClassDefFoundError e) {
+			ECFException except = new ECFException("Failed to load proxy interface class", e); //$NON-NLS-1$
+			logWarning("Could not load class for getProxy", except); //$NON-NLS-1$
+			throw except;
+		}
+		return getProxy(cl, (Class[]) classes.toArray(new Class[classes.size()]));
+	}
+
+	/**
+	 * @since 6.0
+	 */
+	protected void addRemoteServiceProxyToProxy(List classes) {
+		IRemoteServiceReference rsReference = getRemoteServiceReference();
+		// add IRemoteServiceProxy interface to set of interfaces supported by this proxy
+		if (rsReference != null && rsReference.getProperty(Constants.SERVICE_PREVENT_RSPROXY) == null)
 			classes.add(IRemoteServiceProxy.class);
-			return createProxy((Class[]) classes.toArray(new Class[] {}));
+	}
+
+	/**
+	 * @since 6.0
+	 */
+	@SuppressWarnings("unchecked")
+	public Object getProxy(ClassLoader cl, Class[] interfaces) throws ECFException {
+		// Add async classes
+		// for all interfaces, add async classes
+		List classes = new ArrayList();
+		for (int i = 0; i < interfaces.length; i++) {
+			// add interface to classes
+			classes.add(interfaces[i]);
+			Class asyncClass = findAsyncRemoteServiceProxyClass(cl, interfaces[i]);
+			if (asyncClass != null)
+				classes.add(asyncClass);
+		}
+		// Add IRemoteServiceProxy to classes, if not restricted via service properties
+		addRemoteServiceProxyToProxy(classes);
+		// create and return proxy
+		try {
+			return createProxy(cl, (Class[]) classes.toArray(new Class[classes.size()]));
 		} catch (final Exception e) {
 			ECFException except = new ECFException("Failed to create proxy", e); //$NON-NLS-1$
 			logWarning("Exception in remote service getProxy", except); //$NON-NLS-1$
@@ -84,8 +126,41 @@
 		}
 	}
 
+	class ProxyClassLoader extends ClassLoader {
+
+		private ClassLoader cl;
+
+		public ProxyClassLoader(ClassLoader cl) {
+			this.cl = cl;
+		}
+
+		public Class loadClass(String name) throws ClassNotFoundException {
+			try {
+				return cl.loadClass(name);
+			} catch (ClassNotFoundException e) {
+				// If the classloader passed in upon construction cannot 
+				// find the class, then use this bundle's classloader to
+				// try to load the class
+				Activator a = Activator.getDefault();
+				if (a == null)
+					throw e;
+				BundleContext context = a.getContext();
+				if (context == null)
+					throw e;
+				return context.getBundle().loadClass(name);
+			}
+		}
+	}
+
+	/**
+	 * @since 6.0
+	 */
+	protected Object createProxy(ClassLoader cl, Class[] classes) {
+		return Proxy.newProxyInstance(new ProxyClassLoader(cl), classes, this);
+	}
+
 	protected Object createProxy(Class[] classes) {
-		return Proxy.newProxyInstance(this.getClass().getClassLoader(), classes, this);
+		return createProxy(this.getClass().getClassLoader(), classes);
 	}
 
 	/**
@@ -95,8 +170,24 @@
 		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$
+			return null;
+		}
+	}
+
+	/**
+	 * @since 6.0
+	 */
+	protected Class findAsyncRemoteServiceProxyClass(ClassLoader cl, Class c) {
+		String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
+		try {
+			return Class.forName(proxyClassName, true, cl);
+		} 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$
@@ -105,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;
 	}
 
@@ -276,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 9d8b479..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
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2004, 2009 Composent, Inc. and others.
+ * Copyright (c) 2004-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
@@ -11,15 +11,13 @@
 
 package org.eclipse.ecf.remoteservice;
 
-import org.eclipse.ecf.core.IContainer;
-
 /**
  * Remote service API constants.
  */
 public interface Constants {
 
 	/**
-	 * Remote service property (named &quot;remote.objectClass&quot;) identifying all
+	 * Remote service property identifying all (named &quot;ecf.robjectClass&quot;) 
 	 * of the class names under which a service was registered in the remote
 	 * services API (of type <code>java.lang.String[]</code>).
 	 * 
@@ -31,7 +29,7 @@
 
 	/**
 	 * Remote service property (named &quot;ecf.rsvc.id&quot;) identifying a
-	 * service's registration number (of type <code>java.lang.Long</code>).
+	 * service's remote registration number (of type <code>java.lang.Long</code>).
 	 * 
 	 * <p>
 	 * The value of this property is assigned by the remote services API when a
@@ -43,7 +41,7 @@
 	public static final String SERVICE_ID = "ecf.rsvc.id"; //$NON-NLS-1$
 
 	/**
-	 * Service property (named &quot;remote.service.ranking&quot;) identifying a
+	 * Service property (named &quot;ecf.rsvc.ranking&quot;) identifying a
 	 * service's ranking number (of type <code>java.lang.Integer</code>).
 	 * 
 	 * <p>
@@ -75,30 +73,6 @@
 	public static final String SERVICE_RANKING = "ecf.rsvc.ranking"; //$NON-NLS-1$
 
 	/**
-	 * Service property (named &quot;remote.service.vendor&quot;) identifying a
-	 * service's vendor.
-	 * 
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the
-	 * <code>IRemoteServiceContainerAdapter.registerRemoteService</code>
-	 * method.
-	 */
-	public static final String SERVICE_VENDOR = "ecf.rsvc.vendor"; //$NON-NLS-1$
-
-	/**
-	 * Service property (named &quot;remoteservice.description&quot;)
-	 * identifying a service's description.
-	 * 
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the
-	 * <code>IRemoteServiceContainerAdapter.registerRemoteService</code>
-	 * method.
-	 */
-	public static final String SERVICE_DESCRIPTION = "ecf.rsvc.desc"; //$NON-NLS-1$
-
-	/**
 	 * Service property (named &quot;remoteservice.description&quot;)
 	 * identifying a a registration's target for receiving the service. The
 	 * value of the property MUST be either a non-<code>null</code> instance
@@ -112,37 +86,6 @@
 	public static final String SERVICE_REGISTRATION_TARGETS = "ecf.rsvc.reg.targets"; //$NON-NLS-1$
 
 	/**
-	 * Remote service property that defines the container factory name.
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the
-	 * <code>IRemoteServiceContainerAdapter.registerRemoteService</code>
-	 * method.
-	 * @since 3.0
-	 */
-	public static final String SERVICE_CONTAINER_FACTORY_NAME = "ecf.rsvc.cfn"; //$NON-NLS-1$
-
-	/**
-	 * Service property that defines the container target for connection.
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the
-	 * <code>IRemoteServiceContainerAdapter.registerRemoteService</code>
-	 * method.
-	 * @since 3.0
-	 */
-	public static final String SERVICE_CONTAINER_TARGET = "ecf.rsvc.target"; //$NON-NLS-1$
-
-	/**
-	 * Service property that defines the remote service container ID factory name.
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the <code>BundleContext.registerService</code> method.
-	 * @since 3.0
-	 */
-	public static final String SERVICE_CONTAINER_ID_FACTORY = "ecf.rsvc.cidf"; //$NON-NLS-1$
-
-	/**
 	 * Remote service property that defines the remote service container ID.
 	 * <p>
 	 * This property may be supplied in the properties <code>Dictionary</code>
@@ -152,98 +95,103 @@
 	public static final String SERVICE_CONTAINER_ID = "ecf.rsvc.cid"; //$NON-NLS-1$
 
 	/**
-	 * Remote service property that defines the remote service container ID.
-	 * <p>
-	 * @since 5.0
-	 */
-	public static final String SERVICE_PROXY_CONTAINER_ID = "ecf.rsvc.pcid"; //$NON-NLS-1$
-
-	/**
-	 * Service property that determines whether a remote service proxy is automatically added to the local
-	 * service registry.  This property can be used to expose remote services transparently
-	 * to client (i.e. automatically putting a proxy into the client's local service registry).
-	 * If this property is set in during service registration, then the the associated remote 
-	 * service proxy should be added to the client's service registry by the implementing provider.  The value 
-	 * of the property can be any non-<code>null</code> value.  
-	 * <p></p>
-	 * For example:
-	 * <pre>
-	 * final Dictionary props = new Hashtable();
-	 * props.put(Constants.AUTOREGISTER_REMOTE_PROXY, "true");
-	 * // Register
-	 * adapters[0].registerRemoteService(new String[] {IConcatService.class.getName()}, serviceImpl, props);
-	 * </pre>
-	 * 
-	 */
-	public static final String AUTOREGISTER_REMOTE_PROXY = "ecf.rsvc.areg"; //$NON-NLS-1$
-
-	// Constants for use with the ECF remote services API
-
-	/**
-	 * Discovery service property to specify a namespace name for creating a connect id.  Note that
-	 * this property should be equal to the name of the namespace retrieved from {@link IContainer#getConnectNamespace()}.
-	 * Note that this property is <b>optional</b>.
-	 * @since 3.0
-	 */
-	public static final String SERVICE_CONNECT_ID_NAMESPACE = "ecf.rsvc.cnct.id.ns"; //$NON-NLS-1$
-
-	/**
-	 * Discovery service property to specify value for creating a connect id.  Note that
-	 * this property should be equal to connectID retrieved from {@link IContainer#getConnectedID()}.
-	 * Note that this property is <b>optional</b>.
-	 * @since 3.0
-	 */
-	public static final String SERVICE_CONNECT_ID = "ecf.rsvc.cnct.id"; //$NON-NLS-1$
-
-	/**
-	 * Discovery service property to specify a namespace name for creating a target service ID.
-	 * Note that this property is <b>optional</b>. It is 
-	 * expected that clients will use the value of this property, along with the SERVICE_ID_PROPERTY
-	 * to create an ID instance for the 'idFilter' parameter via
-	 * remoteServicesContainerAdapter.getRemoteServiceReferences(ID [] idFilter, String clazz, String filter). 
-	 * @since 3.0
-	 */
-	public static final String SERVICE_IDFILTER_NAMESPACE = "ecf.rsvc.idfltr.ns"; //$NON-NLS-1$
-
-	/**
-	 * Discovery service property for a 'remotesvcs' discovery type.  Note that this
-	 * property is <b>optional</b>.  It is expected
-	 * that clients will use the value of this property, along with the SERVICE_IDFILTER_NAMESPACE
-	 * to create an ID instance for the 'idFilter' parameter via
-	 * remoteServicesContainerAdapter.getRemoteServiceReferences(ID [] idFilter, String clazz, String filter). 
-	 * @since 3.0
-	 */
-	public static final String SERVICE_IDFILTER_ID = "ecf.rsvc.idfltr.id"; //$NON-NLS-1$
-
-	/**
-	 * Discovery Service property specifying the clazz paramter in  
-	 * remoteServiceContainerAdapter.getRemoteServiceReferences(ID [] idFilter, String clazz, String filter);
-	 * @since 3.0
-	 */
-	public static final String SERVICE_OBJECTCLASS = "ecf.rsvc.robjectclass"; //$NON-NLS-1$
-
-	/**
-	 * Discovery service property for specifying the service lookup filter for
-	 * client service lookup via 
-	 * remoteServicesContainerAdapter.getRemoteServiceReferences(ID [] idFilter, String clazz, String filter).  
-	 * Note that this
-	 * property is <b>optional</b> if the DISCOVERY_SERVICE_TYPE is as given above.
-	 * @since 3.0
-	 */
-	public static final String SERVICE_FILTER_PROPERTY = "ecf.rsvc.fltr"; //$NON-NLS-1$
-
-	/**
-	 * Discovery service property specifying the expected namespace name for corresponding
-	 * to remoteServiceContainerAdapter.getRemoteServicesNamespace()
-	 * @since 3.0
-	 */
-	public static final String SERVICE_NAMESPACE = "ecf.rsvc.ns"; //$NON-NLS-1$
-
-	/**
-	 * Service property used on service registration to indicate that a service proxy 
+	 * Remote service property used on service registration to indicate that a service proxy 
 	 * should be created rather than using the given service object (which may be null
 	 * when this service property is set).
 	 * @since 4.0
 	 */
 	public static final String SERVICE_REGISTER_PROXY = "ecf.rsvc.proxy"; //$NON-NLS-1$
+
+	/**
+	 * Remote service property used to prevent the automatic addition of the IRemoteServiceProxy
+	 * interface to the proxy returned from IRemoteService.getProxy.  If this service
+	 * property is set (to any non-null Object value), it will prevent the the IRemoteServiceProxy from
+	 * being added to the set of interfaces exposed by the proxy returned from IRemoteService.getProxy.
+	 * @since 6.0
+	 */
+	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$
+
+	/**
+	 * @deprecated
+	 */
+	public static final String SERVICE_CONNECT_ID_NAMESPACE = "ecf.rsvc.cnct.id.ns"; //$NON-NLS-1$
+
+	/**
+	 * @deprecated
+	 */
+	public static final String SERVICE_IDFILTER_NAMESPACE = "ecf.rsvc.idfltr.ns"; //$NON-NLS-1$
+
+	/**
+	 * @deprecated
+	 */
+	public static final String SERVICE_IDFILTER_ID = "ecf.rsvc.idfltr.id"; //$NON-NLS-1$
+
+	/**
+	 * @deprecated
+	 */
+	public static final String SERVICE_OBJECTCLASS = "ecf.rsvc.robjectclass"; //$NON-NLS-1$
+
+	/**
+	 * @deprecated
+	 */
+	public static final String SERVICE_FILTER_PROPERTY = "ecf.rsvc.fltr"; //$NON-NLS-1$
+
+	/**
+	 * @deprecated
+	 */
+	public static final String SERVICE_CONTAINER_FACTORY_NAME = "ecf.rsvc.cfn"; //$NON-NLS-1$
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java
index 51bfb38..b382c2c 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteService.java
@@ -116,12 +116,29 @@
 	 * @return Object that implements the interface specified in the
 	 *         IRemoteServiceReference instance used to retrieve the
 	 *         IRemoteService object. The result may then be cast to the
-	 *         appropriate type. The getProxy() contract guarantees that if a
-	 *         non-null Object is returned, that it will implement the interface
-	 *         specified for the IRemoteServiceReference. Will not be
-	 *         <code>null</code> .
+	 *         appropriate type. Will not be <code>null</code>.
 	 * @throws ECFException
-	 *             if not currently connected to remote service
+	 *             If some problem in creating the proxy.  The underlying problem is 
+	 *             conveyed in the nested exception.
 	 */
 	public Object getProxy() throws ECFException;
+
+	/**
+	 * Get local proxy for remote interface. The local proxy may then be used to
+	 * make remote method calls transparently by invoking the local proxy method
+	 * 
+	 * @param cl ClassLoader to use to create the proxy class.  
+	 *         Must not be <code>null</code>. 
+	 * @param interfaceClasses array of Class that has the loaded interface classes.  
+	 *         Must not be <code>null</code> and should have dimension of one or more.
+	 * @return Object that implements the given interfaceClasses.  The result may then 
+	 *         be cast to the one of the types given in interfaceClasses. Will not be
+	 *         <code>null</code>
+	 * @throws ECFException
+	 *             If some problem in creating the proxy.  The underlying problem is 
+	 *             conveyed in the nested exception.
+	 * @since 6.0
+	 */
+	public Object getProxy(ClassLoader cl, Class[] interfaceClasses) throws ECFException;
+
 }
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceCallPolicy.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceCallPolicy.java
new file mode 100644
index 0000000..5342008
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceCallPolicy.java
@@ -0,0 +1,37 @@
+/****************************************************************************

+ * Copyright (c) 2004, 2010 Composent, Inc., Franky Brandelance 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. and Franky Brandelance - initial API and implementation

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

+package org.eclipse.ecf.remoteservice;

+

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

+

+/**

+ * Interface providing the ability to add authorization on a remote service method call.

+ * @since 6.0

+ */

+public interface IRemoteServiceCallPolicy {

+

+	/**

+	 * The following method is to be called before the remote service method call to check 

+	 * if the remote service method call is authorized.  Providers supporting this API 

+	 * should call any available implementing instance prior to actually

+	 * invoking the given IRemoteCall.

+	 * 

+	 * @param fromID container ID of the remote caller.  

+	 *        May be <code>null</code>.

+	 * @param registration Remote service registration associated 

+	 *        with the given remoteCall.  Will not be <code>null</code>.

+	 * @param remoteCall Remote method call to invoke locally (assuming this 

+	 *        check passes).  Will not be <code>null</code>.

+	 * @throws SecurityException if remoteCall is not authorized for the 

+	 *         given caller fromID

+	 */

+	public void checkRemoteCall(ID fromID, IRemoteServiceRegistration registration, IRemoteCall remoteCall) throws SecurityException;

+}

diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java
index 9e35f17..d7117c1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.java
@@ -517,4 +517,13 @@
 	 */
 	public void setConnectContextForAuthentication(IConnectContext connectContext);
 
+	/**
+	 * Set the remote service call policy to enable authorization on remote service method calls
+	 * @param policy Implementation of <code>IRemoteServiceCallPolicy</code> containing authorization specific code
+	 * @return <code>true</code> if the underlying provider supports using the policy, <code>false</code> if
+	 * it does not support using the policy.
+	 * @since 6.0
+	 */
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy);
+
 }
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/RemoteServiceClientRegistration.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java
index 7d14fb6..f4ea5e9 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/client/RemoteServiceClientRegistration.java
@@ -72,10 +72,15 @@
 	}
 
 	public Object getProperty(String key) {
+		if (properties == null)
+			return null;
 		return properties.get(key);
 	}
 
 	public String[] getPropertyKeys() {
+		if (properties == null)
+			return new String[] {};
+
 		int length = properties.size();
 		Enumeration keys = properties.keys();
 		String[] result = new String[length];
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.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java
index cffa1ff..38963c2 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/util/RemoteFilterImpl.java
@@ -34,7 +34,7 @@
 
 	/**
 	 * @param createFilter
-	 * @since 5.1
+	 * @since 6.0
 	 */
 	public RemoteFilterImpl(BundleContext context, String createFilter) throws InvalidSyntaxException {
 		if (createFilter == null)
@@ -70,7 +70,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.remoteservice.IRemoteFilter#match(java.util.Dictionary)
 	 */
-	@SuppressWarnings("unchecked") // DO NOT REMOVE!!!
+	@SuppressWarnings("unchecked")
+	// DO NOT REMOVE!!!
 	public boolean match(Dictionary dictionary) {
 		return filter.match(dictionary);
 	}
@@ -78,7 +79,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.ecf.remoteservice.IRemoteFilter#matchCase(java.util.Dictionary)
 	 */
-	@SuppressWarnings("unchecked") // DO NOT REMOVE!!!
+	@SuppressWarnings("unchecked")
+	// DO NOT REMOVE!!!
 	public boolean matchCase(Dictionary dictionary) {
 		return filter.matchCase(dictionary);
 	}
@@ -121,7 +123,7 @@
 
 	/**
 	 * @see org.osgi.framework.Filter#matches(java.util.Map)
-	 * @since 5.1
+	 * @since 6.0
 	 */
 	@SuppressWarnings("unchecked")
 	public boolean matches(Map map) {
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/events/ContainerSharedObjectMessageReceivingEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageReceivingEvent.java
index 8b21f7e..1dda0fc 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageReceivingEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageReceivingEvent.java
@@ -16,18 +16,14 @@
 /**
  * Event class implementing {@link IContainerSharedObjectMessageReceivingEvent}.
  */
-public class ContainerSharedObjectMessageReceivingEvent implements
-		IContainerSharedObjectMessageReceivingEvent {
-
-	private static final long serialVersionUID = -2224760745950682934L;
+public class ContainerSharedObjectMessageReceivingEvent implements IContainerSharedObjectMessageReceivingEvent {
 
 	protected ID sendingContainerID;
 	protected ID sharedObjectID;
 	protected ID localContainerID;
 	protected Object message;
 
-	public ContainerSharedObjectMessageReceivingEvent(ID localContainerID,
-			ID sendingContainerID, ID sharedObjectID, Object message) {
+	public ContainerSharedObjectMessageReceivingEvent(ID localContainerID, ID sendingContainerID, ID sharedObjectID, Object message) {
 		this.localContainerID = localContainerID;
 		this.sendingContainerID = sendingContainerID;
 		this.sharedObjectID = sharedObjectID;
@@ -71,8 +67,7 @@
 	}
 
 	public String toString() {
-		StringBuffer buf = new StringBuffer(
-				"ContainerSharedObjectMessageReceivingEvent["); //$NON-NLS-1$
+		StringBuffer buf = new StringBuffer("ContainerSharedObjectMessageReceivingEvent["); //$NON-NLS-1$
 		buf.append("localContainerID=").append(localContainerID); //$NON-NLS-1$
 		buf.append(";sendingContainerID=").append(sendingContainerID); //$NON-NLS-1$
 		buf.append(";sharedObjectID=").append(sharedObjectID); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageSendingEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageSendingEvent.java
index b3813a8..20640ad 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageSendingEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/ContainerSharedObjectMessageSendingEvent.java
@@ -16,18 +16,14 @@
 /**
  * Event class implementing {@link IContainerSharedObjectMessageSendingEvent}.
  */
-public class ContainerSharedObjectMessageSendingEvent implements
-		IContainerSharedObjectMessageSendingEvent {
-
-	private static final long serialVersionUID = 3500128303573538068L;
+public class ContainerSharedObjectMessageSendingEvent implements IContainerSharedObjectMessageSendingEvent {
 
 	protected ID localContainerID;
 	protected ID targetContainerID;
 	protected ID sharedObjectID;
 	protected Object message;
 
-	public ContainerSharedObjectMessageSendingEvent(ID localContainerID,
-			ID targetContainerID, ID sharedObjectID, Object message) {
+	public ContainerSharedObjectMessageSendingEvent(ID localContainerID, ID targetContainerID, ID sharedObjectID, Object message) {
 		this.localContainerID = localContainerID;
 		this.targetContainerID = targetContainerID;
 		this.sharedObjectID = sharedObjectID;
@@ -71,8 +67,7 @@
 	}
 
 	public String toString() {
-		StringBuffer buf = new StringBuffer(
-				"ContainerSharedObjectMessageSendingEvent["); //$NON-NLS-1$
+		StringBuffer buf = new StringBuffer("ContainerSharedObjectMessageSendingEvent["); //$NON-NLS-1$
 		buf.append("localContainerID=").append(localContainerID); //$NON-NLS-1$
 		buf.append(";targetContainerID=").append(targetContainerID); //$NON-NLS-1$
 		buf.append(";sharedObjectID=").append(sharedObjectID); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectActivatedEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectActivatedEvent.java
index c005523..99e9edf 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectActivatedEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectActivatedEvent.java
@@ -11,8 +11,6 @@
 import org.eclipse.ecf.core.identity.ID;
 
 public class SharedObjectActivatedEvent implements ISharedObjectActivatedEvent {
-	private static final long serialVersionUID = 6880286157835412766L;
-
 	private final ID activatedID;
 
 	private final ID localContainerID;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectCallEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectCallEvent.java
index b08c56d..6b7379e 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectCallEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectCallEvent.java
@@ -16,8 +16,6 @@
 import org.eclipse.equinox.concurrent.future.IFuture;
 
 public class SharedObjectCallEvent implements ISharedObjectCallEvent {
-	private static final long serialVersionUID = 3904674977264250933L;
-
 	ID sender;
 
 	Event event;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectDeactivatedEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectDeactivatedEvent.java
index a1c519d..40da70e 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectDeactivatedEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectDeactivatedEvent.java
@@ -10,10 +10,7 @@
 
 import org.eclipse.ecf.core.identity.ID;
 
-public class SharedObjectDeactivatedEvent implements
-		ISharedObjectDeactivatedEvent {
-	private static final long serialVersionUID = 3257291344119476786L;
-
+public class SharedObjectDeactivatedEvent implements ISharedObjectDeactivatedEvent {
 	private final ID deactivatedID;
 
 	private final ID localContainerID;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerAddEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerAddEvent.java
index 877a385..e270b0f 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerAddEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerAddEvent.java
@@ -18,8 +18,6 @@
  * is called
  */
 public class SharedObjectManagerAddEvent implements ISharedObjectManagerEvent {
-	private static final long serialVersionUID = 3258413923916330551L;
-
 	ID localContainerID = null;
 
 	ID sharedObjectID = null;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerConnectEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerConnectEvent.java
index 337ed98..ab6e1a5 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerConnectEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerConnectEvent.java
@@ -19,16 +19,12 @@
  * is called.
  * 
  */
-public class SharedObjectManagerConnectEvent implements
-		ISharedObjectManagerConnectionEvent {
-	private static final long serialVersionUID = 3544670676712633650L;
-
+public class SharedObjectManagerConnectEvent implements ISharedObjectManagerConnectionEvent {
 	ID localContainerID = null;
 
 	ISharedObjectConnector connector = null;
 
-	public SharedObjectManagerConnectEvent(ID localContainerID,
-			ISharedObjectConnector connector) {
+	public SharedObjectManagerConnectEvent(ID localContainerID, ISharedObjectConnector connector) {
 		this.localContainerID = localContainerID;
 		this.connector = connector;
 	}
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerCreateEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerCreateEvent.java
index 18471a3..ba8d889 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerCreateEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerCreateEvent.java
@@ -16,10 +16,7 @@
  * {@link ISharedObjectManager#createSharedObject(org.eclipse.ecf.core.sharedobject.SharedObjectDescription)}
  * is called
  */
-public class SharedObjectManagerCreateEvent implements
-		ISharedObjectManagerEvent {
-	private static final long serialVersionUID = 3905527103070878006L;
-
+public class SharedObjectManagerCreateEvent implements ISharedObjectManagerEvent {
 	ID localContainerID = null;
 
 	ID sharedObjectID = null;
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerDisconnectEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerDisconnectEvent.java
index 64fe7f2..b94f5a9 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerDisconnectEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerDisconnectEvent.java
@@ -19,16 +19,12 @@
  * is called.
  * 
  */
-public class SharedObjectManagerDisconnectEvent implements
-		ISharedObjectManagerConnectionEvent {
-	private static final long serialVersionUID = 3257008743777448761L;
-
+public class SharedObjectManagerDisconnectEvent implements ISharedObjectManagerConnectionEvent {
 	ID localContainerID = null;
 
 	ISharedObjectConnector connector = null;
 
-	public SharedObjectManagerDisconnectEvent(ID localContainerID,
-			ISharedObjectConnector connector) {
+	public SharedObjectManagerDisconnectEvent(ID localContainerID, ISharedObjectConnector connector) {
 		this.localContainerID = localContainerID;
 		this.connector = connector;
 	}
@@ -61,8 +57,7 @@
 	}
 
 	public String toString() {
-		StringBuffer buf = new StringBuffer(
-				"SharedObjectManagerDisconnectEvent["); //$NON-NLS-1$
+		StringBuffer buf = new StringBuffer("SharedObjectManagerDisconnectEvent["); //$NON-NLS-1$
 		buf.append(getLocalContainerID()).append(";"); //$NON-NLS-1$
 		buf.append(getSharedObjectID()).append(";"); //$NON-NLS-1$
 		buf.append(getConnector()).append("]"); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerRemoveEvent.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerRemoveEvent.java
index c9148d0..9e2f8c2 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerRemoveEvent.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/sharedobject/events/SharedObjectManagerRemoveEvent.java
@@ -16,10 +16,7 @@
  * from a container via {@link ISharedObjectManager#removeSharedObject(ID)} is
  * called
  */
-public class SharedObjectManagerRemoveEvent implements
-		ISharedObjectManagerEvent {
-	private static final long serialVersionUID = 3256728389754106931L;
-
+public class SharedObjectManagerRemoveEvent implements ISharedObjectManagerEvent {
 	ID sharedObjectID = null;
 
 	ID localContainerID = null;
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..7abc8de 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 volatile 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.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
index faca891..61f6105 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
@@ -11,7 +11,7 @@
 package org.eclipse.ecf.core.util.reflection;
 
 import java.lang.reflect.Method;
-import java.util.Arrays;
+import java.util.*;
 
 /**
  * @since 2.2
@@ -19,6 +19,19 @@
  */
 public class ClassUtil {
 
+	private static Map convertor = new HashMap();
+
+	static {
+		convertor.put(boolean.class, Boolean.class);
+		convertor.put(byte.class, Byte.class);
+		convertor.put(char.class, Character.class);
+		convertor.put(double.class, Double.class);
+		convertor.put(float.class, Float.class);
+		convertor.put(int.class, Integer.class);
+		convertor.put(long.class, Long.class);
+		convertor.put(short.class, Short.class);
+	}
+
 	/**
 	 * @param aClass The Class providing method under question (Must not be null)
 	 * @param aMethodName The method name to search for (Must not be null)
@@ -54,25 +67,63 @@
 		final int parameterCount = someParameterTypes.length;
 		aMethodName = aMethodName.intern();
 
+		final TreeSet matches = new TreeSet(new MethodComparator(someParameterTypes));
 		OUTER: for (int i = 0; i < candidates.length; i++) {
-			Method candidate = candidates[i];
-			String candidateMethodName = candidate.getName().intern();
-			Class[] candidateParameterTypes = candidate.getParameterTypes();
-			int candidateParameterCount = candidateParameterTypes.length;
+			final Method candidate = candidates[i];
+			final String candidateMethodName = candidate.getName().intern();
+			final Class[] candidateParameterTypes = candidate.getParameterTypes();
+			final int candidateParameterCount = candidateParameterTypes.length;
 			if (candidateParameterCount == parameterCount && aMethodName == candidateMethodName) {
 				for (int j = 0; j < candidateParameterCount; j++) {
-					Class clazzA = candidateParameterTypes[j];
-					Class clazzB = someParameterTypes[j];
-					// clazzA must be non-null, but clazzB could be null (null given as parameter value)
-					// so in that case we consider it a match and continue
-					if (!(clazzB == null || clazzA.isAssignableFrom(clazzB))) {
+					final Class clazzA = candidateParameterTypes[j];
+					final Class clazzB = someParameterTypes[j];
+					if (clazzB != null && !isAssignableFrom(clazzA, clazzB)) {
 						continue OUTER;
 					}
 				}
-				return candidate;
+				matches.add(candidate);
 			}
 		}
+
 		// if no match has been found, fail with NSME
-		throw new NoSuchMethodException("No such method: " + aMethodName + "(" + Arrays.asList(someParameterTypes) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		if (matches.size() == 0) {
+			throw new NoSuchMethodException("No such method: " + aMethodName + "(" + Arrays.asList(someParameterTypes) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
+		return (Method) matches.first();
+	}
+
+	// extends Class.isAssingable(Class) with autoboxing
+	private static boolean isAssignableFrom(Class clazzA, Class clazzB) {
+		if (!(clazzA.isPrimitive() ^ clazzB.isPrimitive())) {
+			return clazzA.isAssignableFrom(clazzB);
+		} else if (clazzA.isPrimitive()) {
+			final Class oClazzA = (Class) convertor.get(clazzA);
+			return oClazzA.isAssignableFrom(clazzB);
+		} else {
+			final Class oClazzB = (Class) convertor.get(clazzB);
+			return clazzA.isAssignableFrom(oClazzB);
+		}
+	}
+
+	private static class MethodComparator implements Comparator {
+
+		private final Class[] parameterTypes;
+
+		public MethodComparator(Class[] someParameterTypes) {
+			parameterTypes = someParameterTypes;
+		}
+
+		public int compare(Object object1, Object object2) {
+			final Class[] pt1 = ((Method) object1).getParameterTypes();
+			final Class[] pt2 = ((Method) object2).getParameterTypes();
+
+			if (Arrays.equals(pt1, pt2)) {
+				return 0;
+			} else if (Arrays.equals(parameterTypes, pt1)) {
+				return -1;
+			} else {
+				return 1;
+			}
+		}
 	}
 }
diff --git a/framework/bundles/org.eclipse.ecf.ssl/.settings/org.eclipse.pde.api.tools.prefs b/framework/bundles/org.eclipse.ecf.ssl/.settings/org.eclipse.pde.api.tools.prefs
index d9e7782..ab93531 100644
--- a/framework/bundles/org.eclipse.ecf.ssl/.settings/org.eclipse.pde.api.tools.prefs
+++ b/framework/bundles/org.eclipse.ecf.ssl/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:17:51 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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/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/.settings/org.eclipse.pde.api.tools.prefs b/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.pde.api.tools.prefs
index 4124dae..ab93531 100644
--- a/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.pde.api.tools.prefs
+++ b/framework/bundles/org.eclipse.ecf/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:13:41 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
index 3864e4d..c7dd756 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
@@ -20,7 +20,7 @@
  org.eclipse.ecf.core.util,
  org.eclipse.ecf.internal.core;x-internal:=true
 Import-Package: org.eclipse.core.runtime.jobs,
- org.eclipse.equinox.concurrent.future;version="1.0.0";resolution:=optional,
+ org.eclipse.equinox.concurrent.future;version="1.0.0";resolution:=optional;x-installation:=greedy,
  org.osgi.framework;version="1.3.0",
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.3.2"
diff --git a/framework/bundles/org.eclipse.ecf/javadoc.xml b/framework/bundles/org.eclipse.ecf/javadoc.xml
index fed9d0c..f2f18b6 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.4.0" 

+        	doctitle="Eclipse Communication Framework (ECF) 3.5.6" 

         	nodeprecated="false" 

         	nodeprecatedlist="false" 

         	noindex="false" 

@@ -28,15 +28,20 @@
         	

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

 	        	<exclude name="**/ch/**"/>

 	        	<exclude name="**/jmdns/**"/>

 	        	<exclude name="**/tests/**"/>

+	        	<exclude name="**/sdo/**"/>

+	        	<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/events/ContainerConnectedEvent.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectedEvent.java
index ae679b2..79deb2a 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectedEvent.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectedEvent.java
@@ -15,8 +15,6 @@
  * 
  */
 public class ContainerConnectedEvent implements IContainerConnectedEvent {
-	private static final long serialVersionUID = 3833467322827617078L;
-
 	private final ID joinedContainerID;
 
 	private final ID localContainerID;
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectingEvent.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectingEvent.java
index b1f6dce..e7d68e1 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectingEvent.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerConnectingEvent.java
@@ -11,8 +11,6 @@
 import org.eclipse.ecf.core.identity.ID;
 
 public class ContainerConnectingEvent implements IContainerConnectingEvent {
-	private static final long serialVersionUID = 3544952173248263729L;
-
 	ID localContainerID;
 
 	ID targetID;
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectedEvent.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectedEvent.java
index 41d87f4..ce8e6a4 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectedEvent.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectedEvent.java
@@ -16,8 +16,6 @@
  * Container disconnected event.
  */
 public class ContainerDisconnectedEvent implements IContainerDisconnectedEvent {
-	private static final long serialVersionUID = 3256437002059527733L;
-
 	private final ID departedContainerID;
 
 	private final ID localContainerID;
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectingEvent.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectingEvent.java
index 851e47a..c5497be 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectingEvent.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisconnectingEvent.java
@@ -11,8 +11,6 @@
 import org.eclipse.ecf.core.identity.ID;
 
 public class ContainerDisconnectingEvent implements IContainerDisconnectingEvent {
-	private static final long serialVersionUID = 3257570607204742200L;
-
 	ID localContainerID;
 
 	ID groupID;
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisposeEvent.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisposeEvent.java
index 34508a3..583729a 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisposeEvent.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerDisposeEvent.java
@@ -11,8 +11,6 @@
 import org.eclipse.ecf.core.identity.ID;
 
 public class ContainerDisposeEvent implements IContainerDisposeEvent {
-	private static final long serialVersionUID = 3618138961349062706L;
-
 	private final ID localContainerID;
 
 	public ContainerDisposeEvent(ID localContainerID) {
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerEjectedEvent.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerEjectedEvent.java
index 2d348c7..79ee375 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerEjectedEvent.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/events/ContainerEjectedEvent.java
@@ -12,8 +12,6 @@
 import org.eclipse.ecf.core.identity.ID;
 
 public class ContainerEjectedEvent implements IContainerEjectedEvent {
-	private static final long serialVersionUID = 3257567299946033970L;
-
 	private final ID localContainerID;
 
 	private final ID groupID;
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java
index 7519cef..9525df2 100644
--- a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/provider/BaseContainerInstantiator.java
@@ -44,9 +44,8 @@
 
 	protected Set getInterfacesForClass(Class clazz) {
 		Set clazzes = getInterfacesForClass(new HashSet(), clazz);
-		int index = 0;
 		Set result = new HashSet();
-		for (Iterator i = clazzes.iterator(); i.hasNext(); index++)
+		for (Iterator i = clazzes.iterator(); i.hasNext();)
 			result.add(((Class) i.next()).getName());
 		return result;
 	}
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/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
deleted file mode 100644
index 4272128..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.osgi.services.remoteserviceadmin</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/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index cfea9c8..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Fri Sep 24 11:37:28 PDT 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
deleted file mode 100644
index c6515c0..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               bundle.properties
-jre.compilation.profile = J2SE-1.4
-javacTarget=jsr14
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
deleted file mode 100644
index 45178c6..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;
-
-import java.util.UUID;
-
-import javax.xml.parsers.SAXParserFactory;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.ecf.core.IContainerManager;
-import org.eclipse.ecf.core.util.LogHelper;
-import org.eclipse.ecf.core.util.SystemLogService;
-import org.eclipse.ecf.osgi.services.remoteserviceadmin.TopologyManager;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class Activator implements BundleActivator {
-
-	public static final String PLUGIN_ID = "org.eclipse.ecf.osgi.services.remoteserviceadmin";
-
-	private static BundleContext context;
-	private static Activator instance;
-
-	static BundleContext getContext() {
-		return context;
-	}
-
-	public static Activator getDefault() {
-		return instance;
-	}
-
-	private Discovery discovery;
-	private TopologyManager topologyManager;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext
-	 * )
-	 */
-	public void start(BundleContext bundleContext) throws Exception {
-		Activator.context = bundleContext;
-		Activator.instance = this;
-		discovery = new Discovery(context);
-		topologyManager = new TopologyManager(context, discovery);
-		// start topology manager
-		topologyManager.start();
-		// start discovery
-		discovery.start();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext bundleContext) throws Exception {
-		if (discovery != null) {
-			discovery.close();
-			discovery = null;
-		}
-		if (topologyManager != null) {
-			topologyManager.close();
-			topologyManager = null;
-		}
-		stopSAXParserTracker();
-		stopLogServiceTracker();
-		stopContainerManagerTracker();
-		Activator.context = null;
-		Activator.instance = null;
-	}
-
-	public String getFrameworkUUID() {
-		if (context == null)
-			return null;
-		// code get and set the framework uuid property as specified in
-		// r2.enterprise.pdf pg 297
-		synchronized ("org.osgi.framework.uuid") {
-			String result = context.getProperty("org.osgi.framework.uuid");
-			if (result == null) {
-				UUID newUUID = UUID.randomUUID();
-				result = newUUID.toString();
-				System.setProperty("org.osgi.framework.uuid",
-						newUUID.toString());
-			}
-			return result;
-		}
-	}
-
-	// Sax parser
-
-	private Object saxParserFactoryTrackerLock = new Object();
-	private ServiceTracker saxParserFactoryTracker;
-
-	public SAXParserFactory getSAXParserFactory() {
-		if (instance == null)
-			return null;
-		synchronized (saxParserFactoryTrackerLock) {
-			if (saxParserFactoryTracker == null) {
-				saxParserFactoryTracker = new ServiceTracker(context,
-						SAXParserFactory.class.getName(), null);
-				saxParserFactoryTracker.open();
-			}
-			return (SAXParserFactory) saxParserFactoryTracker.getService();
-		}
-	}
-
-	private void stopSAXParserTracker() {
-		synchronized (saxParserFactoryTrackerLock) {
-			if (saxParserFactoryTracker != null) {
-				saxParserFactoryTracker.close();
-				saxParserFactoryTracker = null;
-			}
-		}
-	}
-
-	// Logging
-
-	private ServiceTracker logServiceTracker = null;
-	private LogService logService = null;
-	private Object logServiceTrackerLock = new Object();
-
-	public LogService getLogService() {
-		if (context == null)
-			return null;
-		synchronized (logServiceTrackerLock) {
-			if (logServiceTracker == null) {
-				logServiceTracker = new ServiceTracker(context,
-						LogService.class.getName(), null);
-				logServiceTracker.open();
-			}
-			logService = (LogService) logServiceTracker.getService();
-			if (logService == null)
-				logService = new SystemLogService(PLUGIN_ID);
-			return logService;
-		}
-	}
-
-	public void log(IStatus status) {
-		if (logService == null)
-			logService = getLogService();
-		if (logService != null)
-			logService.log(null, LogHelper.getLogCode(status),
-					LogHelper.getLogMessage(status), status.getException());
-	}
-
-	public void log(ServiceReference sr, IStatus status) {
-		log(sr, LogHelper.getLogCode(status), LogHelper.getLogMessage(status),
-				status.getException());
-	}
-
-	public void log(ServiceReference sr, int level, String message, Throwable t) {
-		if (logService == null)
-			logService = getLogService();
-		if (logService != null)
-			logService.log(sr, level, message, t);
-	}
-
-	private void stopLogServiceTracker() {
-		synchronized (logServiceTrackerLock) {
-			if (logServiceTracker != null) {
-				logServiceTracker.close();
-				logServiceTracker = null;
-				logService = null;
-			}
-		}
-	}
-
-	private ServiceTracker containerManagerTracker;
-
-	public IContainerManager getContainerManager() {
-		if (containerManagerTracker == null) {
-			containerManagerTracker = new ServiceTracker(context,
-					IContainerManager.class.getName(), null);
-			containerManagerTracker.open();
-		}
-		return (IContainerManager) containerManagerTracker.getService();
-	}
-
-	private void stopContainerManagerTracker() {
-		if (containerManagerTracker != null) {
-			containerManagerTracker.close();
-			containerManagerTracker = null;
-		}
-	}
-}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java
deleted file mode 100644
index 37c5018..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java
+++ /dev/null
@@ -1,595 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;

-

-import java.util.ArrayList;

-import java.util.Collection;

-import java.util.Dictionary;

-import java.util.HashMap;

-import java.util.Iterator;

-import java.util.List;

-import java.util.Map;

-import java.util.Properties;

-

-import org.eclipse.core.runtime.IProgressMonitor;

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

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

-import org.eclipse.ecf.discovery.IServiceInfo;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.DiscoveredEndpointDescriptionFactory;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionReader;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.IDiscoveredEndpointDescriptionFactory;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.IEndpointDescriptionReader;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.IServiceInfoFactory;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.ServiceInfoFactory;

-import org.eclipse.equinox.concurrent.future.IExecutor;

-import org.eclipse.equinox.concurrent.future.IProgressRunnable;

-import org.eclipse.equinox.concurrent.future.ThreadsExecutor;

-import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;

-import org.eclipse.osgi.framework.eventmgr.EventDispatcher;

-import org.eclipse.osgi.framework.eventmgr.EventManager;

-import org.eclipse.osgi.framework.eventmgr.ListenerQueue;

-import org.osgi.framework.Bundle;

-import org.osgi.framework.BundleContext;

-import org.osgi.framework.Constants;

-import org.osgi.framework.ServiceReference;

-import org.osgi.framework.ServiceRegistration;

-import org.osgi.service.remoteserviceadmin.EndpointDescription;

-import org.osgi.service.remoteserviceadmin.EndpointListener;

-import org.osgi.util.tracker.BundleTracker;

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

-import org.osgi.util.tracker.ServiceTrackerCustomizer;

-

-public class Discovery {

-

-	private BundleContext context;

-	private IExecutor executor;

-

-	// service info factory default

-	private ServiceInfoFactory serviceInfoFactory;

-	private ServiceRegistration defaultServiceInfoFactoryRegistration;

-	// service info factory service tracker

-	private Object serviceInfoFactoryTrackerLock = new Object();

-	private ServiceTracker serviceInfoFactoryTracker;

-

-	// endpoint description factory default

-	private DiscoveredEndpointDescriptionFactory defaultEndpointDescriptionFactory;

-	private ServiceRegistration defaultEndpointDescriptionFactoryRegistration;

-	// endpoint description factory tracker

-	private Object endpointDescriptionFactoryTrackerLock = new Object();

-	private ServiceTracker endpointDescriptionFactoryTracker;

-	// endpointDescriptionReader default

-	private ServiceRegistration defaultEndpointDescriptionReaderRegistration;

-

-	// For processing synchronous notifications asynchronously

-	private EventManager eventManager;

-	private ListenerQueue eventQueue;

-	private LocatorServiceListener localLocatorServiceListener;

-

-	// ECF IDiscoveryLocator tracker

-	private ServiceTracker locatorServiceTracker;

-	// Locator listeners

-	private Map<IDiscoveryLocator, LocatorServiceListener> locatorListeners;

-

-	private EndpointListenerTrackerCustomizer endpointListenerTrackerCustomizer;

-	private ServiceTracker endpointListenerTracker;

-

-	private ServiceTracker advertiserTracker;

-	private Object advertiserTrackerLock = new Object();

-

-	private BundleTracker bundleTracker;

-	private EndpointDescriptionBundleTrackerCustomizer bundleTrackerCustomizer;

-

-	public Discovery(BundleContext context) {

-		this.context = context;

-		this.executor = new ThreadsExecutor();

-	}

-

-	public void start() {

-		// For service info and endpoint description factories

-		// set the service ranking to Integer.MIN_VALUE

-		// so that any other registered factories will be preferred

-		final Properties properties = new Properties();

-		properties.put(Constants.SERVICE_RANKING,

-				new Integer(Integer.MIN_VALUE));

-		serviceInfoFactory = new ServiceInfoFactory();

-		defaultServiceInfoFactoryRegistration = context.registerService(

-				IServiceInfoFactory.class.getName(), serviceInfoFactory,

-				(Dictionary) properties);

-		defaultEndpointDescriptionFactory = new DiscoveredEndpointDescriptionFactory();

-		defaultEndpointDescriptionFactoryRegistration = context

-				.registerService(

-						IDiscoveredEndpointDescriptionFactory.class.getName(),

-						defaultEndpointDescriptionFactory,

-						(Dictionary) properties);

-		// setup/register default endpointDescriptionReader

-		defaultEndpointDescriptionReaderRegistration = context.registerService(

-				IEndpointDescriptionReader.class.getName(),

-				new EndpointDescriptionReader(), properties);

-

-		// Create thread group, event manager, and eventQueue, and setup to

-		// dispatch EndpointListenerEvents

-		ThreadGroup eventGroup = new ThreadGroup(

-				"EventAdmin Discovery EndpointListener Dispatcher"); //$NON-NLS-1$

-		eventGroup.setDaemon(true);

-		eventManager = new EventManager(

-				"EventAdmin EndpointListener Dispatcher", eventGroup); //$NON-NLS-1$

-		eventQueue = new ListenerQueue(eventManager);

-		CopyOnWriteIdentityMap listeners = new CopyOnWriteIdentityMap();

-		listeners.put(this, this);

-		eventQueue.queueListeners(listeners.entrySet(), new EventDispatcher() {

-			public void dispatchEvent(Object eventListener,

-					Object listenerObject, int eventAction, Object eventObject) {

-				final String logMethodName = "dispatchEvent";

-				final EndpointListenerEvent event = (EndpointListenerEvent) eventObject;

-				final EndpointListener endpointListener = event

-						.getEndpointListener();

-				final EndpointDescription endpointDescription = event

-						.getEndointDescription();

-				final String matchingFilter = event.getMatchingFilter();

-

-				try {

-					if (event.isDiscovered())

-						endpointListener.endpointAdded(endpointDescription,

-								matchingFilter);

-					else

-						endpointListener.endpointRemoved(endpointDescription,

-								matchingFilter);

-				} catch (Exception e) {

-					String message = "Exception in EndpointListener listener="

-							+ endpointListener + " description="

-							+ endpointDescription + " matchingFilter="

-							+ matchingFilter;

-					logError(logMethodName, message, e);

-				} catch (LinkageError e) {

-					String message = "LinkageError in EndpointListener listener="

-							+ endpointListener

-							+ " description="

-							+ endpointDescription

-							+ " matchingFilter="

-							+ matchingFilter;

-					logError(logMethodName, message, e);

-				} catch (AssertionError e) {

-					String message = "AssertionError in EndpointListener listener="

-							+ endpointListener

-							+ " description="

-							+ endpointDescription

-							+ " matchingFilter="

-							+ matchingFilter;

-					logError(logMethodName, message, e);

-				}

-			}

-		});

-		// Register the endpoint listener tracker, so that endpoint listeners

-		// that are subsequently added

-		// will then be notified of discovered endpoints

-		endpointListenerTrackerCustomizer = new EndpointListenerTrackerCustomizer(

-				this);

-		endpointListenerTracker = new ServiceTracker(context,

-				EndpointListener.class.getName(),

-				endpointListenerTrackerCustomizer);

-		endpointListenerTracker.open();

-

-		locatorListeners = new HashMap();

-		localLocatorServiceListener = new LocatorServiceListener(this);

-		// Create locator service tracker, so new IDiscoveryLocators can

-		// be used to discover endpoint descriptions

-		locatorServiceTracker = new ServiceTracker(context,

-				IDiscoveryLocator.class.getName(),

-				new LocatorTrackerCustomizer());

-		locatorServiceTracker.open();

-		// Get any existing locators

-		Object[] locators = locatorServiceTracker.getServices();

-		if (locators != null) {

-			// for all of them

-			for (int i = 0; i < locators.length; i++) {

-				// Add service listener to locator

-				openLocator((IDiscoveryLocator) locators[i]);

-			}

-		}

-		// Create bundle tracker for reading local/xml-file endpoint

-		// descriptions

-		bundleTrackerCustomizer = new EndpointDescriptionBundleTrackerCustomizer(

-				context, localLocatorServiceListener);

-		bundleTracker = new BundleTracker(context, Bundle.ACTIVE

-				| Bundle.STARTING, bundleTrackerCustomizer);

-		// This may trigger local endpoint description discovery

-		bundleTracker.open();

-	}

-

-	private void logError(String methodName, String message, Throwable e) {

-		LogUtility.logError(methodName, DebugOptions.DISCOVERY,

-				this.getClass(), message, e);

-	}

-

-	public void close() {

-		if (bundleTracker != null) {

-			bundleTracker.close();

-			bundleTracker = null;

-		}

-		if (bundleTrackerCustomizer != null) {

-			bundleTrackerCustomizer.close();

-			bundleTrackerCustomizer = null;

-		}

-

-		// shutdown locatorListeners

-		synchronized (locatorListeners) {

-			for (IDiscoveryLocator l : locatorListeners.keySet()) {

-				LocatorServiceListener locatorListener = locatorListeners

-						.get(l);

-				if (locatorListener != null) {

-					l.removeServiceListener(locatorListener);

-					locatorListener.close();

-				}

-			}

-			locatorListeners.clear();

-		}

-

-		Object[] locators = locatorServiceTracker.getServices();

-		if (locators != null) {

-			for (int i = 0; i < locators.length; i++) {

-				// Add service listener to locator

-				shutdownLocator((IDiscoveryLocator) locators[i]);

-			}

-		}

-

-		if (localLocatorServiceListener != null) {

-			localLocatorServiceListener.close();

-			localLocatorServiceListener = null;

-		}

-

-		if (endpointListenerTracker != null) {

-			endpointListenerTracker.close();

-			endpointListenerTracker = null;

-		}

-		if (endpointListenerTrackerCustomizer != null) {

-			endpointListenerTrackerCustomizer.close();

-			endpointListenerTrackerCustomizer = null;

-		}

-

-		// Shutdown asynchronous event manager

-		if (eventManager != null) {

-			eventManager.close();

-			eventManager = null;

-		}

-

-		synchronized (endpointDescriptionFactoryTrackerLock) {

-			if (endpointDescriptionFactoryTracker != null) {

-				endpointDescriptionFactoryTracker.close();

-				endpointDescriptionFactoryTracker = null;

-			}

-		}

-		if (defaultEndpointDescriptionFactoryRegistration != null) {

-			defaultEndpointDescriptionFactoryRegistration.unregister();

-			defaultEndpointDescriptionFactoryRegistration = null;

-		}

-		if (defaultEndpointDescriptionFactory != null) {

-			defaultEndpointDescriptionFactory.close();

-			defaultEndpointDescriptionFactory = null;

-		}

-

-		synchronized (serviceInfoFactoryTrackerLock) {

-			if (serviceInfoFactoryTracker != null) {

-				serviceInfoFactoryTracker.close();

-				serviceInfoFactoryTracker = null;

-			}

-		}

-		if (defaultServiceInfoFactoryRegistration != null) {

-			defaultServiceInfoFactoryRegistration.unregister();

-			defaultServiceInfoFactoryRegistration = null;

-		}

-		if (serviceInfoFactory != null) {

-			serviceInfoFactory.close();

-			serviceInfoFactory = null;

-		}

-		if (defaultEndpointDescriptionReaderRegistration != null) {

-			defaultEndpointDescriptionReaderRegistration.unregister();

-			defaultEndpointDescriptionReaderRegistration = null;

-		}

-		if (locatorServiceTracker != null) {

-			locatorServiceTracker.close();

-			locatorServiceTracker = null;

-		}

-		synchronized (advertiserTrackerLock) {

-			if (advertiserTracker != null) {

-				advertiserTracker.close();

-				advertiserTracker = null;

-			}

-		}

-		this.executor = null;

-		this.context = null;

-	}

-

-	public IDiscoveryAdvertiser[] getDiscoveryAdvertisers() {

-		synchronized (advertiserTrackerLock) {

-			if (advertiserTracker == null) {

-				advertiserTracker = new ServiceTracker(context,

-						IDiscoveryAdvertiser.class.getName(), null);

-				advertiserTracker.open();

-			}

-		}

-		ServiceReference[] advertiserRefs = advertiserTracker

-				.getServiceReferences();

-		if (advertiserRefs == null)

-			return null;

-		List<IDiscoveryAdvertiser> results = new ArrayList<IDiscoveryAdvertiser>();

-		for (int i = 0; i < advertiserRefs.length; i++) {

-			results.add((IDiscoveryAdvertiser) context

-					.getService(advertiserRefs[i]));

-		}

-		return results.toArray(new IDiscoveryAdvertiser[results.size()]);

-	}

-

-	private void openLocator(IDiscoveryLocator locator) {

-		if (context == null)

-			return;

-		synchronized (locatorListeners) {

-			LocatorServiceListener locatorListener = new LocatorServiceListener(

-					this, locator);

-			locatorListeners.put(locator, locatorListener);

-			processInitialLocatorServices(locator, locatorListener);

-		}

-	}

-

-	private void shutdownLocator(IDiscoveryLocator locator) {

-		if (locator == null || context == null)

-			return;

-		synchronized (locatorListeners) {

-			LocatorServiceListener locatorListener = locatorListeners

-					.remove(locator);

-			if (locatorListener != null)

-				locatorListener.close();

-		}

-	}

-

-	void queueEndpointDescription(

-			EndpointListener listener,

-			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

-			String matchingFilters, boolean discovered) {

-		if (eventQueue == null)

-			return;

-		synchronized (eventQueue) {

-			eventQueue

-					.dispatchEventAsynchronous(0, new EndpointListenerEvent(

-							listener, endpointDescription, matchingFilters,

-							discovered));

-		}

-	}

-

-	Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> getAllDiscoveredEndpointDescriptions() {

-		Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> result = new ArrayList();

-		if (localLocatorServiceListener == null)

-			return result;

-		// Get local first

-		result.addAll(localLocatorServiceListener.getEndpointDescriptions());

-		synchronized (locatorListeners) {

-			for (IDiscoveryLocator l : locatorListeners.keySet()) {

-				LocatorServiceListener locatorListener = locatorListeners

-						.get(l);

-				result.addAll(locatorListener.getEndpointDescriptions());

-			}

-		}

-		return result;

-	}

-

-	void queueEndpointDescription(

-			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

-			boolean discovered) {

-		EndpointListenerHolder[] endpointListenerHolders = getMatchingEndpointListenerHolders(endpointDescription);

-		if (endpointListenerHolders != null) {

-			for (int i = 0; i < endpointListenerHolders.length; i++) {

-				queueEndpointDescription(

-						endpointListenerHolders[i].getListener(),

-						endpointListenerHolders[i].getDescription(),

-						endpointListenerHolders[i].getMatchingFilter(),

-						discovered);

-

-			}

-		} else {

-			LogUtility.logWarning("queueEndpointDescription",

-					DebugOptions.DISCOVERY, this.getClass(),

-					"No matching EndpointListeners found for "

-							+ (discovered ? "discovered" : "undiscovered")

-							+ " endpointDescription=" + endpointDescription);

-		}

-

-	}

-

-	private void processInitialLocatorServices(final IDiscoveryLocator locator,

-			final LocatorServiceListener locatorListener) {

-		IProgressRunnable runnable = new IProgressRunnable() {

-			public Object run(IProgressMonitor arg0) throws Exception {

-				IServiceInfo[] serviceInfos = locator.getServices();

-				for (int i = 0; i < serviceInfos.length; i++) {

-					locatorListener.handleService(serviceInfos[i], true);

-				}

-				return null;

-			}

-		};

-		executor.execute(runnable, null);

-	}

-

-	void shutdownLocators() {

-		Object[] locators = locatorServiceTracker.getServices();

-		if (locators != null) {

-			for (int i = 0; i < locators.length; i++) {

-				// Add service listener to locator

-				shutdownLocator((IDiscoveryLocator) locators[i]);

-			}

-		}

-	}

-

-	private class EndpointListenerEvent {

-

-		private EndpointListener endpointListener;

-		private org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription;

-		private String matchingFilter;

-		private boolean discovered;

-

-		public EndpointListenerEvent(

-				EndpointListener endpointListener,

-				org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

-				String matchingFilter, boolean discovered) {

-			this.endpointListener = endpointListener;

-			this.endpointDescription = endpointDescription;

-			this.matchingFilter = matchingFilter;

-			this.discovered = discovered;

-		}

-

-		public EndpointListener getEndpointListener() {

-			return endpointListener;

-		}

-

-		public org.osgi.service.remoteserviceadmin.EndpointDescription getEndointDescription() {

-			return endpointDescription;

-		}

-

-		public String getMatchingFilter() {

-			return matchingFilter;

-		}

-

-		public boolean isDiscovered() {

-			return discovered;

-		}

-	}

-

-	private class LocatorTrackerCustomizer implements ServiceTrackerCustomizer {

-

-		/*

-		 * (non-Javadoc)

-		 * 

-		 * @see

-		 * org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.

-		 * osgi.framework.ServiceReference)

-		 */

-		public Object addingService(ServiceReference reference) {

-			IDiscoveryLocator locator = (IDiscoveryLocator) context

-					.getService(reference);

-			if (locator != null)

-				openLocator(locator);

-			return locator;

-		}

-

-		public void modifiedService(ServiceReference reference, Object service) {

-		}

-

-		public void removedService(ServiceReference reference, Object service) {

-			shutdownLocator((IDiscoveryLocator) service);

-		}

-	}

-

-	public IServiceInfoFactory getServiceInfoFactory() {

-		if (context == null)

-			return null;

-		synchronized (serviceInfoFactoryTrackerLock) {

-			if (serviceInfoFactoryTracker == null) {

-				serviceInfoFactoryTracker = new ServiceTracker(context,

-						IServiceInfoFactory.class.getName(), null);

-				serviceInfoFactoryTracker.open();

-			}

-		}

-		return (IServiceInfoFactory) serviceInfoFactoryTracker.getService();

-	}

-

-	public IDiscoveredEndpointDescriptionFactory getDiscoveredEndpointDescriptionFactory() {

-		synchronized (endpointDescriptionFactoryTrackerLock) {

-			if (context == null)

-				return null;

-			if (endpointDescriptionFactoryTracker == null) {

-				endpointDescriptionFactoryTracker = new ServiceTracker(context,

-						IDiscoveredEndpointDescriptionFactory.class.getName(),

-						null);

-				endpointDescriptionFactoryTracker.open();

-			}

-			return (IDiscoveredEndpointDescriptionFactory) endpointDescriptionFactoryTracker

-					.getService();

-		}

-	}

-

-	private Object endpointListenerServiceTrackerLock = new Object();

-

-	public EndpointListenerHolder[] getMatchingEndpointListenerHolders(

-			EndpointDescription description) {

-		synchronized (endpointListenerServiceTrackerLock) {

-			if (context == null)

-				return null;

-			return getMatchingEndpointListenerHolders(

-					endpointListenerTracker.getServiceReferences(), description);

-		}

-	}

-

-	public class EndpointListenerHolder {

-

-		private EndpointListener listener;

-		private EndpointDescription description;

-		private String matchingFilter;

-

-		public EndpointListenerHolder(EndpointListener l,

-				EndpointDescription d, String f) {

-			this.listener = l;

-			this.description = d;

-			this.matchingFilter = f;

-		}

-

-		public EndpointListener getListener() {

-			return listener;

-		}

-

-		public EndpointDescription getDescription() {

-			return description;

-		}

-

-		public String getMatchingFilter() {

-			return matchingFilter;

-		}

-	}

-

-	public EndpointListenerHolder[] getMatchingEndpointListenerHolders(

-			ServiceReference[] refs, EndpointDescription description) {

-		if (refs == null)

-			return null;

-		List results = new ArrayList();

-		for (int i = 0; i < refs.length; i++) {

-			EndpointListener listener = (EndpointListener) context

-					.getService(refs[i]);

-			if (listener == null)

-				continue;

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

-		}

-		return (EndpointListenerHolder[]) results

-				.toArray(new EndpointListenerHolder[] {});

-	}

-

-	private String isMatch(EndpointDescription description, List filters) {

-		for (Iterator j = filters.iterator(); j.hasNext();) {

-			String filter = (String) j.next();

-			if (description.matches(filter))

-				return filter;

-		}

-		return null;

-	}

-

-	private Map getMapFromProperties(ServiceReference ref) {

-		Map results = new HashMap();

-		String[] keys = ref.getPropertyKeys();

-		if (keys != null) {

-			for (int i = 0; i < keys.length; i++) {

-				results.put(keys[i], ref.getProperty(keys[i]));

-			}

-		}

-		return results;

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionBundleTrackerCustomizer.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionBundleTrackerCustomizer.java
deleted file mode 100644
index 270b5e5..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionBundleTrackerCustomizer.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;

-

-import java.io.IOException;

-import java.io.InputStream;

-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.Map;

-

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.IEndpointDescriptionReader;

-import org.osgi.framework.Bundle;

-import org.osgi.framework.BundleContext;

-import org.osgi.framework.BundleEvent;

-import org.osgi.util.tracker.BundleTrackerCustomizer;

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

-

-public class EndpointDescriptionBundleTrackerCustomizer implements

-		BundleTrackerCustomizer {

-

-	private static final String REMOTESERVICE_MANIFESTHEADER = "Remote-Service";

-	private static final String XML_FILE_PATTERN = "*.xml";

-

-	private Map<Long, Collection<org.osgi.service.remoteserviceadmin.EndpointDescription>> bundleDescriptionMap = Collections

-			.synchronizedMap(new HashMap<Long, Collection<org.osgi.service.remoteserviceadmin.EndpointDescription>>());

-

-	private BundleContext bundleContext;

-	private LocatorServiceListener endpointDescriptionHandler;

-

-	private Object endpointDescriptionReaderTrackerLock = new Object();

-	private ServiceTracker endpointDescriptionReaderTracker;

-

-	public EndpointDescriptionBundleTrackerCustomizer(

-			BundleContext bundleContext,

-			LocatorServiceListener endpointDescriptionHandler) {

-		this.bundleContext = bundleContext;

-		this.endpointDescriptionHandler = endpointDescriptionHandler;

-	}

-

-	private IEndpointDescriptionReader getEndpointDescriptionReader() {

-		synchronized (endpointDescriptionReaderTrackerLock) {

-			if (endpointDescriptionReaderTracker == null) {

-				endpointDescriptionReaderTracker = new ServiceTracker(

-						bundleContext,

-						IEndpointDescriptionReader.class.getName(), null);

-				endpointDescriptionReaderTracker.open();

-			}

-		}

-		return (IEndpointDescriptionReader) endpointDescriptionReaderTracker

-				.getService();

-	}

-

-	public Object addingBundle(Bundle bundle, BundleEvent event) {

-		handleAddingBundle(bundle);

-		return bundle;

-	}

-

-	private void handleAddingBundle(Bundle bundle) {

-		BundleContext context = Activator.getContext();

-		if (context == null)

-			return;

-		String remoteServicesHeaderValue = (String) bundle.getHeaders().get(

-				REMOTESERVICE_MANIFESTHEADER);

-		if (remoteServicesHeaderValue != null) {

-			// First parse into comma-separated values

-			String[] paths = remoteServicesHeaderValue.split(",");

-			if (paths != null)

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

-					handleEndpointDescriptionPath(bundle, paths[i]);

-		}

-	}

-

-	private void handleEndpointDescriptionPath(Bundle bundle,

-			String remoteServicesHeaderValue) {

-		// if it's empty, ignore

-		if ("".equals(remoteServicesHeaderValue))

-			return;

-		Enumeration<URL> e = null;

-		// if it endswith a '/', then scan for *.xml files

-		if (remoteServicesHeaderValue.endsWith("/")) {

-			e = bundle.findEntries(remoteServicesHeaderValue, XML_FILE_PATTERN,

-					false);

-		} else {

-			// Break into path and filename/pattern

-			int lastSlashIndex = remoteServicesHeaderValue.lastIndexOf('/');

-			if (lastSlashIndex == -1) {

-				// no slash...might be a file name or pattern, assumed to be

-				// at root of bundle

-				e = bundle.findEntries("/", remoteServicesHeaderValue, false);

-			} else {

-				String path = remoteServicesHeaderValue.substring(0,

-						lastSlashIndex);

-				if ("".equals(path)) {

-					// path is empty so assume it's root

-					path = "/";

-				}

-				String filePattern = remoteServicesHeaderValue

-						.substring(lastSlashIndex + 1);

-				e = bundle.findEntries(path, filePattern, false);

-			}

-		}

-		// Now process any found

-		Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> endpointDescriptions = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();

-		if (e != null) {

-			while (e.hasMoreElements()) {

-				org.osgi.service.remoteserviceadmin.EndpointDescription[] eps = handleEndpointDescriptionFile(

-						bundle, e.nextElement());

-				if (eps != null)

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

-						endpointDescriptions.add(eps[i]);

-			}

-		}

-		// finally, handle them

-		if (endpointDescriptions.size() > 0) {

-			bundleDescriptionMap.put(new Long(bundle.getBundleId()),

-					endpointDescriptions);

-			for (org.osgi.service.remoteserviceadmin.EndpointDescription ed : endpointDescriptions)

-				endpointDescriptionHandler.handleEndpointDescription(ed, true);

-		}

-	}

-

-	private org.osgi.service.remoteserviceadmin.EndpointDescription[] handleEndpointDescriptionFile(

-			Bundle bundle, URL fileURL) {

-		InputStream ins = null;

-		try {

-			IEndpointDescriptionReader endpointDescriptionReader = getEndpointDescriptionReader();

-			if (endpointDescriptionReader == null)

-				throw new NullPointerException(

-						"No endpointDescriptionReader available for handleEndpointDescriptionFile fileURL="

-								+ fileURL);

-			ins = fileURL.openStream();

-			return endpointDescriptionReader.readEndpointDescriptions(ins);

-		} catch (Exception e) {

-			logError("handleEndpointDescriptionFile",

-					"Exception creating endpoint descriptions from fileURL="

-							+ fileURL, e);

-			return null;

-		} finally {

-			if (ins != null)

-				try {

-					ins.close();

-				} catch (IOException e) {

-					logError("handleEndpointDescriptionFile",

-							"Exception closing endpointDescription input fileURL="

-									+ fileURL, e);

-				}

-		}

-	}

-

-	private void logError(String method, String message, Throwable t) {

-		LogUtility.logError(method, DebugOptions.DISCOVERY, this.getClass(),

-				new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR,

-						message, t));

-	}

-

-	public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {

-	}

-

-	public void removedBundle(Bundle bundle, BundleEvent event, Object object) {

-		handleRemovedBundle(bundle);

-	}

-

-	private void handleRemovedBundle(Bundle bundle) {

-		Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> endpointDescriptions = bundleDescriptionMap

-				.remove(new Long(bundle.getBundleId()));

-		if (endpointDescriptions != null)

-			for (org.osgi.service.remoteserviceadmin.EndpointDescription ed : endpointDescriptions)

-				endpointDescriptionHandler.handleEndpointDescription(ed, false);

-	}

-

-	public void close() {

-		synchronized (endpointDescriptionReaderTrackerLock) {

-			if (endpointDescriptionReaderTracker != null) {

-				endpointDescriptionReaderTracker.close();

-				endpointDescriptionReaderTracker = null;

-			}

-		}

-		bundleDescriptionMap.clear();

-		bundleContext = null;

-	}

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointListenerTrackerCustomizer.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointListenerTrackerCustomizer.java
deleted file mode 100644
index cadc65b..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointListenerTrackerCustomizer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;

-

-import java.util.Collection;

-

-import org.osgi.framework.ServiceReference;

-import org.osgi.service.remoteserviceadmin.EndpointListener;

-import org.osgi.util.tracker.ServiceTrackerCustomizer;

-

-public class EndpointListenerTrackerCustomizer implements

-		ServiceTrackerCustomizer {

-

-	private Discovery discovery;

-

-	public EndpointListenerTrackerCustomizer(Discovery discovery) {

-		this.discovery = discovery;

-	}

-

-	public Object addingService(ServiceReference reference) {

-		Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> allDiscoveredEndpointDescriptions = discovery

-				.getAllDiscoveredEndpointDescriptions();

-		EndpointListener listener = (EndpointListener) Activator.getContext()

-				.getService(reference);

-		if (listener == null)

-			return null;

-		for (org.osgi.service.remoteserviceadmin.EndpointDescription ed : allDiscoveredEndpointDescriptions) {

-			Discovery.EndpointListenerHolder[] endpointListenerHolders = discovery

-					.getMatchingEndpointListenerHolders(

-							new ServiceReference[] { reference }, ed);

-			if (endpointListenerHolders != null) {

-				for (int i = 0; i < endpointListenerHolders.length; i++) {

-					discovery.queueEndpointDescription(

-							endpointListenerHolders[i].getListener(),

-							endpointListenerHolders[i].getDescription(),

-							endpointListenerHolders[i].getMatchingFilter(),

-							true);

-				}

-			}

-		}

-		return listener;

-	}

-

-	public void modifiedService(ServiceReference reference, Object service) {

-	}

-

-	public void removedService(ServiceReference reference, Object service) {

-	}

-

-	public void close() {

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LocatorServiceListener.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LocatorServiceListener.java
deleted file mode 100644
index aa1f051..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LocatorServiceListener.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.ecf.discovery.IDiscoveryLocator;
-import org.eclipse.ecf.discovery.IServiceEvent;
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.eclipse.ecf.discovery.IServiceListener;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-import org.eclipse.ecf.osgi.services.remoteserviceadmin.DiscoveredEndpointDescription;
-import org.eclipse.ecf.osgi.services.remoteserviceadmin.IDiscoveredEndpointDescriptionFactory;
-import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;
-
-class LocatorServiceListener implements IServiceListener {
-
-	private Object listenerLock = new Object();
-	private IDiscoveryLocator locator;
-	private Discovery discovery;
-
-	private List<org.osgi.service.remoteserviceadmin.EndpointDescription> discoveredEndpointDescriptions = new ArrayList();
-
-	public LocatorServiceListener(Discovery discovery) {
-		this(discovery, null);
-	}
-
-	public LocatorServiceListener(Discovery discovery, IDiscoveryLocator locator) {
-		this.discovery = discovery;
-		this.locator = locator;
-		if (locator != null) {
-			this.locator.addServiceListener(this);
-		}
-	}
-
-	public void serviceDiscovered(IServiceEvent anEvent) {
-		handleService(anEvent.getServiceInfo(), true);
-	}
-
-	public void serviceUndiscovered(IServiceEvent anEvent) {
-		handleService(anEvent.getServiceInfo(), false);
-	}
-
-	private boolean matchServiceID(IServiceID serviceId) {
-		if (Arrays.asList(serviceId.getServiceTypeID().getServices()).contains(
-				RemoteConstants.SERVICE_TYPE))
-			return true;
-		return false;
-	}
-
-	void handleService(IServiceInfo serviceInfo, boolean discovered) {
-		IServiceID serviceID = serviceInfo.getServiceID();
-		if (matchServiceID(serviceID))
-			handleOSGiServiceEndpoint(serviceID, serviceInfo, discovered);
-	}
-
-	private void handleOSGiServiceEndpoint(IServiceID serviceId,
-			IServiceInfo serviceInfo, boolean discovered) {
-		if (locator == null)
-			return;
-		DiscoveredEndpointDescription discoveredEndpointDescription = getDiscoveredEndpointDescription(
-				serviceId, serviceInfo, discovered);
-		if (discoveredEndpointDescription != null) {
-			handleEndpointDescription(
-					discoveredEndpointDescription.getEndpointDescription(),
-					discovered);
-		} else {
-			logWarning("handleOSGiServiceEvent",
-					"discoveredEndpointDescription is null for service info="
-							+ serviceInfo + ",discovered=" + discovered);
-		}
-	}
-
-	public void handleEndpointDescription(
-			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,
-			boolean discovered) {
-		synchronized (listenerLock) {
-			if (discovered)
-				discoveredEndpointDescriptions.add(endpointDescription);
-			else
-				discoveredEndpointDescriptions.remove(endpointDescription);
-
-			discovery.queueEndpointDescription(endpointDescription, discovered);
-		}
-	}
-
-	public Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> getEndpointDescriptions() {
-		synchronized (listenerLock) {
-			Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> result = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();
-			result.addAll(discoveredEndpointDescriptions);
-			return result;
-		}
-	}
-
-	private void logWarning(String methodName, String message) {
-		LogUtility.logWarning(methodName, DebugOptions.DISCOVERY,
-				this.getClass(), message);
-	}
-
-	private void logError(String methodName, String message) {
-		logError(methodName, message, null);
-	}
-
-	private void logError(String methodName, String message, Throwable t) {
-		LogUtility.logError(methodName, DebugOptions.DISCOVERY,
-				this.getClass(), message, t);
-	}
-
-	private DiscoveredEndpointDescription getDiscoveredEndpointDescription(
-			IServiceID serviceId, IServiceInfo serviceInfo, boolean discovered) {
-		// Get IEndpointDescriptionFactory
-		final String methodName = "getDiscoveredEndpointDescription";
-		IDiscoveredEndpointDescriptionFactory factory = discovery
-				.getDiscoveredEndpointDescriptionFactory();
-		if (factory == null) {
-			logError(
-					methodName,
-					"No IEndpointDescriptionFactory found, could not create EndpointDescription for "
-							+ (discovered ? "discovered" : "undiscovered")
-							+ " serviceInfo=" + serviceInfo);
-			return null;
-		}
-		try {
-			// Else get endpoint description factory to create
-			// EndpointDescription
-			// for given serviceID and serviceInfo
-			return (discovered) ? factory.createDiscoveredEndpointDescription(
-					locator, serviceInfo) : factory
-					.getUndiscoveredEndpointDescription(locator, serviceId);
-		} catch (Exception e) {
-			logError(
-					methodName,
-					"Exception calling IEndpointDescriptionFactory."
-							+ ((discovered) ? "createDiscoveredEndpointDescription"
-									: "getUndiscoveredEndpointDescription"), e);
-			return null;
-		} catch (NoClassDefFoundError e) {
-			logError(
-					methodName,
-					"NoClassDefFoundError calling IEndpointDescriptionFactory."
-							+ ((discovered) ? "createDiscoveredEndpointDescription"
-									: "getUndiscoveredEndpointDescription"), e);
-			return null;
-		}
-	}
-
-	public synchronized void close() {
-		if (locator != null) {
-			locator.removeServiceListener(this);
-			locator = null;
-		}
-		discovery = null;
-		discoveredEndpointDescriptions.clear();
-	}
-}
\ No newline at end of file
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
deleted file mode 100644
index a16cbba..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;

-

-import java.util.ArrayList;

-import java.util.Arrays;

-import java.util.Collection;

-import java.util.Collections;

-import java.util.Dictionary;

-import java.util.Enumeration;

-import java.util.HashMap;

-import java.util.Iterator;

-import java.util.List;

-import java.util.Map;

-import java.util.Properties;

-

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;

-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;

-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

-import org.osgi.framework.ServiceReference;

-

-public class PropertiesUtil {

-

-	protected static final List osgiProperties = Arrays

-			.asList(new String[] {

-					// OSGi properties

-					org.osgi.framework.Constants.OBJECTCLASS,

-					org.osgi.framework.Constants.SERVICE_ID,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,

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

-					org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS });

-

-	protected static final List ecfProperties = Arrays.asList(new String[] {

-			// ECF properties

-			RemoteConstants.DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX,

-			RemoteConstants.DISCOVERY_NAMING_AUTHORITY,

-			RemoteConstants.DISCOVERY_PROTOCOLS,

-			RemoteConstants.DISCOVERY_SCOPE,

-			RemoteConstants.DISCOVERY_SERVICE_NAME,

-			RemoteConstants.ENDPOINT_CONNECTTARGET_ID,

-			RemoteConstants.ENDPOINT_CONNECTTARGET_ID_NAMESPACE,

-			RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,

-			RemoteConstants.ENDPOINT_IDFILTER_IDS,

-			RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_COUNT,

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

-			RemoteConstants.SERVICE_TYPE });

-

-	public static String verifyStringProperty(Map properties, String propName) {

-		Object r = properties.get(propName);

-		try {

-			return (String) r;

-		} catch (ClassCastException e) {

-			IllegalArgumentException iae = new IllegalArgumentException(

-					"property value is not a String: " + propName);

-			iae.initCause(e);

-			throw iae;

-		}

-	}

-

-	public static Object getStringPlusValue(List<String> values) {

-		if (values == null)

-			return null;

-		int valuesSize = values.size();

-		switch (valuesSize) {

-		case 0:

-			return null;

-		case 1:

-			return values.get(0);

-		default:

-			return values.toArray(new String[valuesSize]);

-		}

-	}

-

-	public static List getStringPlusProperty(Map properties, String key) {

-		Object value = properties.get(key);

-		if (value == null) {

-			return Collections.EMPTY_LIST;

-		}

-

-		if (value instanceof String) {

-			return Collections.singletonList((String) value);

-		}

-

-		if (value instanceof String[]) {

-			String[] values = (String[]) value;

-			List result = new ArrayList(values.length);

-			for (int i = 0; i < values.length; i++) {

-				if (values[i] != null) {

-					result.add(values[i]);

-				}

-			}

-			return Collections.unmodifiableList(result);

-		}

-

-		if (value instanceof Collection) {

-			Collection values = (Collection) value;

-			List result = new ArrayList(values.size());

-			for (Iterator iter = values.iterator(); iter.hasNext();) {

-				Object v = iter.next();

-				if (v instanceof String) {

-					result.add((String) v);

-				}

-			}

-			return Collections.unmodifiableList(result);

-		}

-

-		return Collections.EMPTY_LIST;

-	}

-

-	public static boolean isOSGiProperty(String key) {

-		return osgiProperties.contains(key)

-				&& !key.startsWith(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_);

-	}

-

-	public static boolean isECFProperty(String key) {

-		return ecfProperties.contains(key)

-				&& !key.startsWith(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_)

-				&& !key.startsWith(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_);

-	}

-

-	public static boolean isReservedProperty(String key) {

-		return isOSGiProperty(key) || isECFProperty(key);

-	}

-

-	public static Map createMapFromDictionary(Dictionary input) {

-		if (input == null)

-			return null;

-		Map result = new HashMap();

-		for (Enumeration e = input.keys(); e.hasMoreElements();) {

-			Object key = e.nextElement();

-			Object val = input.get(key);

-			result.put(key, val);

-		}

-		return result;

-	}

-

-	public static Dictionary createDictionaryFromMap(Map propMap) {

-		if (propMap == null)

-			return null;

-		Dictionary result = new Properties();

-		for (Iterator i = propMap.keySet().iterator(); i.hasNext();) {

-			Object key = i.next();

-			Object val = propMap.get(key);

-			result.put(key, val);

-		}

-		return result;

-	}

-

-	public static Long getLongWithDefault(Map props, String key, Long def) {

-		Object o = props.get(key);

-		if (o instanceof Long)

-			return (Long) o;

-		if (o instanceof String)

-			return Long.valueOf((String) o);

-		return def;

-	}

-

-	public static String[] getStringArrayWithDefault(

-			Map<String, Object> properties, String key, String[] def) {

-		Object o = properties.get(key);

-		if (o instanceof String) {

-			return new String[] { (String) o };

-		} else if (o instanceof String[]) {

-			return (String[]) o;

-		} else if (o instanceof List) {

-			List l = (List) o;

-			return (String[]) l.toArray(new String[l.size()]);

-		}

-		return def;

-	}

-

-	public static String getStringWithDefault(Map props, String key, String def) {

-		Object o = props.get(key);

-		if (o == null || (!(o instanceof String)))

-			return def;

-		return (String) o;

-	}

-

-	public static Map<String, Object> copyProperties(

-			ServiceReference serviceReference, Map<String, Object> target) {

-		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> copyProperties(

-			IRemoteServiceRegistration rsRegistration,

-			Map<String, Object> target) {

-		String[] keys = rsRegistration.getPropertyKeys();

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

-			target.put(keys[i], rsRegistration.getProperty(keys[i]));

-		return target;

-	}

-

-	public static Map<String, Object> copyProperties(

-			Map<String, Object> source, Map<String, Object> target) {

-		for (String key : source.keySet())

-			target.put(key, source.get(key));

-		return target;

-	}

-

-	public static Map<String, Object> copyNonECFProperties(

-			Map<String, Object> source, Map<String, Object> target) {

-		for (String key : source.keySet())

-			if (!isECFProperty(key))

-				target.put(key, source.get(key));

-		return target;

-	}

-

-	public static Map<String, Object> copyNonReservedProperties(

-			Map<String, Object> source, Map<String, Object> target) {

-		for (String key : source.keySet())

-			if (!isReservedProperty(key))

-				target.put(key, source.get(key));

-		return target;

-	}

-

-	public static Map<String, Object> copyNonECFProperties(

-			ServiceReference serviceReference, Map<String, Object> target) {

-		String[] keys = serviceReference.getPropertyKeys();

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

-			if (!isECFProperty(keys[i]))

-				target.put(keys[i], serviceReference.getProperty(keys[i]));

-		return target;

-	}

-

-	public static Map<String, Object> copyNonReservedProperties(

-			ServiceReference serviceReference, Map<String, Object> target) {

-		String[] keys = serviceReference.getPropertyKeys();

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

-			if (!isReservedProperty(keys[i]))

-				target.put(keys[i], serviceReference.getProperty(keys[i]));

-		return target;

-	}

-

-	public static Map<String, Object> copyNonReservedProperties(

-			IRemoteServiceReference rsReference, Map<String, Object> target) {

-		String[] keys = rsReference.getPropertyKeys();

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

-			if (!isReservedProperty(keys[i]))

-				target.put(keys[i], rsReference.getProperty(keys[i]));

-		return target;

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java
deleted file mode 100644
index f306845..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java
+++ /dev/null
@@ -1,649 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.util.ArrayList;

-import java.util.Arrays;

-import java.util.Collection;

-import java.util.Dictionary;

-import java.util.List;

-import java.util.Map;

-import java.util.Properties;

-import java.util.TreeMap;

-

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

-import org.eclipse.core.runtime.IStatus;

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

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

-import org.eclipse.ecf.core.IContainer;

-import org.eclipse.ecf.core.IContainerManager;

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

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

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

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

-import org.eclipse.ecf.remoteservice.IOSGiRemoteServiceContainerAdapter;

-import org.eclipse.ecf.remoteservice.IRemoteService;

-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;

-import org.eclipse.ecf.remoteservice.IRemoteServiceListener;

-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;

-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

-import org.osgi.framework.BundleContext;

-import org.osgi.framework.Constants;

-import org.osgi.framework.InvalidSyntaxException;

-import org.osgi.framework.ServiceReference;

-import org.osgi.framework.ServiceRegistration;

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

-

-public abstract class AbstractRemoteServiceAdmin {

-

-	private BundleContext context;

-

-	private boolean hostAutoCreateContainer = new Boolean(

-			System.getProperty(

-					"org.eclipse.ecf.osgi.services.remoteserviceadmin.hostAutoCreateContainer",

-					"true")).booleanValue();

-	private String[] hostDefaultConfigTypes = new String[] { System

-			.getProperty(

-					"org.eclipse.ecf.osgi.services.remoteserviceadmin.hostDefaultConfigType",

-					"ecf.generic.server") };

-

-	private boolean consumerAutoCreateContainer = new Boolean(

-			System.getProperty(

-					"org.eclipse.ecf.osgi.services.remoteserviceadmin.consumerAutoCreateContainer",

-					"true")).booleanValue();

-

-	private HostContainerSelector hostContainerSelector;

-	private ServiceRegistration defaultHostContainerSelectorRegistration;

-	private ServiceTracker hostContainerSelectorTracker;

-	private Object hostContainerSelectorTrackerLock = new Object();

-

-	private ConsumerContainerSelector consumerContainerSelector;

-	private ServiceRegistration defaultConsumerContainerSelectorRegistration;

-	private ServiceTracker consumerContainerSelectorTracker;

-	private Object consumerContainerSelectorTrackerLock = new Object();

-

-	public AbstractRemoteServiceAdmin(BundleContext context) {

-		this.context = context;

-		final Properties properties = new Properties();

-		properties.put(Constants.SERVICE_RANKING,

-				new Integer(Integer.MIN_VALUE));

-		// create and register default host container selector. Since this is

-		// registered with minimum service ranking

-		// others can override this default simply by registering a

-		// IHostContainerSelector implementer

-		hostContainerSelector = new HostContainerSelector(

-				hostDefaultConfigTypes, hostAutoCreateContainer);

-		defaultHostContainerSelectorRegistration = getContext()

-				.registerService(IHostContainerSelector.class.getName(),

-						hostContainerSelector, (Dictionary) properties);

-		// create and register default consumer container selector. Since this

-		// is registered with minimum service ranking

-		// others can override this default simply by registering a

-		// IConsumerContainerSelector implementer

-		consumerContainerSelector = new ConsumerContainerSelector(

-				consumerAutoCreateContainer);

-		defaultConsumerContainerSelectorRegistration = getContext()

-				.registerService(IConsumerContainerSelector.class.getName(),

-						consumerContainerSelector, (Dictionary) properties);

-	}

-

-	protected BundleContext getContext() {

-		return context;

-	}

-

-	public void setHostAutoCreateContainer(boolean value) {

-		this.hostAutoCreateContainer = value;

-	}

-

-	public void setHostDefaultConfigTypes(String[] configTypes) {

-		this.hostDefaultConfigTypes = configTypes;

-	}

-

-	public void setConsumerContainerSelector(boolean value) {

-		this.consumerAutoCreateContainer = value;

-	}

-

-	private void closeConsumerContainerSelector() {

-		synchronized (consumerContainerSelectorTrackerLock) {

-			if (consumerContainerSelectorTracker != null) {

-				consumerContainerSelectorTracker.close();

-				consumerContainerSelectorTracker = null;

-			}

-		}

-		if (defaultConsumerContainerSelectorRegistration != null) {

-			defaultConsumerContainerSelectorRegistration.unregister();

-			defaultConsumerContainerSelectorRegistration = null;

-		}

-		if (consumerContainerSelector != null) {

-			consumerContainerSelector.close();

-			consumerContainerSelector = null;

-		}

-	}

-

-	private void closeHostContainerSelector() {

-		synchronized (hostContainerSelectorTrackerLock) {

-			if (hostContainerSelectorTracker != null) {

-				hostContainerSelectorTracker.close();

-				hostContainerSelectorTracker = null;

-			}

-		}

-		if (defaultHostContainerSelectorRegistration != null) {

-			defaultHostContainerSelectorRegistration.unregister();

-			defaultHostContainerSelectorRegistration = null;

-		}

-		if (hostContainerSelector != null) {

-			hostContainerSelector.close();

-			hostContainerSelector = null;

-		}

-	}

-

-	protected IHostContainerSelector getHostContainerSelector() {

-		synchronized (hostContainerSelectorTrackerLock) {

-			if (hostContainerSelectorTracker == null) {

-				hostContainerSelectorTracker = new ServiceTracker(context,

-						IHostContainerSelector.class.getName(), null);

-				hostContainerSelectorTracker.open();

-			}

-		}

-		return (IHostContainerSelector) hostContainerSelectorTracker

-				.getService();

-	}

-

-	protected IConsumerContainerSelector getConsumerContainerSelector() {

-		synchronized (consumerContainerSelectorTrackerLock) {

-			if (consumerContainerSelectorTracker == null) {

-				consumerContainerSelectorTracker = new ServiceTracker(context,

-						IConsumerContainerSelector.class.getName(), null);

-				consumerContainerSelectorTracker.open();

-			}

-		}

-		return (IConsumerContainerSelector) consumerContainerSelectorTracker

-				.getService();

-	}

-

-	protected void logError(String methodName, String message, IStatus status) {

-		LogUtility.logError(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

-				this.getClass(), status);

-	}

-

-	protected void trace(String methodName, String message) {

-		LogUtility.trace(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

-				this.getClass(), message);

-	}

-

-	protected void logWarning(String methodName, String message) {

-		LogUtility.logWarning(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

-				this.getClass(), message);

-	}

-

-	protected void logError(String methodName, String message, Throwable t) {

-		LogUtility.logError(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

-				this.getClass(), message, t);

-	}

-

-	protected void logError(String methodName, String message) {

-		logError(methodName, message, (Throwable) null);

-	}

-

-	protected Object getService(ServiceReference serviceReference) {

-		return context.getService(serviceReference);

-	}

-

-	protected Object getPropertyValue(String propertyName,

-			ServiceReference serviceReference, Map<String, Object> properties) {

-		Object result = properties.get(propertyName);

-		return (result == null) ? serviceReference.getProperty(propertyName)

-				: result;

-	}

-

-	protected EndpointDescription createExportEndpointDescription(

-			ServiceReference serviceReference,

-			Map<String, Object> overridingProperties,

-			String[] exportedInterfaces, String[] serviceIntents,

-			IRemoteServiceRegistration rsRegistration,

-			IRemoteServiceContainer rsContainer) {

-

-		IContainer container = rsContainer.getContainer();

-		ID containerID = container.getID();

-

-		Map<String, Object> endpointDescriptionProperties = new TreeMap<String, Object>(

-				String.CASE_INSENSITIVE_ORDER);

-

-		// OSGi properties

-		// OBJECTCLASS

-		endpointDescriptionProperties.put(

-				org.osgi.framework.Constants.OBJECTCLASS, exportedInterfaces);

-		// ENDPOINT_ID

-		String endpointId = (String) getPropertyValue(

-				org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,

-				serviceReference, overridingProperties);

-		if (endpointId == null)

-			endpointId = containerID.getName();

-		endpointDescriptionProperties

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

-						endpointId);

-		// ENDPOINT_SERVICE_ID

-		Long serviceId = (Long) getPropertyValue(

-				org.osgi.framework.Constants.SERVICE_ID, serviceReference,

-				overridingProperties);

-		endpointDescriptionProperties.put(

-				org.osgi.framework.Constants.SERVICE_ID, serviceId);

-		// ENDPOINT_FRAMEWORK_ID

-		String frameworkId = Activator.getDefault().getFrameworkUUID();

-		endpointDescriptionProperties

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

-						frameworkId);

-		// SERVICE_IMPORTED_CONFIGS...set to ECF constant

-		endpointDescriptionProperties

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

-						RemoteConstants.ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE);

-		// SERVICE_INTENTS

-		if (serviceIntents != null)

-			endpointDescriptionProperties

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

-							serviceIntents);

-		// REMOTE_INTENTS_SUPPORTED

-		String[] remoteIntentsSupported = getSupportedIntents(container);

-		if (remoteIntentsSupported != null)

-			endpointDescriptionProperties

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

-							remoteIntentsSupported);

-		// REMOTE_CONFIGS_SUPPORTED

-		String[] remoteConfigsSupported = getSupportedConfigs(container);

-		if (remoteConfigsSupported != null)

-			endpointDescriptionProperties

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

-							remoteConfigsSupported);

-

-		// ECF properties

-		// ENDPOINT_CONNECTTARGET_ID

-		Object connectTarget = getPropertyValue(

-				RemoteConstants.ENDPOINT_CONNECTTARGET_ID, serviceReference,

-				overridingProperties);

-		ID connectTargetID = null;

-		if (connectTarget != null) {

-			// Then we get the host container connected ID

-			ID connectedID = rsContainer.getContainer().getConnectedID();

-			if (connectedID != null && !connectedID.equals(containerID))

-				connectTargetID = connectedID;

-		}

-		// ENDPOINT_IDFILTER_IDS

-		ID[] idFilter = (ID[]) getPropertyValue(

-				RemoteConstants.ENDPOINT_IDFILTER_IDS, serviceReference,

-				overridingProperties);

-		// ENDPOINT_REMOTESERVICE_FILTER

-		String rsFilter = (String) getPropertyValue(

-				RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,

-				serviceReference, overridingProperties);

-

-		// copy remote registration properties

-		PropertiesUtil.copyProperties(rsRegistration,

-				endpointDescriptionProperties);

-		// Remove ecf.robjectClass

-		endpointDescriptionProperties

-				.remove(org.eclipse.ecf.remoteservice.Constants.OBJECTCLASS);

-		// finally create an ECF EndpointDescription

-		return new EndpointDescription(serviceReference,

-				endpointDescriptionProperties, containerID.getNamespace()

-						.getName(), connectTargetID, idFilter, rsFilter);

-	}

-

-	protected Map<String, Object> copyNonReservedProperties(

-			ServiceReference serviceReference,

-			Map<String, Object> overridingProperties, Map<String, Object> target) {

-		// copy all other properties...from service reference

-		PropertiesUtil.copyNonReservedProperties(serviceReference, target);

-		// And override with overridingProperties

-		PropertiesUtil.copyNonReservedProperties(overridingProperties, target);

-		return target;

-	}

-

-	protected Map<String, Object> copyNonReservedProperties(

-			IRemoteServiceReference rsReference, Map<String, Object> target) {

-		return PropertiesUtil.copyNonReservedProperties(rsReference, target);

-	}

-

-	protected ContainerTypeDescription getContainerTypeDescription(

-			IContainer container) {

-		IContainerManager containerManager = Activator.getDefault()

-				.getContainerManager();

-		if (containerManager == null)

-			return null;

-		return containerManager.getContainerTypeDescription(container.getID());

-	}

-

-	protected String[] getSupportedConfigs(IContainer container) {

-		ContainerTypeDescription ctd = getContainerTypeDescription(container);

-		return (ctd == null) ? null : ctd.getSupportedConfigs();

-	}

-

-	protected String[] getImportedConfigs(IContainer container,

-			String[] exporterSupportedConfigs) {

-		ContainerTypeDescription ctd = getContainerTypeDescription(container);

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

-				.getImportedConfigs(exporterSupportedConfigs);

-	}

-

-	protected String[] getSupportedIntents(IContainer container) {

-		ContainerTypeDescription ctd = getContainerTypeDescription(container);

-		return (ctd == null) ? null : ctd.getSupportedIntents();

-	}

-

-	protected Collection<String> getInterfaces(

-			EndpointDescription endpointDescription) {

-		return endpointDescription.getInterfaces();

-	}

-

-	protected ID getEndpointID(EndpointDescription endpointDescription) {

-		return IDUtil.createContainerID(endpointDescription);

-	}

-

-	protected ID getConnectTargetID(EndpointDescription endpointDescription) {

-		return endpointDescription.getConnectTargetID();

-	}

-

-	protected ID[] getIDFilter(EndpointDescription endpointDescription,

-			ID endpointID) {

-		ID[] idFilter = endpointDescription.getIDFilter();

-		// If it is null,

-		return (idFilter == null) ? new ID[] { endpointID } : idFilter;

-	}

-

-	protected String getRemoteServiceFilter(

-			EndpointDescription endpointDescription) {

-		long rsId = endpointDescription.getRemoteServiceId();

-		if (rsId == 0) {

-			// It's not known...so we just return the 'raw' remote service

-			// filter

-			return endpointDescription.getRemoteServiceFilter();

-		} else {

-			String edRsFilter = endpointDescription.getRemoteServiceFilter();

-			// It's a real remote service id...so we return

-			StringBuffer result = new StringBuffer("(&(") //$NON-NLS-1$

-					.append(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID)

-					.append("=").append(rsId).append(")"); //$NON-NLS-1$ //$NON-NLS-2$

-			if (edRsFilter != null)

-				result.append(edRsFilter);

-			result.append(")"); //$NON-NLS-1$

-			return result.toString();

-		}

-	}

-

-	protected ImportRegistration handleNonOSGiService(

-			EndpointDescription endpointDescription,

-			IRemoteServiceContainer rsContainer) {

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

-		// null;

-		logWarning("doImportService",

-				"OSGi remote service id is 0 for endpointDescription="

-						+ endpointDescription);

-		return null;

-	}

-

-	protected IRemoteServiceRegistration doRegisterRemoteService(

-			IRemoteServiceContainerAdapter containerAdapter,

-			String[] exportedInterfaces, ServiceReference serviceReference,

-			Dictionary remoteServiceProperties) {

-		trace("doRegisterRemoteService",

-				"registerRemoteService exportedInterfaces="

-						+ Arrays.asList(exportedInterfaces)

-						+ ",serviceReference=" + serviceReference

-						+ ",remoteServiceProperties=" + remoteServiceProperties);

-		if (containerAdapter instanceof IOSGiRemoteServiceContainerAdapter) {

-			IOSGiRemoteServiceContainerAdapter osgiContainerAdapter = (IOSGiRemoteServiceContainerAdapter) containerAdapter;

-			return osgiContainerAdapter.registerRemoteService(

-					exportedInterfaces, serviceReference,

-					remoteServiceProperties);

-

-		} else

-			return containerAdapter.registerRemoteService(exportedInterfaces,

-					getService(serviceReference), remoteServiceProperties);

-

-	}

-

-	protected ImportRegistration createAndRegisterProxy(

-			EndpointDescription endpointDescription,

-			IRemoteServiceContainer rsContainer,

-			IRemoteServiceReference selectedRsReference) throws Exception {

-		IRemoteServiceContainerAdapter containerAdapter = rsContainer

-				.getContainerAdapter();

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

-		// First get IRemoteService for selectedRsReference

-		IRemoteService rs = containerAdapter

-				.getRemoteService(selectedRsReference);

-

-		if (rs == null)

-			throw new ECFException(

-					"getRemoteService returned null for selectedRsReference="

-							+ selectedRsReference + ",rsContainerID="

-							+ rsContainerID);

-		// Now get proxy from IRemoteService

-		Object proxy = rs.getProxy();

-		if (proxy == null)

-			throw new ECFException("getProxy returned null for rsReference="

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

-

-		Map proxyProperties = createProxyProperties(endpointDescription,

-				rsContainer, selectedRsReference, rs, proxy);

-

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

-

-		ServiceRegistration proxyRegistration = getContext().registerService(

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

-				proxy,

-				(Dictionary) PropertiesUtil

-						.createDictionaryFromMap(proxyProperties));

-

-		IRemoteServiceListener rsListener = createRemoteServiceListener();

-		

-		return new ImportRegistration(rsContainer,rsListener,selectedRsReference,

-				endpointDescription, proxyRegistration);

-	}

-

-	protected abstract IRemoteServiceListener createRemoteServiceListener();

-	

-	protected IRemoteServiceReference selectRemoteServiceReference(

-			Collection<IRemoteServiceReference> rsRefs, ID targetID,

-			ID[] idFilter, Collection<String> interfaces, String rsFilter,

-			IRemoteServiceContainer rsContainer) {

-		if (rsRefs.size() == 0)

-			return null;

-		if (rsRefs.size() > 1) {

-			logWarning("selectRemoteServiceReference", "rsRefs=" + rsRefs

-					+ ",targetID=" + targetID + ",idFilter=" + idFilter

-					+ ",interfaces=" + interfaces + ",rsFilter=" + rsFilter

-					+ ",rsContainer=" + rsContainer.getContainer().getID()

-					+ " has " + rsRefs.size()

-					+ " values.  Selecting the first element");

-		}

-		return rsRefs.iterator().next();

-	}

-

-	protected Map createProxyProperties(

-			EndpointDescription endpointDescription,

-			IRemoteServiceContainer rsContainer,

-			IRemoteServiceReference rsReference, IRemoteService remoteService,

-			Object proxy) {

-

-		Map resultProperties = new TreeMap<String, Object>(

-				String.CASE_INSENSITIVE_ORDER);

-		copyNonReservedProperties(rsReference, resultProperties);

-		// remove OBJECTCLASS

-		resultProperties

-				.remove(org.eclipse.ecf.remoteservice.Constants.OBJECTCLASS);

-		// remove remote service id

-		resultProperties

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

-		// Set intents if there are intents

-		Object intentsValue = PropertiesUtil

-				.getStringPlusValue(endpointDescription.getIntents());

-		if (intentsValue != null)

-			resultProperties

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

-							intentsValue);

-		// Set service.imported to IRemoteService

-		resultProperties

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

-						remoteService);

-		String[] exporterSupportedConfigs = (String[]) endpointDescription

-				.getProperties()

-				.get(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);

-		String[] importedConfigs = getImportedConfigs(

-				rsContainer.getContainer(), exporterSupportedConfigs);

-		// Set service.imported.configs

-		resultProperties

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

-						importedConfigs);

-		return resultProperties;

-	}

-

-	protected ExportRegistration doExportService(

-			ServiceReference serviceReference,

-			Map<String, Object> overridingProperties,

-			String[] exportedInterfaces, String[] serviceIntents,

-			IRemoteServiceContainer rsContainer) throws Exception {

-		trace("doExportService",

-				"serviceReference="

-						+ serviceReference

-						+ ",overridingProperties="

-						+ overridingProperties

-						+ ",exportedInterfaces="

-						+ Arrays.asList(exportedInterfaces)

-						+ ",serviceIntents="

-						+ ((serviceIntents == null) ? "null" : Arrays.asList(

-								serviceIntents).toString()) + ",rsContainerID="

-						+ rsContainer.getContainer().getID());

-		IRemoteServiceRegistration remoteRegistration = null;

-		try {

-			// Create remote service properties

-			Map remoteServiceProperties = copyNonReservedProperties(

-					serviceReference, overridingProperties,

-					new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER));

-			// Register remote service via ECF container adapter to create

-			// remote service registration

-			remoteRegistration = doRegisterRemoteService(

-					rsContainer.getContainerAdapter(), exportedInterfaces,

-					serviceReference,

-					PropertiesUtil

-							.createDictionaryFromMap(remoteServiceProperties));

-			// Create EndpointDescription from remoteRegistration

-			EndpointDescription endpointDescription = createExportEndpointDescription(

-					serviceReference, overridingProperties, exportedInterfaces,

-					serviceIntents, remoteRegistration, rsContainer);

-			// Create ExportRegistration

-			return createExportRegistration(remoteRegistration,

-					serviceReference, endpointDescription);

-		} catch (Exception e) {

-			// If we actually created an IRemoteRegistration then unregister

-			if (remoteRegistration != null)

-				remoteRegistration.unregister();

-			// rethrow

-			throw e;

-		}

-	}

-

-	protected ExportRegistration createExportRegistration(

-			IRemoteServiceRegistration remoteRegistration,

-			ServiceReference serviceReference,

-			EndpointDescription endpointDescription) {

-		return new ExportRegistration(remoteRegistration, serviceReference,

-				endpointDescription);

-	}

-

-	protected ImportRegistration doImportService(

-			EndpointDescription endpointDescription,

-			IRemoteServiceContainer rsContainer) throws Exception {

-		trace("doImportService", "endpointDescription=" + endpointDescription

-				+ ",rsContainerID=" + rsContainer.getContainer().getID());

-		long osgiServiceId = endpointDescription.getServiceId();

-		if (osgiServiceId == 0)

-			return handleNonOSGiService(endpointDescription, rsContainer);

-		// Get interfaces from endpoint description

-		Collection<String> interfaces = getInterfaces(endpointDescription);

-		Assert.isNotNull(interfaces);

-		Assert.isTrue(interfaces.size() > 0);

-		// Get ECF endpoint ID...if this throws IDCreateException (because the

-		// local system does not have

-		// namespace for creating ID, or no namespace is present in

-		// endpointDescription or endpoint id,

-		// then it will be caught by the caller

-		ID endpointID = getEndpointID(endpointDescription);

-		Assert.isNotNull(endpointID);

-		// Get connect target ID. May be null

-		ID targetID = getConnectTargetID(endpointDescription);

-		if (targetID == null)

-			targetID = endpointID;

-		// Get idFilter...also may be null

-		ID[] idFilter = getIDFilter(endpointDescription, endpointID);

-		// Get remote service filter

-		String rsFilter = getRemoteServiceFilter(endpointDescription);

-		// IRemoteServiceReferences from query

-		Collection<IRemoteServiceReference> rsRefs = new ArrayList<IRemoteServiceReference>();

-		// Get IRemoteServiceContainerAdapter

-		IRemoteServiceContainerAdapter containerAdapter = rsContainer

-				.getContainerAdapter();

-		// rsContainerID

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

-		// For all given interfaces

-		for (String intf : interfaces) {

-			// Get/lookup remote service references

-			IRemoteServiceReference[] refs = containerAdapter

-					.getRemoteServiceReferences(targetID, idFilter, intf,

-							rsFilter);

-			if (refs == null) {

-				logWarning("doImportService",

-						"getRemoteServiceReferences return null for targetID="

-								+ targetID + ",idFilter=" + idFilter + ",intf="

-								+ intf + ",rsFilter=" + rsFilter

-								+ " on rsContainerID=" + rsContainerID);

-				continue;

-			}

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

-				rsRefs.add(refs[i]);

-		}

-		IRemoteServiceReference selectedRsReference = selectRemoteServiceReference(

-				rsRefs, targetID, idFilter, interfaces, rsFilter, rsContainer);

-

-		if (selectedRsReference == null) {

-			logWarning("doImportService",

-					"selectRemoteServiceReference returned null for rsRefs="

-							+ rsRefs + ",targetID=" + targetID + ",idFilter="

-							+ idFilter + ",interfaces=" + interfaces

-							+ ",rsFilter=" + rsFilter + ",rsContainerID="

-							+ rsContainerID);

-			return null;

-		}

-

-		return createAndRegisterProxy(endpointDescription, rsContainer,

-				selectedRsReference);

-	}

-

-	protected IRemoteServiceReference[] doGetRemoteServiceReferences(

-			IRemoteServiceContainerAdapter containerAdapter, ID targetID,

-			ID[] idFilter, String intf, String rsFilter)

-			throws ContainerConnectException, InvalidSyntaxException {

-		trace("doGetRemoteServiceReferences",

-				"getRemoteServiceReferences targetID=" + targetID

-						+ ",idFilter=" + Arrays.asList(idFilter) + ",intf="

-						+ intf + ",rsFilter=" + rsFilter);

-		return containerAdapter.getRemoteServiceReferences(targetID, idFilter,

-				intf, rsFilter);

-	}

-

-	public void close() {

-		closeConsumerContainerSelector();

-		closeHostContainerSelector();

-		this.context = null;

-	}

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
deleted file mode 100644
index 5bf6a03..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.util.ArrayList;

-import java.util.Arrays;

-import java.util.Collection;

-import java.util.Dictionary;

-import java.util.List;

-import java.util.Properties;

-

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Discovery;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

-import org.osgi.framework.BundleContext;

-import org.osgi.framework.Constants;

-import org.osgi.framework.ServiceReference;

-import org.osgi.framework.ServiceRegistration;

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

-

-public abstract class AbstractTopologyManager {

-

-	public static final String SERVICE_EXPORTED_INTERFACES_WILDCARD = "*";

-

-	private BundleContext context;

-	private Discovery discovery;

-

-	private EndpointDescriptionAdvertiser endpointDescriptionAdvertiser;

-	private ServiceRegistration defaultEndpointDescriptionAdvertiserRegistration;

-	private ServiceTracker endpointDescriptionAdvertiserTracker;

-	private Object endpointDescriptionAdvertiserTrackerLock = new Object();

-

-	private RemoteServiceAdmin remoteServiceAdmin;

-	private Object remoteServiceAdminLock = new Object();

-

-	public AbstractTopologyManager(BundleContext context, Discovery discovery) {

-		this.context = context;

-		this.discovery = discovery;

-	}

-

-	public void start() throws Exception {

-		final Properties properties = new Properties();

-		properties.put(Constants.SERVICE_RANKING,

-				new Integer(Integer.MIN_VALUE));

-		// create and register default endpoint description advertiser. Since

-		// this is registered with minimum service ranking

-		// others can override this default simply by registering a

-		// IEndpointDescriptionAdvertiser implementer

-		endpointDescriptionAdvertiser = new EndpointDescriptionAdvertiser(

-				getDiscovery());

-		defaultEndpointDescriptionAdvertiserRegistration = getContext()

-				.registerService(

-						IEndpointDescriptionAdvertiser.class.getName(),

-						endpointDescriptionAdvertiser, (Dictionary) properties);

-	}

-

-	protected BundleContext getContext() {

-		return context;

-	}

-

-	protected Discovery getDiscovery() {

-		return discovery;

-	}

-

-	protected IEndpointDescriptionAdvertiser getEndpointDescriptionAdvertiser() {

-		synchronized (endpointDescriptionAdvertiserTrackerLock) {

-			if (endpointDescriptionAdvertiserTracker == null) {

-				endpointDescriptionAdvertiserTracker = new ServiceTracker(

-						getContext(),

-						IEndpointDescriptionAdvertiser.class.getName(), null);

-				endpointDescriptionAdvertiserTracker.open();

-			}

-		}

-		return (IEndpointDescriptionAdvertiser) endpointDescriptionAdvertiserTracker

-				.getService();

-	}

-

-	private void closeEndpointDescriptionAdvertiser() {

-		// tracker

-		synchronized (endpointDescriptionAdvertiserTrackerLock) {

-			if (endpointDescriptionAdvertiserTracker != null) {

-				endpointDescriptionAdvertiserTracker.close();

-				endpointDescriptionAdvertiserTracker = null;

-			}

-		}

-		// registration

-		if (defaultEndpointDescriptionAdvertiserRegistration != null) {

-			defaultEndpointDescriptionAdvertiserRegistration.unregister();

-			defaultEndpointDescriptionAdvertiserRegistration = null;

-		}

-		// default

-		if (endpointDescriptionAdvertiser != null) {

-			endpointDescriptionAdvertiser.close();

-			endpointDescriptionAdvertiser = null;

-		}

-	}

-

-	public void close() {

-		closeEndpointDescriptionAdvertiser();

-		discovery = null;

-		context = null;

-	}

-

-	protected org.osgi.service.remoteserviceadmin.RemoteServiceAdmin selectExportRemoteServiceAdmin(

-			ServiceReference serviceReference, String[] exportedInterfaces,

-			String[] exportedConfigs, String[] serviceIntents) {

-		synchronized (remoteServiceAdminLock) {

-			if (remoteServiceAdmin == null)

-				remoteServiceAdmin = new RemoteServiceAdmin(getContext());

-		}

-		return remoteServiceAdmin;

-	}

-

-	protected RemoteServiceAdmin selectUnexportRemoteServiceAdmin(

-			ServiceReference serviceReference) {

-		synchronized (remoteServiceAdminLock) {

-			return remoteServiceAdmin;

-		}

-	}

-

-	protected RemoteServiceAdmin selectImportRemoteServiceAdmin(

-			EndpointDescription endpoint) {

-		synchronized (remoteServiceAdminLock) {

-			if (remoteServiceAdmin == null)

-				remoteServiceAdmin = new RemoteServiceAdmin(getContext());

-		}

-		return remoteServiceAdmin;

-	}

-

-	protected RemoteServiceAdmin selectUnimportRemoteServiceAdmin(

-			EndpointDescription endpoint) {

-		synchronized (remoteServiceAdminLock) {

-			if (remoteServiceAdmin == null)

-				remoteServiceAdmin = new RemoteServiceAdmin(getContext());

-		}

-		return remoteServiceAdmin;

-	}

-

-	protected String[] getStringArrayFromPropertyValue(Object value) {

-		if (value == null)

-			return null;

-		else if (value instanceof String)

-			return new String[] { (String) value };

-		else if (value instanceof String[])

-			return (String[]) value;

-		else if (value instanceof Collection)

-			return (String[]) ((Collection) value).toArray(new String[] {});

-		else

-			return null;

-	}

-

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

-		if (propValue == null)

-			return null;

-		boolean wildcard = propValue

-				.equals(SERVICE_EXPORTED_INTERFACES_WILDCARD);

-		if (wildcard)

-			return (String[]) serviceReference

-					.getProperty(org.osgi.framework.Constants.OBJECTCLASS);

-		else {

-			final String[] stringValue = getStringArrayFromPropertyValue(propValue);

-			if (stringValue != null

-					&& stringValue.length == 1

-					&& stringValue[0]

-							.equals(SERVICE_EXPORTED_INTERFACES_WILDCARD)) {

-				logWarning(

-						"getExportedInterfaces", "Service Exported Interfaces Wildcard does not accept String[\"*\"]"); //$NON-NLS-1$

-			}

-			return stringValue;

-		}

-	}

-

-	protected String[] getServiceIntents(ServiceReference serviceReference) {

-		List results = new ArrayList();

-		String[] intents = getStringArrayFromPropertyValue(serviceReference

-				.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS));

-		if (intents != null)

-			results.addAll(Arrays.asList(intents));

-		String[] exportedIntents = getStringArrayFromPropertyValue(serviceReference

-				.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS));

-		if (exportedIntents != null)

-			results.addAll(Arrays.asList(exportedIntents));

-		String[] extraIntents = getStringArrayFromPropertyValue(serviceReference

-				.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA));

-		if (extraIntents != null)

-			results.addAll(Arrays.asList(extraIntents));

-		if (results.size() == 0)

-			return null;

-		return (String[]) results.toArray(new String[] {});

-	}

-

-	protected void logWarning(String methodName, String message) {

-		LogUtility.logWarning(methodName, DebugOptions.TOPOLOGY_MANAGER,

-				this.getClass(), message);

-	}

-

-	protected void advertiseEndpointDescription(

-			EndpointDescription endpointDescription) {

-		IEndpointDescriptionAdvertiser advertiser = getEndpointDescriptionAdvertiser();

-		if (advertiser == null) {

-			logError(

-					"advertiseExportedRegistration",

-					"No endpoint description advertiser available to advertise endpointDescription="

-							+ endpointDescription);

-			return;

-		}

-		// Now advertise endpoint description using endpoint description

-		// advertiser

-		IStatus result = advertiser.advertise(endpointDescription);

-		if (!result.isOK())

-			logError("advertiseExportedRegistration",

-					"Advertise of endpointDescription=" + endpointDescription

-							+ " FAILED", result);

-	}

-

-	protected void unadvertiseEndpointDescription(

-			EndpointDescription endpointDescription) {

-		IEndpointDescriptionAdvertiser advertiser = getEndpointDescriptionAdvertiser();

-		if (advertiser == null) {

-			logError(

-					"unadvertiseEndpointDescription",

-					"No endpoint description advertiser available to unadvertise endpointDescription="

-							+ endpointDescription);

-			return;

-		}

-		// Now unadvertise endpoint description using endpoint description

-		// advertiser

-		IStatus result = advertiser.unadvertise(endpointDescription);

-		if (!result.isOK())

-			logError("unadvertiseEndpointDescription",

-					"Unadvertise of endpointDescription=" + endpointDescription

-							+ " FAILED", result);

-	}

-

-	protected void logError(String methodName, String message, IStatus result) {

-		LogUtility.logError(methodName, DebugOptions.TOPOLOGY_MANAGER,

-				this.getClass(), result);

-	}

-

-	protected void trace(String methodName, String message) {

-		LogUtility.trace(methodName, DebugOptions.TOPOLOGY_MANAGER,

-				this.getClass(), message);

-	}

-

-	protected void logError(String methodName, String message) {

-		LogUtility.logError(methodName, DebugOptions.TOPOLOGY_MANAGER,

-				this.getClass(), message);

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
deleted file mode 100644
index e26ccd2..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-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 java.util.Arrays;
-import java.util.Map;
-
-import org.eclipse.ecf.core.identity.ID;
-import org.osgi.framework.ServiceReference;
-
-public class EndpointDescription extends
-		org.osgi.service.remoteserviceadmin.EndpointDescription {
-
-	private long remoteServiceId;
-
-	private String containerIDNamespace;
-	private ID connectTargetID;
-	private ID[] idFilter;
-	private String rsFilter;
-
-	private int hashCode;
-
-	public EndpointDescription(ServiceReference reference, Map osgiProperties,
-			String containerIDNamespace, ID connectTargetID, ID[] idFilter,
-			String rsFilter) {
-		super(reference, osgiProperties);
-		this.remoteServiceId = verifyLongProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
-		this.containerIDNamespace = containerIDNamespace;
-		this.connectTargetID = connectTargetID;
-		this.idFilter = idFilter;
-		this.rsFilter = rsFilter;
-		computeHashCode();
-	}
-
-	public EndpointDescription(Map osgiProperties, String containerIDNamespace,
-			ID connectTargetID, ID[] idFilter, String rsFilter) {
-		super(osgiProperties);
-		this.remoteServiceId = verifyLongProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
-		this.containerIDNamespace = containerIDNamespace;
-		this.connectTargetID = connectTargetID;
-		this.idFilter = idFilter;
-		this.rsFilter = rsFilter;
-		computeHashCode();
-	}
-
-	private long verifyLongProperty(String propName) {
-		Object r = getProperties().get(propName);
-		if (r == null) {
-			return 0l;
-		}
-		try {
-			return ((Long) r).longValue();
-		} catch (ClassCastException e) {
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"property value is not a Long: " + propName);
-			iae.initCause(e);
-			throw iae;
-		}
-	}
-
-	private void computeHashCode() {
-		this.hashCode = super.hashCode();
-		long remoteServiceId = getRemoteServiceId();
-		this.hashCode = 31 * hashCode
-				+ (int) (remoteServiceId ^ (remoteServiceId >>> 32));
-	}
-
-	public boolean equals(Object other) {
-		if (other == null)
-			return false;
-		if (other == this)
-			return true;
-		if (!(other instanceof EndpointDescription))
-			return false;
-		EndpointDescription o = (EndpointDescription) other;
-		return super.equals(other)
-				&& (o.getRemoteServiceId() == this.getRemoteServiceId());
-	}
-
-	public int hashCode() {
-		return hashCode;
-	}
-
-	public String getContainerIDNamespace() {
-		return containerIDNamespace;
-	}
-
-	public ID getConnectTargetID() {
-		return connectTargetID;
-	}
-
-	public long getRemoteServiceId() {
-		return remoteServiceId;
-	}
-
-	public ID[] getIDFilter() {
-		return idFilter;
-	}
-
-	public String getRemoteServiceFilter() {
-		return rsFilter;
-	}
-
-	public String toString() {
-		return "ECFEndpointDescription[properties=" + super.toString()
-				+ ",containerIDNamespace=" + containerIDNamespace
-				+ ", remoteServiceId=" + getRemoteServiceId()
-				+ ", connectTargetID=" + connectTargetID + ", idFilter="
-				+ Arrays.toString(idFilter) + ", rsFilter=" + rsFilter
-				+ ", hashCode=" + hashCode + "]";
-	}
-
-}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
deleted file mode 100644
index 4f2f804..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.util.ArrayList;

-import java.util.List;

-

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

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.MultiStatus;

-import org.eclipse.core.runtime.Status;

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

-import org.eclipse.ecf.discovery.IServiceInfo;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Discovery;

-import org.osgi.service.remoteserviceadmin.EndpointDescription;

-

-public class EndpointDescriptionAdvertiser implements

-		IEndpointDescriptionAdvertiser {

-

-	private Discovery discovery;

-

-	public EndpointDescriptionAdvertiser(Discovery discovery) {

-		this.discovery = discovery;

-	}

-

-	public IStatus advertise(EndpointDescription endpointDescription) {

-		return doDiscovery(endpointDescription, true);

-	}

-

-	protected IStatus doDiscovery(IDiscoveryAdvertiser discoveryAdvertiser,

-			IServiceInfo serviceInfo, boolean advertise) {

-		try {

-			if (advertise)

-				discoveryAdvertiser.registerService(serviceInfo);

-			else

-				discoveryAdvertiser.unregisterService(serviceInfo);

-			return Status.OK_STATUS;

-		} catch (Exception e) {

-			return createErrorStatus((advertise ? "registerService"

-					: "unregisterService")

-					+ " with serviceInfo="

-					+ serviceInfo

-					+ " for discoveryAdvertiser="

-					+ discoveryAdvertiser

-					+ " failed", e);

-		}

-	}

-

-	protected IServiceInfoFactory getServiceInfoFactory() {

-		return discovery.getServiceInfoFactory();

-	}

-

-	protected IDiscoveryAdvertiser[] getDiscoveryAdvertisers() {

-		return discovery.getDiscoveryAdvertisers();

-	}

-

-	protected IStatus createErrorStatus(String message) {

-		return createErrorStatus(message, null);

-	}

-

-	protected IStatus createErrorStatus(String message, Throwable e) {

-		return new Status(IStatus.ERROR, Activator.PLUGIN_ID, message, e);

-	}

-

-	protected IStatus doDiscovery(EndpointDescription endpointDescription,

-			boolean advertise) {

-		Assert.isNotNull(endpointDescription);

-		String messagePrefix = advertise ? "Advertise" : "Unadvertise";

-		List<IStatus> statuses = new ArrayList<IStatus>();

-		if (endpointDescription instanceof org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription) {

-			org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription eed = (org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription) endpointDescription;

-			// First get serviceInfoFactory

-			IServiceInfoFactory serviceInfoFactory = getServiceInfoFactory();

-			if (serviceInfoFactory == null)

-				return createErrorStatus(messagePrefix

-						+ " endpointDescription="

-						+ endpointDescription

-						+ ".  No IServiceInfoFactory is available.  Cannot unpublish endpointDescription="

-						+ eed);

-			IDiscoveryAdvertiser[] discoveryAdvertisers = getDiscoveryAdvertisers();

-			if (discoveryAdvertisers == null

-					|| discoveryAdvertisers.length == 0)

-				return createErrorStatus(messagePrefix

-						+ " endpointDescription="

-						+ endpointDescription

-						+ ".  No discovery advertisers available.  Cannot unpublish endpointDescription="

-						+ eed);

-			for (int i = 0; i < discoveryAdvertisers.length; i++) {

-				IServiceInfo serviceInfo = (advertise ? serviceInfoFactory

-						.createServiceInfoForDiscovery(discoveryAdvertisers[i],

-								eed) : serviceInfoFactory

-						.removeServiceInfoForUndiscovery(

-								discoveryAdvertisers[i], eed));

-				if (serviceInfo == null) {

-					statuses.add(createErrorStatus(messagePrefix

-							+ " endpointDescription="

-							+ endpointDescription

-							+ ".  Service Info is null.  Cannot publish endpointDescription="

-							+ eed));

-					continue;

-				}

-				// Now actually unregister with advertiser

-				statuses.add(doDiscovery(discoveryAdvertisers[i], serviceInfo,

-						advertise));

-			}

-		} else {

-			statuses.add(createErrorStatus(messagePrefix

-					+ " endpointDescription="

-					+ endpointDescription

-					+ " is not of understood EndpointDescription type.  Not advertising."));

-		}

-		return createResultStatus(statuses, messagePrefix

-				+ " endpointDesription=" + endpointDescription

-				+ ".  Problem in unadvertise");

-	}

-

-	public IStatus unadvertise(EndpointDescription endpointDescription) {

-		return doDiscovery(endpointDescription, false);

-	}

-

-	private IStatus createResultStatus(List<IStatus> statuses,

-			String errorMessage) {

-		List<IStatus> errorStatuses = new ArrayList<IStatus>();

-		for (IStatus status : statuses)

-			if (!status.isOK())

-				errorStatuses.add(status);

-		if (errorStatuses.size() > 0)

-			return new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR,

-					(IStatus[]) statuses.toArray(), errorMessage, null);

-		else

-			return Status.OK_STATUS;

-	}

-

-	public void close() {

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
deleted file mode 100644
index 9c9f08c..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.io.IOException;

-import java.io.InputStream;

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Map;

-import java.util.TreeMap;

-

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

-import org.eclipse.ecf.core.identity.IDCreateException;

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

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.EndpointDescriptionParser;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

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

-import org.osgi.framework.Constants;

-

-public class EndpointDescriptionReader implements IEndpointDescriptionReader {

-

-	public org.osgi.service.remoteserviceadmin.EndpointDescription[] readEndpointDescriptions(

-			InputStream input) throws IOException {

-		// First create parser

-		EndpointDescriptionParser parser = new EndpointDescriptionParser();

-		// Parse input stream

-		parser.parse(input);

-		// Get possible endpoint descriptions

-		List<EndpointDescriptionParser.EndpointDescription> parsedDescriptions = parser

-				.getEndpointDescriptions();

-		List<org.osgi.service.remoteserviceadmin.EndpointDescription> results = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();

-		// For each one parsed, get properties and

-		for (EndpointDescriptionParser.EndpointDescription ed : parsedDescriptions) {

-			Map parsedProperties = ed.getProperties();

-			org.osgi.service.remoteserviceadmin.EndpointDescription result = null;

-			try {

-				// OSGI required properties

-				// objectClass/String+

-				List<String> objectClasses = PropertiesUtil

-						.getStringPlusProperty(parsedProperties,

-								Constants.OBJECTCLASS);

-				// Must have at least one objectClass

-				if (objectClasses == null || objectClasses.size() == 0)

-					throw new EndpointDescriptionParseException(

-							Constants.OBJECTCLASS

-									+ " is not set in endpoint description.  It must be set to String+ value");

-				parsedProperties.put(Constants.OBJECTCLASS,

-						(String[]) objectClasses

-								.toArray(new String[objectClasses.size()]));

-

-				// endpoint.id

-				String endpointId = PropertiesUtil

-						.getStringWithDefault(

-								parsedProperties,

-								org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,

-								null);

-				// Must have endpoint id, so throw if it's not found

-				if (endpointId == null)

-					throw new EndpointDescriptionParseException(

-							org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID

-									+ " is not set in endpoint description.  It must be set to String value");

-				parsedProperties

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

-								endpointId);

-

-				// endpoint.service.id. Default is set to Long(0), which means

-				// not an OSGi endpoint description

-				Long endpointServiceId = PropertiesUtil

-						.getLongWithDefault(

-								parsedProperties,

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

-								new Long(0));

-				parsedProperties

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

-								endpointServiceId);

-

-				// service.imported.configs

-				List<String> configurationTypes = PropertiesUtil

-						.getStringPlusProperty(

-								parsedProperties,

-								org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS);

-				// Must have at least one service.imported.config

-				if (configurationTypes == null

-						|| configurationTypes.size() == 0)

-					throw new EndpointDescriptionParseException(

-							org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS

-									+ " is not set in endpoint description.  It must be set to String+ value)");

-

-				// Create OSGi endpoint description to verify that all OSGi

-				// properties are correct/set

-				result = new org.osgi.service.remoteserviceadmin.EndpointDescription(

-						parsedProperties);

-

-				// If ECF endpoint description, then an endpoint container ID

-				// will be non-null

-				ID endpointContainerID = getContainerID(parsedProperties);

-				// if the endpointContainerID is not found, then this is not an

-				// ECF endpoint description

-				if (endpointContainerID != null) {

-					result = createECFEndpointDescription(endpointContainerID,

-							parsedProperties);

-				}

-				results.add(result);

-			} catch (Exception e) {

-				LogUtility.logError("readEndpointDescriptions",

-						DebugOptions.ENDPOINTDESCRIPTIONREADER,

-						this.getClass(),

-						"Exception parsing endpoint description properties", e);

-			}

-		}

-		return results.toArray(new EndpointDescription[results.size()]);

-	}

-

-	private org.osgi.service.remoteserviceadmin.EndpointDescription createECFEndpointDescription(

-			ID endpointContainerID, Map parsedProperties)

-			throws EndpointDescriptionParseException {

-		Map<String, Object> endointDescriptionProperties = PropertiesUtil

-				.copyNonECFProperties(parsedProperties,

-						new TreeMap<String, Object>());

-		// we get the remote service id...default 0 means that it's not an ECF

-		// remote service

-		Long remoteServiceId = PropertiesUtil.getLongWithDefault(

-				parsedProperties,

-				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID, null);

-		if (remoteServiceId == null)

-			throw new EndpointDescriptionParseException(

-					org.eclipse.ecf.remoteservice.Constants.SERVICE_ID

-							+ " is not set in endpoint description.  It must be set to Long value");

-		endointDescriptionProperties.put(

-				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,

-				remoteServiceId);

-

-		// target ID

-		ID targetID = null;

-		String targetName = (String) parsedProperties

-				.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

-		String targetNamespace = (String) parsedProperties

-				.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID_NAMESPACE);

-		if (targetName != null)

-			targetID = IDUtil.createID(targetNamespace, targetName);

-

-		// id filter

-		ID[] idFilter = getIDFilter(endpointContainerID.getNamespace(),

-				parsedProperties);

-		// rs filter

-		String rsFilter = (String) parsedProperties

-				.get(RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER);

-

-		return new EndpointDescription(endointDescriptionProperties,

-				endpointContainerID.getNamespace().getName(), targetID,

-				idFilter, rsFilter);

-	}

-

-	private ID[] getIDFilter(Namespace namespace, Map<String, Object> properties) {

-		List<ID> resultList = new ArrayList();

-		Object o = properties.get(RemoteConstants.ENDPOINT_IDFILTER_IDS);

-		if (o != null && o instanceof List<?>) {

-			// Assumed to be list of strings

-			for (String i : (List<String>) o) {

-				ID id = IDUtil.createID(namespace, i);

-				if (id != null)

-					resultList.add(id);

-			}

-		} else {

-			Number countInt = null;

-			Object counto = properties

-					.get(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_COUNT);

-			if (counto instanceof Number)

-				countInt = (Number) counto;

-			if (countInt == null)

-				return null;

-			int count = countInt.intValue();

-			if (count <= 0)

-				return null;

-			for (int i = 0; i < count; i++) {

-				// decode string as name

-				String name = (String) properties

-						.get(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_

-								+ i);

-				if (name != null) {

-					String ns = (String) properties

-							.get(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_

-									+ i);

-					if (ns == null)

-						ns = namespace.getName();

-					ID id = IDUtil.createID(ns, name);

-					if (id != null)

-						resultList.add(id);

-				}

-			}

-		}

-		return (resultList.size() > 0) ? (ID[]) resultList

-				.toArray(new ID[resultList.size()]) : null;

-	}

-

-	private ID getContainerID(Map<String, Object> properties)

-			throws IDCreateException {

-		// We try to get the ID from the OSGi id

-		String osgiId = PropertiesUtil

-				.verifyStringProperty(

-						properties,

-						org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);

-		if (osgiId == null)

-			throw new IDCreateException(

-					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID

-							+ " must not be null");

-		String containerIDNamespace = PropertiesUtil.verifyStringProperty(

-				properties, RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);

-		return IDUtil.createID(properties, containerIDNamespace);

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
deleted file mode 100644
index 7e3f18c..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.io.IOException;

-import java.io.Writer;

-import java.util.Map;

-

-public class EndpointDescriptionWriter implements IEndpointDescriptionWriter {

-

-	protected String indent = "  ";

-

-	public void writeEndpointDescriptions(Writer writer,

-			EndpointDescription[] endpointDescriptions) throws IOException {

-

-		writeEndpointDescriptionsElementOpen(0, writer);

-		for (int i = 0; i < endpointDescriptions.length; i++) {

-			writeEndpointDescription(1, writer, endpointDescriptions[i]);

-		}

-		writeEndpointDescriptionsElementClose(0, writer);

-	}

-

-	private Writer newLine(Writer writer) throws IOException {

-		return writer.append("\n");

-	}

-

-	private Writer indent(int indentLevel, Writer writer) throws IOException {

-		for (int i = 0; i < indentLevel; i++)

-			writer.append(indent);

-		return writer;

-	}

-

-	private void writeEndpointDescription(int indentLevel, Writer writer,

-			EndpointDescription endpointDescription) throws IOException {

-		writeEndpointDescriptionElementOpen(indentLevel, writer);

-		writeProperties(indentLevel, writer, endpointDescription);

-		writeEndpointDescriptionElementClose(indentLevel, writer);

-	}

-

-	private void writeEndpointDescriptionElementClose(int indentLevel,

-			Writer writer) throws IOException {

-		indent(indentLevel, writer);

-		writer.append("</endpoint-description>");

-		newLine(writer);

-	}

-

-	private void writeProperties(int indentLevel, Writer writer,

-			EndpointDescription endpointDescription) throws IOException {

-		Map<String, Object> properties = endpointDescription.getProperties();

-		for (String name : properties.keySet())

-			writeProperty(indentLevel + 1, name, properties.get(name), writer);

-	}

-

-	private void writeProperty(int indentLevel, String name, Object value,

-			Writer writer) throws IOException {

-		if (value != null) {

-			String multiValueType = getMultiValueType(value);

-			if (multiValueType != null) {

-				writeMultiValueProperty(indentLevel, name, value, writer);

-			} else {

-				String valueType = getValueType(value);

-				writeValueProperty(indentLevel, name, valueType, value, writer);

-			}

-		}

-	}

-

-	private void writeValueProperty(int indentLevel, String name,

-			String valueType, Object value, Writer writer) throws IOException {

-		indent(indentLevel, writer);

-		writer.append("<property name=\"").append(name)

-				.append("\" value-type=\"").append(valueType)

-				.append("\" value=").append(value.toString()).append("\"/>");

-		newLine(writer);

-	}

-

-	private void writeMultiValueProperty(int indentLevel, String name,

-			Object value, Writer writer) {

-		// TODO Auto-generated method stub

-

-	}

-

-	private String getMultiValueType(Object value) {

-		// TODO Auto-generated method stub

-		return null;

-	}

-

-	private String getValueType(Object value) {

-		// first determine if is array

-		if (value instanceof String)

-			return "String";

-		else if (value instanceof Long)

-			return "Long";

-		else if (value instanceof Double)

-			return "Double";

-		else if (value instanceof Float)

-			return "Float";

-		else if (value instanceof Integer)

-			return "Integer";

-		else if (value instanceof Byte)

-			return "Byte";

-		else if (value instanceof Character)

-			return "Character";

-		else if (value instanceof Boolean)

-			return "Boolean";

-		else if (value instanceof Short)

-			return "Short";

-		return null;

-	}

-

-	private void writeEndpointDescriptionElementOpen(int indentLevel,

-			Writer writer) throws IOException {

-		indent(indentLevel, writer);

-		writer.append("<endpoint-description>");

-		newLine(writer);

-	}

-

-	private void writeEndpointDescriptionsElementClose(int indentLevel,

-			Writer writer) throws IOException {

-		indent(indentLevel, writer);

-		writer.append("<endpoint-descriptions xmlns=\"http://www.osgi.org/xmlns/rsa/v1.0.0\">");

-		newLine(writer);

-	}

-

-	private void writeEndpointDescriptionsElementOpen(int indentLevel,

-			Writer writer) throws IOException {

-		indent(indentLevel, writer);

-		writer.append("</endpoint-descriptions>");

-		newLine(writer);

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ExportReference.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ExportReference.java
deleted file mode 100644
index 33361a9..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ExportReference.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.osgi.framework.ServiceReference;

-

-public class ExportReference implements

-		org.osgi.service.remoteserviceadmin.ExportReference {

-

-	private ServiceReference serviceReference;

-	private EndpointDescription endpointDescription;

-

-	protected ExportReference(ServiceReference serviceReference,

-			EndpointDescription endpointDescription) {

-		this.serviceReference = serviceReference;

-		this.endpointDescription = endpointDescription;

-	}

-

-	public synchronized ServiceReference getExportedService() {

-		return serviceReference;

-	}

-

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

-		return endpointDescription;

-	}

-

-	public synchronized void close() {

-		this.serviceReference = null;

-		this.endpointDescription = null;

-	}

-

-	public synchronized String toString() {

-		return "ExportReference[serviceReference=" + serviceReference

-				+ ", endpointDescription=" + endpointDescription + "]";

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ExportRegistration.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ExportRegistration.java
deleted file mode 100644
index df0d717..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ExportRegistration.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.core.runtime.Assert;

-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

-import org.osgi.framework.ServiceReference;

-

-public class ExportRegistration implements

-		org.osgi.service.remoteserviceadmin.ExportRegistration {

-

-	private IRemoteServiceRegistration rsRegistration;

-	private ExportReference exportReference;

-

-	private ServiceReference serviceReference;

-	private Throwable exception;

-

-	public ExportRegistration(IRemoteServiceRegistration rsRegistration,

-			ServiceReference proxyServiceReference,

-			EndpointDescription endpointDescription) {

-		Assert.isNotNull(rsRegistration);

-		this.rsRegistration = rsRegistration;

-		this.serviceReference = proxyServiceReference;

-		this.exportReference = new ExportReference(proxyServiceReference,

-				endpointDescription);

-	}

-

-	public ExportRegistration(ServiceReference serviceReference, Throwable t) {

-		this.serviceReference = serviceReference;

-		this.exception = t;

-	}

-

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

-		Throwable t = getException();

-		if (t != null)

-			throw new IllegalStateException(

-					"Cannot get export reference as registration not properly initialized",

-					t);

-		return exportReference;

-	}

-

-	public synchronized boolean matchesServiceReference(

-			ServiceReference serviceReference) {

-		if (serviceReference == null)

-			return false;

-		return (this.serviceReference.equals(serviceReference));

-	}

-

-	public synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {

-		return rsRegistration;

-	}

-

-	public synchronized void close() {

-		if (rsRegistration != null) {

-			rsRegistration.unregister();

-			rsRegistration = null;

-		}

-		if (exportReference != null) {

-			exportReference.close();

-			exportReference = null;

-		}

-		exception = null;

-	}

-

-	public synchronized Throwable getException() {

-		return exception;

-	}

-

-	public synchronized String toString() {

-		return "ExportRegistration[rsRegistration=" + rsRegistration

-				+ ", exportReference=" + exportReference

-				+ ", serviceReference=" + serviceReference + ", exception="

-				+ exception + "]";

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
deleted file mode 100644
index 3968a1d..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.remoteservice.IRemoteServiceContainer;

-

-public interface IConsumerContainerSelector {

-

-	public IRemoteServiceContainer selectConsumerContainer(

-			EndpointDescription endpointDescription);

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
deleted file mode 100644
index 04426c0..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-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.discovery.IDiscoveryLocator;
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.eclipse.ecf.discovery.identity.IServiceID;
-
-public interface IDiscoveredEndpointDescriptionFactory {
-
-	/**
-	 * Create an EndpointDescription for a discovered remote service.
-	 * Implementers of this factory service may return the type of
-	 * EndpointDescription appropriate for the associated distribution system
-	 * (e.g. ECFEndpointDescription). Implementers should return
-	 * <code>null</code> if no notification should occur.
-	 * 
-	 * @param locator
-	 *            the locator responsible for the discoveredServiceInfo. Must
-	 *            not be <code>null</code>.
-	 * @param discoveredServiceInfo
-	 *            the discovered service info. Must not be <code>null</code>.
-	 * @return DiscoveredEndpointDescription that will be used to notify
-	 *         EndpointListeners about a new EndpointDescription. If
-	 *         <code>null</code> is returned, no notification should be
-	 *         performed by the calling code.
-	 */
-	public DiscoveredEndpointDescription createDiscoveredEndpointDescription(
-			IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo);
-
-	/**
-	 * Get an EndpointDescription for an undiscovered remote service.
-	 * Implementers of this factory service may return the type of
-	 * EndpointDescription appropriate for the associated distribution system
-	 * (e.g. ECFEndpointDescription). Implementers should return
-	 * <code>null</code> if no notification should occur.
-	 * 
-	 * @param locator
-	 *            the locator responsible for the discoveredServiceInfo. Must
-	 *            not be <code>null</code>.
-	 * @param serviceId
-	 *            the discovered service ID. Must not be <code>null</code>.
-	 * @return EndpointDescription that will be used to notify EndpointListeners
-	 *         about an undiscovered EndpointDescription. If <code>null</code>
-	 *         is returned, no notification should be performed by the calling
-	 *         code.
-	 */
-	public DiscoveredEndpointDescription getUndiscoveredEndpointDescription(
-			IDiscoveryLocator locator, IServiceID serviceID);
-
-	public boolean removeEndpointDescription(
-			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription);
-
-	public void removeAllEndpointDescriptions();
-}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionAdvertiser.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionAdvertiser.java
deleted file mode 100644
index 9742cef..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionAdvertiser.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.core.runtime.IStatus;

-

-public interface IEndpointDescriptionAdvertiser {

-

-	public IStatus advertise(

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

-

-	public IStatus unadvertise(

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

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
deleted file mode 100644
index 62bc023..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.io.IOException;

-import java.io.InputStream;

-

-public interface IEndpointDescriptionReader {

-

-	public org.osgi.service.remoteserviceadmin.EndpointDescription[] readEndpointDescriptions(

-			InputStream ins) throws IOException,

-			EndpointDescriptionParseException;

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java
deleted file mode 100644
index 4425766..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionWriter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.io.IOException;

-import java.io.Writer;

-

-public interface IEndpointDescriptionWriter {

-

-	public void writeEndpointDescriptions(Writer writer,

-			EndpointDescription[] endpointDescriptions) throws IOException;

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
deleted file mode 100644
index a8ce3ff..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.remoteservice.IRemoteServiceContainer;

-import org.osgi.framework.ServiceReference;

-

-public interface IHostContainerSelector {

-	IRemoteServiceContainer[] selectHostContainers(

-			ServiceReference serviceReference, String[] exportedInterfaces,

-			String[] exportedConfigs, String[] serviceIntents);

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IServiceInfoFactory.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IServiceInfoFactory.java
deleted file mode 100644
index c8f2bea..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IServiceInfoFactory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.discovery.IDiscoveryAdvertiser;

-import org.eclipse.ecf.discovery.IServiceInfo;

-

-public interface IServiceInfoFactory {

-

-	public IServiceInfo createServiceInfoForDiscovery(

-			IDiscoveryAdvertiser advertiser,

-			EndpointDescription endpointDescription);

-

-	public IServiceInfo removeServiceInfoForUndiscovery(

-			IDiscoveryAdvertiser advertiser,

-			EndpointDescription endpointDescription);

-

-	public boolean removeServiceInfo(IDiscoveryAdvertiser advertiser,

-			EndpointDescription endpointDescription);

-

-	public void removeAllServiceInfos();

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ImportReference.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ImportReference.java
deleted file mode 100644
index b733876..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ImportReference.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.osgi.framework.ServiceReference;

-

-public class ImportReference implements

-		org.osgi.service.remoteserviceadmin.ImportReference {

-

-	private ServiceReference importedServiceReference;

-	private EndpointDescription endpointDescription;

-

-	protected ImportReference(ServiceReference serviceReference,

-			EndpointDescription endpointDescription) {

-		this.importedServiceReference = serviceReference;

-		this.endpointDescription = endpointDescription;

-	}

-

-	public synchronized ServiceReference getImportedService() {

-		return importedServiceReference;

-	}

-

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

-		return endpointDescription;

-	}

-

-	public synchronized void close() {

-		this.importedServiceReference = null;

-		this.endpointDescription = null;

-	}

-

-	public synchronized String toString() {

-		return "ImportReference[importedServiceReference="

-				+ importedServiceReference + ", endpointDescription="

-				+ endpointDescription + "]";

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ImportRegistration.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ImportRegistration.java
deleted file mode 100644
index 77c2abc..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ImportRegistration.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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.core.runtime.Assert;

-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;

-import org.eclipse.ecf.remoteservice.IRemoteServiceListener;

-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;

-import org.osgi.framework.ServiceRegistration;

-

-public class ImportRegistration implements

-		org.osgi.service.remoteserviceadmin.ImportRegistration {

-

-	private IRemoteServiceContainer rsContainer;

-	private IRemoteServiceListener rsListener;

-	private IRemoteServiceReference rsReference;

-	private ServiceRegistration importRegistration;

-	private ImportReference importReference;

-	private Throwable throwable;

-

-	public ImportRegistration(IRemoteServiceContainer rsContainer,

-			IRemoteServiceListener rsListener,

-			IRemoteServiceReference rsReference,

-			EndpointDescription endpointDescription,

-			ServiceRegistration importRegistration) {

-		this.rsContainer = rsContainer;

-		Assert.isNotNull(rsContainer);

-		this.rsListener = rsListener;

-		Assert.isNotNull(rsListener);

-		this.rsReference = rsReference;

-		Assert.isNotNull(rsReference);

-		this.importRegistration = importRegistration;

-		this.importReference = new ImportReference(

-				importRegistration.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

-		rsContainer.getContainerAdapter().addRemoteServiceListener(rsListener);

-	}

-

-	public ImportRegistration(IRemoteServiceContainer rsContainer, Throwable t) {

-		this.rsContainer = rsContainer;

-		this.throwable = t;

-	}

-	

-	public synchronized IRemoteServiceReference getRemoteServiceReference() {

-			return rsReference;

-	}

-

-	public synchronized IRemoteServiceContainer getRemoteServiceContainer() {

-			return rsContainer;

-	}

-

-	public synchronized ImportReference getImportReference() {

-			Throwable t = getException();

-			if (t != null)

-				throw new IllegalStateException(

-						"Cannot get import reference as registration not properly initialized",

-						t);

-			return importReference;

-	}

-

-	public synchronized void close() {

-			if (importRegistration != null) {

-				importRegistration.unregister();

-				importRegistration = null;

-			}

-			if (rsContainer != null) {

-				IRemoteServiceContainerAdapter containerAdapter = rsContainer.getContainerAdapter();

-				if (rsReference != null) containerAdapter.ungetRemoteService(rsReference);

-				rsReference = null;

-				// remove remote service listener

-				if (rsListener != null) containerAdapter.removeRemoteServiceListener(rsListener);

-				rsListener = null;

-				rsContainer = null;

-			}

-			if (importReference != null) {

-				importReference.close();

-				importReference = null;

-			}

-			throwable = null;

-	}

-

-	public synchronized Throwable getException() {

-			return throwable;

-	}

-

-	public synchronized String toString() {

-		return "ImportRegistration [rsReference=" + rsReference

-				+ ", importReference=" + importReference + ", throwable="

-				+ throwable + "]";

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
deleted file mode 100644
index 964169a..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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;

-

-public class RemoteConstants {

-

-	public static final String SERVICE_TYPE = "osgirsvc";

-

-	public static final String DISCOVERY_SCOPE = "ecf.endpoint.discovery.scope";

-	public static final String DISCOVERY_PROTOCOLS = "ecf.endpoint.discovery.protocols";

-	public static final String DISCOVERY_NAMING_AUTHORITY = "ecf.endpoint.discovery.namingauthority";

-	public static final String DISCOVERY_SERVICE_NAME = "ecf.endpoint.discovery.servicename";

-	public static final String DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX = "osgirsvc_";

-

-	// container id namespace. Value of type String

-	public static final String ENDPOINT_CONTAINER_ID_NAMESPACE = "ecf.endpoint.id.ns";

-	// target id. Value of type String

-	public static final String ENDPOINT_CONNECTTARGET_ID = "ecf.endpoint.connecttarget.id";

-	// target namespace. Value of type String

-	public static final String ENDPOINT_CONNECTTARGET_ID_NAMESPACE = "ecf.endpoint.connecttarget.id.ns";

-	// id filter. Value of type ID[]

-	public static final String ENDPOINT_IDFILTER_IDS = "ecf.endpoint.idfilter.ids";

-	// id filter array length count. Value of type String (representing Integer)

-	public static final String ENDPOINT_IDFILTER_IDARRAY_COUNT = "ecf.endpoint.idfilter.id.n";

-	// id filter external form. Value of type String

-	public static final String ENDPOINT_IDFILTER_IDARRAY_NAME_ = "ecf.endpoint.idfilter.id.name.";

-	// id filter namespaces. Value of type String.

-	public static final String ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_ = "ecf.endpoint.idfilter.id.ns.";

-	// remote service filter. Value of type String

-	public static final String ENDPOINT_REMOTESERVICE_FILTER = "ecf.endpoint.rsfilter";

-

-	// Value of

-	// org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS

-	// For ECF providers this is a constant, and receivers of

-	public static final String ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE = "org.eclipse.ecf.config";

-

-	// Value of type String,ID,or Object[]

-	public static final String SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS = "ecf.exported.containerfactoryargs";

-	// Value of type IConnectContext

-	public static final String SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT = "ecf.exported.containerconnectcontext";

-	// Value of type ID

-	public static final String SERVICE_EXPORTED_CONTAINER_ID = "ecf.exported.containerid";

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
deleted file mode 100644
index 207961b..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.util.ArrayList;

-import java.util.Collection;

-import java.util.Collections;

-import java.util.Iterator;

-import java.util.List;

-import java.util.Map;

-

-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

-import org.eclipse.ecf.remoteservice.IRemoteServiceID;

-import org.eclipse.ecf.remoteservice.IRemoteServiceListener;

-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;

-import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;

-import org.eclipse.ecf.remoteservice.events.IRemoteServiceUnregisteredEvent;

-import org.osgi.framework.BundleContext;

-import org.osgi.framework.ServiceReference;

-

-public class RemoteServiceAdmin extends AbstractRemoteServiceAdmin implements

-		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin {

-

-	private Collection<ExportRegistration> exportedRegistrations = new ArrayList<ExportRegistration>();

-

-	private Collection<ImportRegistration> importedRegistrations = new ArrayList<ImportRegistration>();

-

-	public RemoteServiceAdmin(BundleContext context) {

-		super(context);

-	}

-

-	public Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> exportService(

-			ServiceReference serviceReference, Map<String, Object> properties) {

-		trace("exportService", "serviceReference=" + serviceReference

-				+ ",properties=" + properties);

-		String[] exportedInterfaces = (String[]) getPropertyValue(

-				org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES,

-				serviceReference, properties);

-		String[] exportedConfigs = (String[]) getPropertyValue(

-				org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS,

-				serviceReference, properties);

-		String[] serviceIntents = (String[]) getPropertyValue(

-				org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS,

-				serviceReference, properties);

-		// Get a host container selector

-		IHostContainerSelector hostContainerSelector = getHostContainerSelector();

-		if (hostContainerSelector == null) {

-			logError("handleServiceRegistering",

-					"No hostContainerSelector available");

-			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

-		if (rsContainers == null || rsContainers.length == 0) {

-			logWarning(

-					"handleServiceRegistered", "No remote service containers found for serviceReference=" //$NON-NLS-1$

-							+ serviceReference

-							+ ". Remote service NOT EXPORTED"); //$NON-NLS-1$

-			return Collections.EMPTY_LIST;

-		}

-		Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> results = new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>();

-		synchronized (exportedRegistrations) {

-			for (int i = 0; i < rsContainers.length; i++) {

-				ExportRegistration rsRegistration = null;

-				try {

-					rsRegistration = doExportService(serviceReference,

-							properties, exportedInterfaces, serviceIntents,

-							rsContainers[i]);

-				} catch (Exception e) {

-					logError("exportService",

-							"Exception exporting serviceReference="

-									+ serviceReference + " with properties="

-									+ properties + " rsContainerID="

-									+ rsContainers[i].getContainer().getID(), e);

-					rsRegistration = new ExportRegistration(serviceReference,e);

-				}

-				results.add(rsRegistration);

-				exportedRegistrations.add(rsRegistration);

-			}

-		}

-		return results;

-	}

-

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

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

-		trace("importService", "endpointDescription=" + endpointDescription);

-		// First check to see whether it's one of ECF's endpoint descriptions

-		if (endpointDescription instanceof EndpointDescription) {

-			EndpointDescription ed = (EndpointDescription) endpointDescription;

-			// Now get IConsumerContainerSelector, to select the ECF container

-			// for the given endpointDescription

-			IConsumerContainerSelector consumerContainerSelector = getConsumerContainerSelector();

-			// If there is none, then we can go no further

-			if (consumerContainerSelector == null) {

-				logError("importService",

-						"No consumerContainerSelector available");

-				return null;

-			}

-			// Select the rsContainer to handle the endpoint description

-			IRemoteServiceContainer rsContainer = consumerContainerSelector

-					.selectConsumerContainer(ed);

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

-			if (rsContainer == null) {

-				logWarning(

-						"importService", "No remote service container selected for endpoint=" //$NON-NLS-1$

-								+ endpointDescription

-								+ ". Remote service NOT IMPORTED"); //$NON-NLS-1$

-				return null;

-			}

-			// If one selected then import the service to create an import

-			// registration

-			ImportRegistration importRegistration = null;

-			synchronized (importedRegistrations) {

-				try {

-					importRegistration = doImportService(ed, rsContainer);

-				} catch (Exception e) {

-					logError("importService",

-							"Exception importing endpointDescription=" + ed

-									+ rsContainer.getContainer().getID(), e);

-					importRegistration = new ImportRegistration(rsContainer, e);

-				} catch (NoClassDefFoundError e) {

-					logError("importService",

-							"NoClassDefFoundError importing endpointDescription="

-									+ ed + rsContainer.getContainer().getID(),

-							e);

-					importRegistration = new ImportRegistration(rsContainer, e);

-				}

-				// If we actually created an importRegistration...whether

-				// successful or not, add it to the

-				// set of imported registrations

-				if (importRegistration != null)

-					importedRegistrations.add(importRegistration);

-			}

-			// Finally, return the importRegistration. It may be null or not.

-			return importRegistration;

-		} else {

-			logWarning("importService", "endpointDescription="

-					+ endpointDescription

-					+ " is not ECFEndpointDescription...ignoring");

-			return null;

-		}

-	}

-

-	public Collection<ImportRegistration> unimportService(

-			IRemoteServiceID remoteServiceID) {

-		trace("unimport", "remoteServiceID=" + remoteServiceID);

-		List<ImportRegistration> removedRegistrations = new ArrayList<ImportRegistration>();

-		synchronized (importedRegistrations) {

-			for (Iterator<ImportRegistration> i = importedRegistrations

-					.iterator(); i.hasNext();) {

-				ImportRegistration importRegistration = i.next();

-				IRemoteServiceReference rsReference = importRegistration

-						.getRemoteServiceReference();

-				if (rsReference != null) {

-					IRemoteServiceID regID = rsReference.getID();

-					if (regID.equals(remoteServiceID)) {

-						removedRegistrations.add(importRegistration);

-						i.remove();

-					}

-				}

-			}

-		}

-		// Now close all of them

-		for (ImportRegistration removedReg : removedRegistrations)

-			removedReg.close();

-		return removedRegistrations;

-	}

-

-	protected IRemoteServiceListener createRemoteServiceListener() {

-		return new RemoteServiceListener();

-	}

-

-	class RemoteServiceListener implements IRemoteServiceListener {

-

-		public void handleServiceEvent(IRemoteServiceEvent event) {

-			if (event instanceof IRemoteServiceUnregisteredEvent) {

-				Collection<ImportRegistration> removedRegistrations = unimportService(event

-						.getReference().getID());

-				trace("RemoteServiceListener.handleServiceEvent",

-						"Removed importRegistrations=" + removedRegistrations

-								+ " via event=" + event);

-			}

-		}

-	}

-

-	public Collection<ImportRegistration> unimportService(

-			EndpointDescription endpointDescription) {

-		trace("unimportService", "endpointDescription=" + endpointDescription);

-		List<ImportRegistration> removedRegistrations = new ArrayList<ImportRegistration>();

-		synchronized (importedRegistrations) {

-			for (Iterator<ImportRegistration> i = importedRegistrations

-					.iterator(); i.hasNext();) {

-				ImportRegistration reg = i.next();

-				ImportReference importReference = null;

-				try {

-					importReference = reg.getImportReference();

-					if (importReference != null) {

-						org.osgi.service.remoteserviceadmin.EndpointDescription importedDescription = importReference

-								.getImportedEndpoint();

-						if (importedDescription != null

-								&& importedDescription

-										.equals(endpointDescription)) {

-							removedRegistrations.add(reg);

-							i.remove();

-						}

-					}

-				} catch (IllegalStateException e) {

-					// Import Registration not properly initialized

-				}

-			}

-		}

-		// Now close all of them

-		for (ImportRegistration removedReg : removedRegistrations)

-			removedReg.close();

-		return removedRegistrations;

-	}

-

-	public Collection<org.eclipse.ecf.osgi.services.remoteserviceadmin.ExportRegistration> getExportedRegistrations() {

-		Collection<org.eclipse.ecf.osgi.services.remoteserviceadmin.ExportRegistration> results = new ArrayList<org.eclipse.ecf.osgi.services.remoteserviceadmin.ExportRegistration>();

-		synchronized (exportedRegistrations) {

-			results.addAll(exportedRegistrations);

-		}

-		return results;

-	}

-

-	public Collection<org.osgi.service.remoteserviceadmin.ExportReference> getExportedServices() {

-		Collection<org.osgi.service.remoteserviceadmin.ExportReference> results = new ArrayList<org.osgi.service.remoteserviceadmin.ExportReference>();

-		synchronized (exportedRegistrations) {

-			for (ExportRegistration reg : exportedRegistrations) {

-				results.add(reg.getExportReference());

-			}

-		}

-		return results;

-	}

-

-	public Collection<org.eclipse.ecf.osgi.services.remoteserviceadmin.ImportRegistration> getImportedRegistrations() {

-		Collection<org.eclipse.ecf.osgi.services.remoteserviceadmin.ImportRegistration> results = new ArrayList<org.eclipse.ecf.osgi.services.remoteserviceadmin.ImportRegistration>();

-		synchronized (importedRegistrations) {

-			results.addAll(importedRegistrations);

-		}

-		return results;

-	}

-

-	public Collection<org.osgi.service.remoteserviceadmin.ImportReference> getImportedEndpoints() {

-		Collection<org.osgi.service.remoteserviceadmin.ImportReference> results = new ArrayList<org.osgi.service.remoteserviceadmin.ImportReference>();

-		synchronized (importedRegistrations) {

-			for (ImportRegistration reg : importedRegistrations) {

-				results.add(reg.getImportReference());

-			}

-		}

-		return results;

-	}

-

-	public void close() {

-		synchronized (exportedRegistrations) {

-			exportedRegistrations.clear();

-		}

-		synchronized (importedRegistrations) {

-			importedRegistrations.clear();

-		}

-		super.close();

-	}

-

-	private ExportRegistration[] findExportRegistrations(

-			ServiceReference serviceReference) {

-		List<ExportRegistration> results = new ArrayList<ExportRegistration>();

-		for (ExportRegistration exportReg : exportedRegistrations)

-			if (exportReg.matchesServiceReference(serviceReference))

-				results.add(exportReg);

-		return results.toArray(new ExportRegistration[results.size()]);

-	}

-

-	public EndpointDescription[] unexportService(

-			ServiceReference serviceReference) {

-		List<EndpointDescription> endpointDescriptions = new ArrayList<EndpointDescription>();

-		synchronized (exportedRegistrations) {

-			ExportRegistration[] exportRegs = findExportRegistrations(serviceReference);

-			if (exportRegs != null) {

-				for (int i = 0; i < exportRegs.length; i++) {

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

-					try {

-						exportRef = exportRegs[i].getExportReference();

-						if (exportRef != null) {

-							org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription = exportRef

-									.getExportedEndpoint();

-							if (endpointDescription != null

-									&& endpointDescription instanceof EndpointDescription) {

-								endpointDescriptions

-										.add((EndpointDescription) endpointDescription);

-							}

-						}

-					} catch (IllegalStateException e) {

-						// no export ref because ExportRegistration not

-						// initialized properly

-					}

-					// close and remove the export registration no matter what

-					exportRegs[i].close();

-					exportedRegistrations.remove(exportRegs[i]);

-				}

-			}

-		}

-		return endpointDescriptions

-				.toArray(new EndpointDescription[endpointDescriptions.size()]);

-	}

-}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/TopologyManager.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/TopologyManager.java
deleted file mode 100644
index 250df55..0000000
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/TopologyManager.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2010-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 java.util.Collection;

-import java.util.Dictionary;

-import java.util.HashMap;

-import java.util.Map;

-import java.util.Properties;

-

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Discovery;

-import org.osgi.framework.BundleContext;

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

-import org.osgi.service.remoteserviceadmin.ImportRegistration;

-

-public class TopologyManager extends AbstractTopologyManager implements

-		EventHook, EndpointListener {

-

-	private ServiceRegistration endpointListenerRegistration;

-

-	private ServiceRegistration eventHookRegistration;

-

-	public TopologyManager(BundleContext context, Discovery discovery) {

-		super(context, discovery);

-	}

-

-	public void start() throws Exception {

-		super.start();

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

-		// are discovered

-		Properties props = new Properties();

-		props.put(

-				org.osgi.service.remoteserviceadmin.EndpointListener.ENDPOINT_LISTENER_SCOPE,

-				"("

-						+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID

-						+ "=*)");

-		endpointListenerRegistration = getContext().registerService(

-				EndpointListener.class.getName(), this, (Dictionary) props);

-

-		// Register as EventHook, so that we get notified when remote services

-		// are registered

-		eventHookRegistration = getContext().registerService(

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

-	}

-

-	public void close() {

-		if (eventHookRegistration != null) {

-			eventHookRegistration.unregister();

-			eventHookRegistration = null;

-		}

-		if (endpointListenerRegistration != null) {

-			endpointListenerRegistration.unregister();

-			endpointListenerRegistration = null;

-		}

-		super.close();

-	}

-

-	public void endpointAdded(

-			org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,

-			String matchedFilter) {

-		if (endpoint instanceof EndpointDescription) {

-			handleEndpointAdded((EndpointDescription) endpoint);

-		} else

-			logWarning("endpointAdded",

-					"ECF Topology Manager:  Ignoring Non-ECF endpointAdded="

-							+ endpoint + ",matchedFilter=" + matchedFilter);

-	}

-

-	public void endpointRemoved(

-			org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,

-			String matchedFilter) {

-		if (endpoint instanceof EndpointDescription) {

-			handleEndpointRemoved((EndpointDescription) endpoint);

-		} else

-			logWarning("endpointRemoved",

-					"ECF Topology Manager:  Ignoring Non-ECF endpointRemoved="

-							+ endpoint + ",matchedFilter=" + matchedFilter);

-	}

-

-	private void handleEndpointAdded(EndpointDescription endpointDescription) {

-		trace("handleEndpointAdded", "endpointDescription=" + endpointDescription);

-		// First, select importing remote service admin

-		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin rsa = selectImportRemoteServiceAdmin(endpointDescription);

-

-		if (rsa == null) {

-			logError("handleEndpointAdded","RemoteServiceAdmin not found for importing endpointDescription="+endpointDescription);

-			return;

-		}

-		// now call rsa.import

-		ImportRegistration importRegistration = rsa.importService(endpointDescription);

-		if (importRegistration == null) {

-			logError("handleEndpointAdded",

-					"Import registration is null for endpointDescription=" + endpointDescription

-							+ " and rsa=" + rsa);

-		} else

-			trace("handleEndpointAdded", "Import registration="

-					+ importRegistration + " for endpointDescription=" + endpointDescription);

-	}

-

-	private void handleEndpointRemoved(EndpointDescription endpointDescription) {

-		trace("handleEndpointRemoved", "endpointDescription=" + endpointDescription);

-		// First, select importing remote service admin

-		RemoteServiceAdmin rsa = selectUnimportRemoteServiceAdmin(endpointDescription);

-		if (rsa == null) {

-			logError("handleEndpointRemoved","RemoteServiceAdmin not found for importing endpointDescription="+endpointDescription);

-			return;

-		}

-		Collection<org.eclipse.ecf.osgi.services.remoteserviceadmin.ImportRegistration> unimportRegistrations = rsa.unimportService(endpointDescription);

-		trace("handleEndpointRemoved","importRegistration="+unimportRegistrations+" removed for endpointDescription="+endpointDescription);

-	}

-

-	private Map<String, Object> prepareExportProperties(

-			ServiceReference serviceReference, String[] exportedInterfaces,

-			String[] exportedConfigs, String[] serviceIntents,

-			org.osgi.service.remoteserviceadmin.RemoteServiceAdmin rsa) {

-		Map<String, Object> result = new HashMap<String, Object>();

-		result.put(

-				org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES,

-				exportedInterfaces);

-		if (exportedConfigs != null)

-			result.put(

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS,

-					exportedConfigs);

-		if (serviceIntents != null)

-			result.put(

-					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS,

-					serviceIntents);

-		return result;

-	}

-

-	public void event(ServiceEvent event, Collection contexts) {

-		switch (event.getType()) {

-		case ServiceEvent.MODIFIED:

-			handleServiceModifying(event.getServiceReference());

-			break;

-		case ServiceEvent.MODIFIED_ENDMATCH:

-			break;

-		case ServiceEvent.REGISTERED:

-			handleServiceRegistering(event.getServiceReference());

-			break;

-		case ServiceEvent.UNREGISTERING:

-			handleServiceUnregistering(event.getServiceReference());

-			break;

-		default:

-			break;

-		}

-

-	}

-

-	private void handleServiceRegistering(ServiceReference serviceReference) {

-		// Using OSGI 4.2 Chap 13 Remote Services spec, get the specified remote

-		// interfaces for the given service reference

-		String[] exportedInterfaces = getExportedInterfaces(serviceReference);

-		// If no remote interfaces set, then we don't do anything with it

-		if (exportedInterfaces == null)

-			return;

-

-		// Get optional service property for exported configs

-		String[] exportedConfigs = getStringArrayFromPropertyValue(serviceReference

-				.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS));

-

-		// Get all intents (service.intents, service.exported.intents,

-		// service.exported.intents.extra)

-		String[] serviceIntents = getServiceIntents(serviceReference);

-

-		// Select remote service admin

-		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin rsa = selectExportRemoteServiceAdmin(

-				serviceReference, exportedInterfaces, exportedConfigs,

-				serviceIntents);

-

-		// prepare export properties

-		Map<String, Object> exportProperties = prepareExportProperties(

-				serviceReference, exportedInterfaces, exportedConfigs,

-				serviceIntents, rsa);

-

-		// if no remote service admin available, then log error and return

-		if (rsa == null) {

-			logError("handleServiceRegistered",

-					"No RemoteServiceAdmin found for serviceReference="

-							+ serviceReference

-							+ ".  Remote service NOT EXPORTED");

-			return;

-		}

-		// Export the remote service using the selected remote service admin

-		Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> registrations = rsa

-				.exportService(serviceReference, exportProperties);

-

-		if (registrations.size() == 0) {

-			logError("handleServiceRegistered",

-					"No export registrations created by RemoteServiceAdmin="

-							+ rsa + ".  ServiceReference=" + serviceReference

-							+ " NOT EXPORTED");

-			return;

-		}

-

-		// publish exported registrations

-		for (org.osgi.service.remoteserviceadmin.ExportRegistration reg : registrations) {

-			advertiseEndpointDescription((EndpointDescription) reg

-					.getExportReference().getExportedEndpoint());

-		}

-

-	}

-

-	private void handleServiceModifying(ServiceReference serviceReference) {

-		handleServiceUnregistering(serviceReference);

-		handleServiceRegistering(serviceReference);

-	}

-

-	private void handleServiceUnregistering(ServiceReference serviceReference) {

-		RemoteServiceAdmin rsa = selectUnexportRemoteServiceAdmin(serviceReference);

-		if (rsa == null) {

-			logError("handleServiceUnregistering",

-					"No RemoteServiceAdmin found for serviceReference="

-							+ serviceReference

-							+ ".  Remote service NOT UNEXPORTED");

-			return;

-		}

-		EndpointDescription[] endpointDescriptions = rsa

-				.unexportService(serviceReference);

-		if (endpointDescriptions != null) {

-			for (int i = 0; i < endpointDescriptions.length; i++) {

-				unadvertiseEndpointDescription(endpointDescriptions[i]);

-			}

-		}

-	}

-

-}

diff --git a/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/.settings/org.eclipse.jdt.core.prefs b/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/.settings/org.eclipse.jdt.core.prefs
index c1bc480..c851a16 100644
--- a/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/.settings/org.eclipse.jdt.core.prefs
+++ b/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Thu Oct 14 13:10:05 PDT 2010

+#Tue Jan 11 19:56:36 PST 2011

 eclipse.preferences.version=1

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

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

@@ -25,6 +25,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=ignore

@@ -44,7 +45,7 @@
 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.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

@@ -53,7 +54,7 @@
 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.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

diff --git a/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF b/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF
index a4d0b76..9e551a3 100644
--- a/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF
+++ b/incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
  org.eclipse.ecf.osgi.services.remoteserviceadmin,
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.3.0",
- org.osgi.service.remoteserviceadmin;version="1.0.0",
+ org.osgi.service.remoteserviceadmin;version="5.0.0",
  org.osgi.util.tracker
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface2.java b/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface2.java
deleted file mode 100644
index e078e56..0000000
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface2.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2009 Jan S. Rellermeyer 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:
- *    Jan S. Rellermeyer - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;
-
-public interface TestServiceInterface2 {
-
-	void doStuff2();
-	
-}
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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
similarity index 89%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.project
index 1acd148..c508f9a 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.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.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>
+<?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/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
rename from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
index 122a97b..0a37305 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,8 @@
-#Mon Oct 11 08:19:28 MSD 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#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%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
copy 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%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/about.html
copy 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/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.classpath b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.classpath
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.classpath
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.classpath
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.gitignore b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.gitignore
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.gitignore
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.gitignore
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.options b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.options
similarity index 73%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.options
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.options
index fc712ea..bdefc29 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.options
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.options
@@ -16,10 +16,15 @@
 

 org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/containerselector=true

 

-org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/discovery=true

+org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/metadatafactory=true

+

+org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionadvertiser=true

+

+org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionlocator=true

 

 org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionreader=true

 

+org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/packageversioncomparator=true

 

 

 

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
similarity index 92%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
index fbb61be..2ce11a0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.ecf.tests.osgi.services.discovery</name>
+	<name>org.eclipse.ecf.osgi.services.remoteserviceadmin</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/incubation/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
similarity index 88%
copy from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
index 9f29bbb..77378cc 100644
--- a/incubation/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,73 +1,81 @@
-#Mon Oct 11 15:03:13 PDT 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
+#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

+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.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=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.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

+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/.settings/org.eclipse.pde.core.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
similarity index 74%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
copy to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..74f7044 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/.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
+#Sat Jan 22 17:00:17 PST 2011

+eclipse.preferences.version=1

+pluginProject.extensions=false

+resolve.requirebundle=false

diff --git a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs
similarity index 81%
rename from providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs
index 1a89716..52e6c36 100644
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.prefs
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs
@@ -1,31 +1,33 @@
-#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
+#Sat Jan 22 17:43:00 PST 2011

+compilers.f.unresolved-features=1

+compilers.f.unresolved-plugins=1

+compilers.incompatible-environment=1

+compilers.p.build=1

+compilers.p.build.bin.includes=1

+compilers.p.build.encodings=2

+compilers.p.build.java.compiler=2

+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=1

+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=1

+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/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
similarity index 64%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index f4f37f6..051a20f 100644
--- a/incubation/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,28 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator
 Bundle-Vendor: %bundle.provider
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,
- J2SE-1.4
+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",
+ 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,
  org.eclipse.ecf.core.security,
  org.eclipse.ecf.core.util,
  org.eclipse.ecf.discovery;version="4.0.0",
  org.eclipse.ecf.discovery.identity,
- org.eclipse.ecf.remoteservice,
- org.eclipse.ecf.remoteservice.events,
+ org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.events;version="6.0.0",
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.eclipse.osgi.framework.eventmgr,
  org.osgi.framework;version="1.3.0",
- org.osgi.framework.hooks.service,
+ org.osgi.framework.wiring;version="[1.0,2.0)",
+ org.osgi.service.event,
  org.osgi.service.log,
- org.osgi.service.remoteserviceadmin;version="1.0.0",
+ org.osgi.service.remoteserviceadmin;version="5.0.0",
  org.osgi.util.tracker
-Bundle-ActivationPolicy: lazy
-Bundle-Localization: bundle
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
-Export-Package: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;x-internal:=true,
- org.eclipse.ecf.osgi.services.remoteserviceadmin
+DynamicImport-Package: *
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/about.html b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/about.html
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/about.html
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/about.html
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
new file mode 100644
index 0000000..23e285e
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               bundle.properties,\
+               about.html,\
+               .options
+src.includes = about.html,\
+               bundle.properties
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
similarity index 89%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
index c8c9466..390af02 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
@@ -6,5 +6,5 @@
 # Contributors:
 #   Composent, Inc. - initial API and implementation
 #################################################################################
-bundle.name=ECF OSGi R4.2 Enterprise Remote Service Admin
+bundle.name=ECF OSGi R4.2 Remote Service Admin
 bundle.provider=Eclipse.org - ECF
\ No newline at end of file
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
new file mode 100644
index 0000000..179a771
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
@@ -0,0 +1,324 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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.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;

+

+import javax.xml.parsers.SAXParserFactory;

+

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

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

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

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

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionAdvertiser;

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocator;

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.IEndpointDescriptionAdvertiser;

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin;

+import org.osgi.framework.Bundle;

+import org.osgi.framework.BundleActivator;

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.Constants;

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

+

+public class Activator implements BundleActivator {

+

+	public static final String PLUGIN_ID = "org.eclipse.ecf.osgi.services.remoteserviceadmin"; //$NON-NLS-1$

+

+	private static BundleContext context;

+	private static Activator instance;

+

+	public static BundleContext getContext() {

+		return context;

+	}

+

+	public static Activator getDefault() {

+		return instance;

+	}

+

+	private ServiceRegistration remoteServiceAdminRegistration;

+

+	private EndpointDescriptionLocator endpointDescriptionLocator;

+	private EndpointDescriptionAdvertiser endpointDescriptionAdvertiser;

+	private ServiceRegistration endpointDescriptionAdvertiserRegistration;

+

+	private ServiceTracker containerManagerTracker;

+	// Logging

+	private ServiceTracker logServiceTracker = null;

+	private LogService logService = null;

+	private Object logServiceTrackerLock = new Object();

+	// Sax parser

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

+	 * 

+	 * @see

+	 * org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext

+	 * )

+	 */

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

+		remoteServiceAdminRegistration = context.registerService(

+				org.osgi.service.remoteserviceadmin.RemoteServiceAdmin.class

+						.getName(), new ServiceFactory() {

+					public Object getService(Bundle bundle,

+							ServiceRegistration registration) {

+						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) {

+						synchronized (remoteServiceAdmins) {

+							RemoteServiceAdmin rsa = remoteServiceAdmins

+									.remove(bundle);

+							if (rsa != null)

+								rsa.close();

+						}

+					}

+				}, (Dictionary) rsaProps);

+

+		// create endpoint description locator

+		endpointDescriptionLocator = new EndpointDescriptionLocator(context);

+		// create and register endpoint description advertiser

+		final Properties properties = new Properties();

+		properties.put(Constants.SERVICE_RANKING,

+				new Integer(Integer.MIN_VALUE));

+		endpointDescriptionAdvertiser = new EndpointDescriptionAdvertiser(

+				endpointDescriptionLocator);

+		endpointDescriptionAdvertiserRegistration = getContext()

+				.registerService(

+						IEndpointDescriptionAdvertiser.class.getName(),

+						endpointDescriptionAdvertiser, (Dictionary) properties);

+

+		// start endpointDescriptionLocator

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

+	 * 

+	 * @see

+	 * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)

+	 */

+	public void stop(BundleContext bundleContext) throws Exception {

+		if (endpointDescriptionLocator != null) {

+			endpointDescriptionLocator.close();

+			endpointDescriptionLocator = null;

+		}

+		if (remoteServiceAdminRegistration != null) {

+			remoteServiceAdminRegistration.unregister();

+			remoteServiceAdminRegistration = null;

+		}

+		clearRSAs();

+		if (endpointDescriptionAdvertiserRegistration != null) {

+			endpointDescriptionAdvertiserRegistration.unregister();

+			endpointDescriptionAdvertiserRegistration = null;

+		}

+		if (endpointDescriptionAdvertiser != null) {

+			endpointDescriptionAdvertiser.close();

+			endpointDescriptionAdvertiser = null;

+		}

+		synchronized (saxParserFactoryTrackerLock) {

+			if (saxParserFactoryTracker != null) {

+				saxParserFactoryTracker.close();

+				saxParserFactoryTracker = null;

+			}

+		}

+		synchronized (logServiceTrackerLock) {

+			if (logServiceTracker != null) {

+				logServiceTracker.close();

+				logServiceTracker = null;

+				logService = null;

+			}

+		}

+		if (containerManagerTracker != null) {

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

+		// code get and set the framework uuid property as specified in

+		// r2.enterprise.pdf pg 297

+		synchronized ("org.osgi.framework.uuid") { //$NON-NLS-1$

+			String result = context.getProperty("org.osgi.framework.uuid"); //$NON-NLS-1$

+			if (result == null) {

+				UUID newUUID = UUID.randomUUID();

+				result = newUUID.toString();

+				System.setProperty("org.osgi.framework.uuid", //$NON-NLS-1$

+						newUUID.toString());

+			}

+			return result;

+		}

+	}

+

+	public SAXParserFactory getSAXParserFactory() {

+		if (instance == null)

+			return null;

+		synchronized (saxParserFactoryTrackerLock) {

+			if (saxParserFactoryTracker == null) {

+				saxParserFactoryTracker = new ServiceTracker(context,

+						SAXParserFactory.class.getName(), null);

+				saxParserFactoryTracker.open();

+			}

+			return (SAXParserFactory) saxParserFactoryTracker.getService();

+		}

+	}

+

+	public LogService getLogService() {

+		if (context == null)

+			return null;

+		synchronized (logServiceTrackerLock) {

+			if (logServiceTracker == null) {

+				logServiceTracker = new ServiceTracker(context,

+						LogService.class.getName(), null);

+				logServiceTracker.open();

+			}

+			logService = (LogService) logServiceTracker.getService();

+			if (logService == null)

+				logService = new SystemLogService(PLUGIN_ID);

+			return logService;

+		}

+	}

+

+	public void log(IStatus status) {

+		if (logService == null)

+			logService = getLogService();

+		if (logService != null)

+			logService.log(null, LogHelper.getLogCode(status),

+					LogHelper.getLogMessage(status), status.getException());

+	}

+

+	public void log(ServiceReference sr, IStatus status) {

+		log(sr, LogHelper.getLogCode(status), LogHelper.getLogMessage(status),

+				status.getException());

+	}

+

+	public void log(ServiceReference sr, int level, String message, Throwable t) {

+		if (logService == null)

+			logService = getLogService();

+		if (logService != null)

+			logService.log(sr, level, message, t);

+	}

+

+	public IContainerManager getContainerManager() {

+		if (containerManagerTracker == null) {

+			containerManagerTracker = new ServiceTracker(context,

+					IContainerManager.class.getName(), null);

+			containerManagerTracker.open();

+		}

+		return (IContainerManager) containerManagerTracker.getService();

+	}

+}

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/DebugOptions.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/DebugOptions.java
similarity index 66%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/DebugOptions.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/DebugOptions.java
index 906bd1d..c591fde 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/DebugOptions.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/DebugOptions.java
@@ -28,10 +28,21 @@
 

 	public static final String TOPOLOGY_MANAGER = DEBUG + "/topologymanager"; //$NON-NLS-1$

 

-	public static final String CONTAINERSELECTOR = DEBUG + "/containerselector"; //$NON-NLS-1$

+	public static final String CONTAINER_SELECTOR = DEBUG

+			+ "/containerselector"; //$NON-NLS-1$

 

-	public static final String DISCOVERY = DEBUG + "/discovery"; //$NON-NLS-1$

+	public static final String METADATA_FACTORY = DEBUG + "/metadatafactory"; //$NON-NLS-1$

 

-	public static final String ENDPOINTDESCRIPTIONREADER = "/endpointdescriptionreader";

+	public static final String ENDPOINT_DESCRIPTION_ADVERTISER = DEBUG

+			+ "/endpointdescriptionadvertiser"; //$NON-NLS-1$

+

+	public static final String ENDPOINT_DESCRIPTION_LOCATOR = DEBUG

+			+ "/endpointdescriptionlocator"; //$NON-NLS-1$

+

+	public static final String ENDPOINT_DESCRIPTION_READER = DEBUG

+			+ "/endpointdescriptionreader"; //$NON-NLS-1$

+

+	public static final String PACKAGE_VERSION_COMPARATOR = DEBUG

+			+ "/packageversioncomparator"; //$NON-NLS-1$

 

 }

diff --git a/incubation/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
similarity index 80%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionParser.java
index 49a3b6d..2221298 100644
--- a/incubation/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
@@ -19,6 +19,7 @@
 import java.util.List;

 import java.util.Map;

 import java.util.Set;

+import java.util.TreeMap;

 

 import javax.xml.parsers.ParserConfigurationException;

 import javax.xml.parsers.SAXParser;

@@ -27,7 +28,6 @@
 import org.xml.sax.Attributes;

 import org.xml.sax.ContentHandler;

 import org.xml.sax.InputSource;

-import org.xml.sax.Locator;

 import org.xml.sax.SAXException;

 import org.xml.sax.XMLReader;

 import org.xml.sax.helpers.DefaultHandler;

@@ -57,11 +57,8 @@
 	public static String[] noAttributes = new String[0];

 

 	private XMLReader xmlReader;

-	protected Locator locator = null; // document locator, if supported by the

-										// parser

 

 	class IgnoringHandler extends AbstractHandler {

-

 		public IgnoringHandler(AbstractHandler parent) {

 			super(parent);

 			this.elementHandled = "IgnoringAll"; //$NON-NLS-1$

@@ -70,7 +67,6 @@
 		public void startElement(String name, Attributes attributes) {

 			noSubElements(name, attributes);

 		}

-

 	}

 

 	/**

@@ -100,15 +96,6 @@
 			this.elementHandled = elementHandled;

 		}

 

-		/**

-		 * Set the document locator for the parser

-		 * 

-		 * @see org.xml.sax.ContentHandler#setDocumentLocator

-		 */

-		public void setDocumentLocator(Locator docLocator) {

-			locator = docLocator;

-		}

-

 		public void startElement(String uri, String localName, String qName,

 				Attributes attributes) throws SAXException {

 			finishCharacters();

@@ -184,18 +171,15 @@
 

 		// Method to override in the handler of an element with CDATA.

 		protected void processCharacters(String data) {

-			if (data.length() > 0) {

+			if (data.length() > 0)

 				unexpectedCharacterData(this, data);

-			}

 		}

 

 		private boolean allWhiteSpace(StringBuffer sb) {

 			int length = sb.length();

-			for (int i = 0; i < length; i += 1) {

-				if (!Character.isWhitespace(sb.charAt(i))) {

+			for (int i = 0; i < length; i += 1)

+				if (!Character.isWhitespace(sb.charAt(i)))

 					return false;

-				}

-			}

 			return true;

 		}

 

@@ -244,17 +228,15 @@
 				String name = attributes.getLocalName(i);

 				String value = attributes.getValue(i).trim();

 				int j;

-				if ((j = indexOf(required, name)) >= 0) {

+				if ((j = indexOf(required, name)) >= 0)

 					result[j] = value;

-				} else if ((j = indexOf(optional, name)) >= 0) {

+				else if ((j = indexOf(optional, name)) >= 0)

 					result[required.length + j] = value;

-				} else {

+				else

 					unexpectedAttribute(elementHandled, name, value);

-				}

 			}

-			for (int i = 0; i < required.length; i += 1) {

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

 				checkRequiredAttribute(elementHandled, required[i], result[i]);

-			}

 			return result;

 		}

 

@@ -266,9 +248,8 @@
 			return null;

 

 		SAXParserFactory factory = a.getSAXParserFactory();

-		if (factory == null) {

+		if (factory == null)

 			throw new SAXException("Unable to acquire sax parser"); //$NON-NLS-1$

-		}

 		factory.setNamespaceAware(true);

 		factory.setValidating(false);

 		try {

@@ -315,9 +296,8 @@
 			if (name.equals(elementHandled)) {

 				rootHandler.initialize(this, name, attributes);

 				xmlReader.setContentHandler(rootHandler);

-			} else {

-				this.noSubElements(name, attributes);

-			}

+			} else

+				noSubElements(name, attributes);

 		}

 

 	}

@@ -338,31 +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() {

@@ -378,27 +350,56 @@
 		public EndpointDescriptionHandler(ContentHandler parentHandler,

 				Attributes attributes, List<EndpointDescription> descriptions) {

 			super(parentHandler, ENDPOINT_DESCRIPTION);

-			this.properties = new HashMap<String, Object>();

+			this.properties = new TreeMap<String, Object>(

+					String.CASE_INSENSITIVE_ORDER);

 			this.descriptions = descriptions;

 		}

 

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

 			}

 		}

 

 	}

 

+	private Object createValue(String valueType, String value) {

+		if (value == null)

+			return null;

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

+			return value;

+		} else if (valueType.equals("long") || valueType.equals("Long")) { //$NON-NLS-1$ //$NON-NLS-2$

+			return Long.valueOf(value);

+		} else if (valueType.equals("double") || valueType.equals("Double")) { //$NON-NLS-1$ //$NON-NLS-2$

+			return Double.valueOf(value);

+		} else if (valueType.equals("float") || valueType.equals("Float")) { //$NON-NLS-1$ //$NON-NLS-2$

+			return Float.valueOf(value);

+		} else if (valueType.equals("int") || valueType.equals("Integer")) { //$NON-NLS-1$ //$NON-NLS-2$

+			return Integer.valueOf(value);

+		} else if (valueType.equals("byte") || valueType.equals("Byte")) { //$NON-NLS-1$ //$NON-NLS-2$

+			return Byte.valueOf(value);

+		} else if (valueType.equals("char") //$NON-NLS-1$

+				|| valueType.equals("Character")) { //$NON-NLS-1$

+			char[] chars = new char[1];

+			value.getChars(0, 1, chars, 0);

+			return Character.valueOf(chars[0]);

+		} else if (valueType.equals("boolean") //$NON-NLS-1$

+				|| valueType.equals("Boolean")) { //$NON-NLS-1$

+			return Boolean.valueOf(value);

+		} else if (valueType.equals("short") || valueType.equals("Short")) { //$NON-NLS-1$ //$NON-NLS-2$

+			return Short.valueOf(value);

+		}

+		return null;

+	}

+

 	abstract class MultiValueHandler extends AbstractHandler {

 

 		protected String valueType;

@@ -409,53 +410,24 @@
 			this.valueType = valueType;

 		}

 

-		protected Object createValue(String value) {

-			if (value == null)

-				return null;

-			if (valueType.equals("String")) { //$NON-NLS-1$

-				return value;

-			} else if (valueType.equals("long") || valueType.equals("Long")) { //$NON-NLS-1$ //$NON-NLS-2$

-				return Long.valueOf(value);

-			} else if (valueType.equals("double") || valueType.equals("Double")) { //$NON-NLS-1$ //$NON-NLS-2$

-				return Double.valueOf(value);

-			} else if (valueType.equals("float") || valueType.equals("Float")) { //$NON-NLS-1$ //$NON-NLS-2$

-				return Float.valueOf(value);

-			} else if (valueType.equals("int") || valueType.equals("Integer")) { //$NON-NLS-1$ //$NON-NLS-2$

-				return Integer.valueOf(value);

-			} else if (valueType.equals("byte") || valueType.equals("Byte")) { //$NON-NLS-1$ //$NON-NLS-2$

-				return Byte.valueOf(value);

-			} else if (valueType.equals("char") //$NON-NLS-1$

-					|| valueType.equals("Character")) { //$NON-NLS-1$

-				char[] chars = new char[1];

-				value.getChars(0, 1, chars, 0);

-				return Character.valueOf(chars[0]);

-			} else if (valueType.equals("boolean") //$NON-NLS-1$

-					|| valueType.equals("Boolean")) { //$NON-NLS-1$

-				return Boolean.valueOf(value);

-			} else if (valueType.equals("short") || valueType.equals("Short")) { //$NON-NLS-1$ //$NON-NLS-2$

-				return Short.valueOf(value);

-			}

-			return null;

-		}

-

 		public void startElement(String name, Attributes attributes)

 				throws SAXException {

-			if (ENDPOINT_PROPERTY_VALUE.equals(name)) {

+			if (ENDPOINT_PROPERTY_VALUE.equals(name))

 				characters = new StringBuffer();

-			}

 		}

 

 		public void endElement(String namespaceURI, String localName,

 				String qName) {

 			if (ENDPOINT_PROPERTY_VALUE.equals(localName)) {

-				Object value = createValue(processValue((characters == null) ? null

-						: characters.toString()));

+				Object value = createValue(

+						valueType,

+						processValue((characters == null) ? null : characters

+								.toString()));

 				if (value != null)

 					addValue(value);

 				characters = null;

-			} else if (elementHandled.equals(localName)) {

+			} else if (elementHandled.equals(localName))

 				super.endElement(namespaceURI, localName, qName);

-			}

 		}

 

 		private String processValue(String characters) {

@@ -463,13 +435,7 @@
 				return null;

 			if (valueType.equals("String")) //$NON-NLS-1$

 				return characters;

-			int startIndex = 0;

-			while (Character.isWhitespace(characters.charAt(startIndex)))

-				startIndex++;

-			int endIndex = characters.length() - 1;

-			while (Character.isWhitespace(characters.charAt(endIndex)))

-				endIndex--;

-			return characters.substring(startIndex, endIndex + 1);

+			return characters.trim();

 		}

 

 		protected abstract void addValue(Object value);

@@ -487,27 +453,27 @@
 		}

 

 		protected Object[] createEmptyArrayOfType() {

-			if (valueType.equals("String")) { //$NON-NLS-1$

+			if (valueType.equals("String")) //$NON-NLS-1$

 				return new String[] {};

-			} else if (valueType.equals("long") || valueType.equals("Long")) { //$NON-NLS-1$ //$NON-NLS-2$

+			else if (valueType.equals("long") || valueType.equals("Long")) //$NON-NLS-1$ //$NON-NLS-2$

 				return new Long[] {};

-			} else if (valueType.equals("double") || valueType.equals("Double")) { //$NON-NLS-1$ //$NON-NLS-2$

+			else if (valueType.equals("double") || valueType.equals("Double")) //$NON-NLS-1$ //$NON-NLS-2$

 				return new Double[] {};

-			} else if (valueType.equals("float") || valueType.equals("Float")) { //$NON-NLS-1$ //$NON-NLS-2$

+			else if (valueType.equals("float") || valueType.equals("Float")) //$NON-NLS-1$ //$NON-NLS-2$

 				return new Double[] {};

-			} else if (valueType.equals("int") || valueType.equals("Integer")) { //$NON-NLS-1$ //$NON-NLS-2$

+			else if (valueType.equals("int") || valueType.equals("Integer")) //$NON-NLS-1$ //$NON-NLS-2$

 				return new Integer[] {};

-			} else if (valueType.equals("byte") || valueType.equals("Byte")) { //$NON-NLS-1$ //$NON-NLS-2$

+			else if (valueType.equals("byte") || valueType.equals("Byte")) //$NON-NLS-1$ //$NON-NLS-2$

 				return new Byte[] {};

-			} else if (valueType.equals("char") //$NON-NLS-1$

-					|| valueType.equals("Character")) { //$NON-NLS-1$

+			else if (valueType.equals("char") //$NON-NLS-1$

+					|| valueType.equals("Character")) //$NON-NLS-1$

 				return new Character[] {};

-			} else if (valueType.equals("boolean") //$NON-NLS-1$

-					|| valueType.equals("Boolean")) { //$NON-NLS-1$

+			else if (valueType.equals("boolean") //$NON-NLS-1$

+					|| valueType.equals("Boolean")) //$NON-NLS-1$

 				return new Boolean[] {};

-			} else if (valueType.equals("short") || valueType.equals("Short")) { //$NON-NLS-1$ //$NON-NLS-2$

+			else if (valueType.equals("short") || valueType.equals("Short")) //$NON-NLS-1$ //$NON-NLS-2$

 				return new Short[] {};

-			} else

+			else

 				return null;

 		}

 

@@ -622,7 +588,7 @@
 		private Map<String, Object> properties;

 		private String name;

 		private String valueType = "String"; //$NON-NLS-1$

-		private String value;

+		private Object value;

 		private MultiValueHandler multiValueHandler;

 		private XMLValueHandler xmlValueHandler;

 

@@ -632,7 +598,8 @@
 			super(parentHandler, ENDPOINT_PROPERTY);

 			name = parseRequiredAttributes(attributes,

 					new String[] { ENDPOINT_PROPERTY_NAME })[0];

-			value = parseOptionalAttribute(attributes, ENDPOINT_PROPERTY_VALUE);

+			String strValue = parseOptionalAttribute(attributes,

+					ENDPOINT_PROPERTY_VALUE);

 			String vt = parseOptionalAttribute(attributes,

 					ENDPOINT_PROPERTY_VALUETYPE);

 			if (vt != null) {

@@ -642,11 +609,10 @@
 				this.valueType = vt;

 			}

 			this.properties = properties;

-			if (value != null) {

-				String[] property = new String[] { name, value };

-				if (isValidProperty(property)) {

-					this.properties.put(property[0], property[1]);

-				}

+			if (strValue != null) {

+				value = createValue(this.valueType, strValue);

+				if (isValidProperty(name, value))

+					this.properties.put(name, value);

 			}

 		}

 

@@ -657,36 +623,33 @@
 				throw new SAXException(

 						"property element has both value attribute and sub-element"); //$NON-NLS-1$

 			if (ENDPOINT_PROPERTY_ARRAY.equals(name)) {

-				if (multiValueHandler == null) {

+				if (multiValueHandler == null)

 					multiValueHandler = new ArrayMultiValueHandler(this,

 							ENDPOINT_PROPERTY_ARRAY, valueType);

-				} else {

+				else

 					duplicateElement(this, name, attributes);

-				}

+

 			} else if (ENDPOINT_PROPERTY_LIST.equals(name)) {

-				if (multiValueHandler == null) {

+				if (multiValueHandler == null)

 					multiValueHandler = new ListMultiValueHandler(this,

 							ENDPOINT_PROPERTY_LIST, valueType);

-				} else {

+				else

 					duplicateElement(this, name, attributes);

-				}

 			} else if (ENDPOINT_PROPERTY_SET.equals(name)) {

-				if (multiValueHandler == null) {

+				if (multiValueHandler == null)

 					multiValueHandler = new SetMultiValueHandler(this,

 							ENDPOINT_PROPERTY_SET, valueType);

-				} else {

+				else

 					duplicateElement(this, name, attributes);

-				}

 			} else if (ENDPOINT_PROPERTY_XML.equals(name)) {

 				// xml

-				if (xmlValueHandler == null) {

+				if (xmlValueHandler == null)

 					xmlValueHandler = new XMLValueHandler(this);

-				} else {

+				else

 					duplicateElement(this, name, attributes);

-				}

-			} else {

+

+			} else

 				invalidElement(name, attributes);

-			}

 		}

 

 		public void endElement(String namespaceURI, String localName,

@@ -703,8 +666,8 @@
 			}

 		}

 

-		private boolean isValidProperty(String[] property) {

-			return (property.length == 2 && property[0] != null && property[1] != null);

+		private boolean isValidProperty(String name, Object value) {

+			return (name != null && value != null);

 		}

 	}

 

@@ -749,9 +712,8 @@
 	}

 

 	public static String makeSimpleName(String localName, String qualifiedName) {

-		if (localName != null && localName.length() > 0) {

+		if (localName != null && localName.length() > 0)

 			return localName;

-		}

 		int nameSpaceIndex = qualifiedName.indexOf(":"); //$NON-NLS-1$

 		return (nameSpaceIndex == -1 ? qualifiedName : qualifiedName

 				.substring(nameSpaceIndex + 1));

diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
similarity index 65%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
index 5334ee8..45f74ce 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
@@ -11,7 +11,6 @@
 

 import java.util.Iterator;

 import java.util.List;

-import java.util.Map;

 

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

 import org.eclipse.ecf.core.identity.IDCreateException;

@@ -19,7 +18,6 @@
 import org.eclipse.ecf.core.identity.IIDFactory;

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

 import org.eclipse.ecf.core.identity.StringID;

-import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription;

 

 public class IDUtil {

 

@@ -42,52 +40,31 @@
 		String scheme = idName.substring(0, colonIndex);

 		// First try to find the Namespace using the protocol directly

 		Namespace ns = getNamespaceByName(scheme);

-		if (ns == null) {

-			// Then try to find by comparing to all Namespace.getScheme()

-			ns = findNamespaceByScheme(scheme);

-		}

-		return ns;

+		return (ns == null) ? findNamespaceByScheme(scheme) : ns;

 	}

 

 	public static Namespace findNamespaceByScheme(String scheme) {

 		if (scheme == null)

 			return null;

-		if (scheme.equals("ecftcp"))

+		if (scheme.equals("ecftcp")) //$NON-NLS-1$

 			return getIDFactory().getNamespaceByName(StringID.class.getName());

 		List namespaces = getIDFactory().getNamespaces();

 		for (Iterator i = namespaces.iterator(); i.hasNext();) {

 			Namespace ns = (Namespace) i.next();

-			if (scheme.equals(ns.getScheme())) {

-				// found it...so return

+			if (scheme.equals(ns.getScheme()))

 				return ns;

-			}

 		}

-		// If the scheme is "ecftcp" then we use StringID

 		return null;

 	}

 

-	public static ID createID(Map<String, Object> osgiProperties,

-			String namespaceName) throws IDCreateException {

-		// We try to get the ID from the OSGi id

-		String osgiIdName = PropertiesUtil

-				.verifyStringProperty(

-						osgiProperties,

-						org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);

-		if (osgiIdName == null)

-			throw new IDCreateException(

-					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID

-							+ " must not be null");

-		return createID(namespaceName, osgiIdName);

-	}

-

 	public static ID createID(String namespaceName, String idName)

 			throws IDCreateException {

-		Namespace ns = (namespaceName == null) ? getNamespaceByName(namespaceName)

+		Namespace ns = (namespaceName != null) ? getNamespaceByName(namespaceName)

 				: findNamespaceByIdName(idName);

 		if (ns == null)

 			throw new IDCreateException(

-					"Cannot find Namespace for namespaceName=" + namespaceName

-							+ " and idName=" + idName);

+					"Cannot find Namespace for namespaceName=" + namespaceName //$NON-NLS-1$

+							+ " and idName=" + idName); //$NON-NLS-1$

 		return createID(ns, idName);

 	}

 

@@ -96,12 +73,6 @@
 		return getIDFactory().createID(namespace, idName);

 	}

 

-	public static ID createContainerID(EndpointDescription endpointDescription)

-			throws IDCreateException {

-		return createID(endpointDescription.getContainerIDNamespace(),

-				endpointDescription.getId());

-	}

-

 	public static ID createID(Namespace namespace, Object[] args)

 			throws IDCreateException {

 		return getIDFactory().createID(namespace, args);

diff --git a/incubation/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
similarity index 87%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/LogUtility.java
index 5d3ab96..4d6e4f6 100644
--- a/incubation/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
new file mode 100644
index 0000000..2cec56e
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
@@ -0,0 +1,406 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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.osgi.services.remoteserviceadmin;

+

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Dictionary;

+import java.util.Enumeration;

+import java.util.HashMap;

+import java.util.Iterator;

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

+

+	protected static final List osgiProperties = Arrays

+			.asList(new String[] {

+					// OSGi properties

+					org.osgi.framework.Constants.OBJECTCLASS,

+					org.osgi.framework.Constants.SERVICE_ID,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,

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

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

+					org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTERFACES,

+					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED,

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

+					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS });

+

+	protected static final List ecfProperties = Arrays.asList(new String[] {

+			// ECF properties

+			org.eclipse.ecf.remoteservice.Constants.OBJECTCLASS,

+			org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,

+			RemoteConstants.DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX,

+			RemoteConstants.DISCOVERY_NAMING_AUTHORITY,

+			RemoteConstants.DISCOVERY_PROTOCOLS,

+			RemoteConstants.DISCOVERY_SCOPE,

+			RemoteConstants.DISCOVERY_SERVICE_NAME,

+			RemoteConstants.ENDPOINT_CONNECTTARGET_ID,

+			RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,

+			RemoteConstants.ENDPOINT_IDFILTER_IDS,

+			RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,

+			RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,

+			RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS,

+			RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID,

+			RemoteConstants.SERVICE_IMPORTED_VALUETYPE,

+			RemoteConstants.DISCOVERY_SERVICE_TYPE });

+

+	public static String verifyStringProperty(Map properties, String propName) {

+		Object r = properties.get(propName);

+		try {

+			return (String) r;

+		} catch (ClassCastException e) {

+			IllegalArgumentException iae = new IllegalArgumentException(

+					"property value is not a String: " + propName); //$NON-NLS-1$

+			iae.initCause(e);

+			throw iae;

+		}

+	}

+

+	public static Object convertToStringPlusValue(List<String> values) {

+		if (values == null)

+			return null;

+		int valuesSize = values.size();

+		switch (valuesSize) {

+		case 0:

+			return null;

+		case 1:

+			return values.get(0);

+		default:

+			return values.toArray(new String[valuesSize]);

+		}

+	}

+

+	public static String[] getStringArrayFromPropertyValue(Object value) {

+		if (value == null)

+			return null;

+		else if (value instanceof String)

+			return new String[] { (String) value };

+		else if (value instanceof String[])

+			return (String[]) value;

+		else if (value instanceof Collection)

+			return (String[]) ((Collection) value).toArray(new String[] {});

+		else

+			return null;

+	}

+

+	public static String[] getExportedInterfaces(

+			ServiceReference serviceReference,

+			Map<String, ?> 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 objectClass;

+		else {

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

+

+		String[] intents = getStringArrayFromPropertyValue(overridingProperties

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

+		if (intents == null) {

+			intents = getStringArrayFromPropertyValue(serviceReference

+					.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS));

+		}

+		if (intents != null)

+			results.addAll(Arrays.asList(intents));

+

+		String[] exportedIntents = getStringArrayFromPropertyValue(overridingProperties

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

+		if (exportedIntents == null) {

+			exportedIntents = getStringArrayFromPropertyValue(serviceReference

+					.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS));

+		}

+		if (exportedIntents != null)

+			results.addAll(Arrays.asList(exportedIntents));

+

+		String[] extraIntents = getStringArrayFromPropertyValue(overridingProperties

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

+		if (extraIntents == null) {

+			extraIntents = getStringArrayFromPropertyValue(serviceReference

+					.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA));

+		}

+		if (extraIntents != null)

+			results.addAll(Arrays.asList(extraIntents));

+

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

+			return null;

+		return (String[]) results.toArray(new String[results.size()]);

+	}

+

+	public static List getStringPlusProperty(Map properties, String key) {

+		Object value = properties.get(key);

+		if (value == null) {

+			return Collections.EMPTY_LIST;

+		}

+

+		if (value instanceof String) {

+			return Collections.singletonList((String) value);

+		}

+

+		if (value instanceof String[]) {

+			String[] values = (String[]) value;

+			List result = new ArrayList(values.length);

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

+				if (values[i] != null) {

+					result.add(values[i]);

+				}

+			}

+			return Collections.unmodifiableList(result);

+		}

+

+		if (value instanceof Collection) {

+			Collection values = (Collection) value;

+			List result = new ArrayList(values.size());

+			for (Iterator iter = values.iterator(); iter.hasNext();) {

+				Object v = iter.next();

+				if (v instanceof String) {

+					result.add((String) v);

+				}

+			}

+			return Collections.unmodifiableList(result);

+		}

+

+		return Collections.EMPTY_LIST;

+	}

+

+	public static Object getPropertyValue(ServiceReference serviceReference,

+			String key) {

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

+				.getProperty(key);

+	}

+

+	public static Object getPropertyValue(ServiceReference serviceReference,

+			Map<String, Object> overridingProperties, String key) {

+		Object result = null;

+		if (overridingProperties != null)

+			result = overridingProperties.get(key);

+		return (result != null) ? result : getPropertyValue(serviceReference,

+				key);

+	}

+

+	public static boolean isOSGiProperty(String key) {

+		return osgiProperties.contains(key)

+				|| key.startsWith(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_);

+	}

+

+	public static boolean isECFProperty(String key) {

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

+				|| isPrivateProperty(key);

+	}

+

+	public static Map createMapFromDictionary(Dictionary input) {

+		if (input == null)

+			return null;

+		Map result = new HashMap();

+		for (Enumeration e = input.keys(); e.hasMoreElements();) {

+			Object key = e.nextElement();

+			Object val = input.get(key);

+			result.put(key, val);

+		}

+		return result;

+	}

+

+	public static Dictionary createDictionaryFromMap(Map propMap) {

+		if (propMap == null)

+			return null;

+		Dictionary result = new Properties();

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

+			Object key = i.next();

+			Object val = propMap.get(key);

+			result.put(key, val);

+		}

+		return result;

+	}

+

+	public static Long getLongWithDefault(Map props, String key, Long def) {

+		Object o = props.get(key);

+		if (o instanceof Long)

+			return (Long) o;

+		if (o instanceof String)

+			return Long.valueOf((String) o);

+		return def;

+	}

+

+	public static String[] getStringArrayWithDefault(

+			Map<String, Object> properties, String key, String[] def) {

+		Object o = properties.get(key);

+		if (o instanceof String) {

+			return new String[] { (String) o };

+		} else if (o instanceof String[]) {

+			return (String[]) o;

+		} else if (o instanceof List) {

+			List l = (List) o;

+			return (String[]) l.toArray(new String[l.size()]);

+		}

+		return def;

+	}

+

+	public static String getStringWithDefault(Map props, String key, String def) {

+		Object o = props.get(key);

+		if (o == null || (!(o instanceof String)))

+			return def;

+		return (String) o;

+	}

+

+	public static Map<String, Object> copyProperties(

+			IRemoteServiceRegistration rsRegistration,

+			Map<String, Object> target) {

+		String[] keys = rsRegistration.getPropertyKeys();

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

+			target.put(keys[i], rsRegistration.getProperty(keys[i]));

+		return target;

+	}

+

+	public static Map<String, Object> copyProperties(

+			Map<String, Object> source, Map<String, Object> target) {

+		for (String key : source.keySet())

+			target.put(key, source.get(key));

+		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())

+			if (!isECFProperty(key))

+				target.put(key, source.get(key));

+		return target;

+	}

+

+	public static Map<String, Object> copyNonReservedProperties(

+			Map<String, Object> source, Map<String, Object> target) {

+		for (String key : source.keySet())

+			if (!isReservedProperty(key))

+				target.put(key, source.get(key));

+		return target;

+	}

+

+	public static Map<String, Object> copyNonECFProperties(

+			ServiceReference serviceReference, Map<String, Object> target) {

+		String[] keys = serviceReference.getPropertyKeys();

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

+			if (!isECFProperty(keys[i]))

+				target.put(keys[i], serviceReference.getProperty(keys[i]));

+		return target;

+	}

+

+	public static Map<String, Object> copyNonReservedProperties(

+			ServiceReference serviceReference, Map<String, Object> target) {

+		String[] keys = serviceReference.getPropertyKeys();

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

+			if (!isReservedProperty(keys[i]))

+				target.put(keys[i], serviceReference.getProperty(keys[i]));

+		return target;

+	}

+

+	public static Map<String, Object> copyNonReservedProperties(

+			IRemoteServiceReference rsReference, Map<String, Object> target) {

+		String[] keys = rsReference.getPropertyKeys();

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

+			if (!isReservedProperty(keys[i]))

+				target.put(keys[i], rsReference.getProperty(keys[i]));

+		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/incubation/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
similarity index 88%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
index 84ddbe4..19f8b6f 100644
--- a/incubation/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));

@@ -180,19 +188,30 @@
 		return null;

 	}

 

+	/**

+	 * @since 2.0

+	 */

 	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/incubation/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
similarity index 69%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
index ba90de4..0838116 100644
--- a/incubation/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,72 @@
 		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);

+	}

+

+	/**

+	 * @since 2.0

+	 */

+	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 +193,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;

@@ -152,7 +210,7 @@
 	}

 

 	protected void trace(String methodName, String message) {

-		LogUtility.trace(methodName, DebugOptions.CONTAINERSELECTOR,

+		LogUtility.trace(methodName, DebugOptions.CONTAINER_SELECTOR,

 				this.getClass(), message);

 	}

 

@@ -162,17 +220,17 @@
 	}

 

 	protected void logError(String methodName, String message, Throwable t) {

-		LogUtility.logError(methodName, DebugOptions.CONTAINERSELECTOR,

+		LogUtility.logError(methodName, DebugOptions.CONTAINER_SELECTOR,

 				this.getClass(), message, t);

 	}

 

 	protected void logError(String methodName, String message) {

-		LogUtility.logError(methodName, DebugOptions.CONTAINERSELECTOR,

+		LogUtility.logError(methodName, DebugOptions.CONTAINER_SELECTOR,

 				this.getClass(), message);

 	}

 

 	protected void logWarning(String methodName, String message) {

-		LogUtility.logWarning(methodName, DebugOptions.CONTAINERSELECTOR,

+		LogUtility.logWarning(methodName, DebugOptions.CONTAINER_SELECTOR,

 				this.getClass(), message);

 	}

 

diff --git a/incubation/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
similarity index 72%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
index e8d0094..201394d 100644
--- a/incubation/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();

@@ -62,25 +72,30 @@
 			if (description == null)

 				continue;

 

-			if (matchExistingHostContainer(serviceReference, containers[i],

-					adapter, description, serviceExportedConfigs,

-					serviceIntents)) {

+			// http://bugs.eclipse.org/331532

+			if (!description.isServer()) {

+				continue;

+			}

+

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

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

 						+ ((serviceExportedConfigs == null) ? "null" : Arrays //$NON-NLS-1$

 								.asList(serviceExportedConfigs).toString())

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

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

 						+ ((serviceIntents == null) ? "null" : Arrays.asList( //$NON-NLS-1$

 								serviceIntents).toString()));

 				results.add(new RemoteServiceContainer(containers[i], adapter));

 			} else {

 				trace("selectExistingHostContainers", "EXCLUDING containerID=" //$NON-NLS-1$ //$NON-NLS-2$

 						+ containers[i].getID()

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

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

 						+ ((serviceExportedConfigs == null) ? "null" : Arrays //$NON-NLS-1$

 								.asList(serviceExportedConfigs).toString())

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

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

 						+ ((serviceIntents == null) ? "null" : Arrays.asList( //$NON-NLS-1$

 								serviceIntents).toString()));

 			}

@@ -88,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

@@ -103,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$

@@ -120,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

@@ -143,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);

@@ -153,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;

@@ -195,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();

@@ -280,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/incubation/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
similarity index 63%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
index 924af2a..43b89df 100644
--- a/incubation/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
@@ -12,23 +12,28 @@
 import java.util.ArrayList;

 import java.util.Collections;

 import java.util.Enumeration;

-import java.util.HashMap;

 import java.util.Iterator;

 import java.util.List;

 import java.util.Map;

 import java.util.StringTokenizer;

+import java.util.TreeMap;

 

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

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

 import org.eclipse.ecf.discovery.IServiceProperties;

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

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;

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

 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 = " ";

+	protected static final String LIST_SEPARATOR = " "; //$NON-NLS-1$

 

 	protected void encodeString(IServiceProperties props, String name,

 			String value) {

@@ -79,79 +84,42 @@
 		return result;

 	}

 

-	protected void encodeIDArray(IServiceProperties result, ID[] idFilter) {

-		// First, for every id, setup prop name with index suffix

-		for (int i = 0; i < idFilter.length; i++) {

-			encodeString(result,

-					RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_ + i,

-					idFilter[i].getName());

-			result.setPropertyString(

-					RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_ + i,

-					idFilter[i].getNamespace().getName());

-		}

-		// Now add count

-		result.setPropertyString(

-				RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_COUNT, new Integer(

-						idFilter.length).toString());

-	}

-

-	protected ID[] decodeIDArray(IServiceProperties props) {

-		// First, get the count

-		String countValue = props

-				.getPropertyString(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_COUNT);

-		if (countValue == null)

-			return null;

-		int count = new Integer(countValue).intValue();

-		if (count <= 0)

-			return null;

-		List result = new ArrayList();

-		for (int i = 0; i < count; i++) {

-			// decode string as name

-			String idName = decodeString(props,

-					RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_ + i);

-			if (idName == null)

-				continue;

-			String nsName = props

-					.getPropertyString(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_

-							+ i);

-			Namespace ns = (nsName != null) ? IDUtil.getNamespaceByName(nsName)

-					: IDUtil.findNamespaceByIdName(idName);

-			if (ns == null)

-				continue;

-			result.add(IDUtil.createID(ns, idName));

-		}

-		return (ID[]) result.toArray(new ID[] {});

-	}

-

 	protected void decodeOSGiProperties(IServiceProperties props,

 			Map osgiProperties) {

-		// OSGI

-		// endpoint.id

+		// org.osgi.framework.Constants.OBJECTCLASS

+		List<String> interfaces = decodeList(props,

+				org.osgi.framework.Constants.OBJECTCLASS);

+		osgiProperties.put(org.osgi.framework.Constants.OBJECTCLASS,

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

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_

+		for (String intf : interfaces) {

+			String packageKey = org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_

+					+ getPackageName(intf);

+			String intfVersion = decodeString(props, packageKey);

+			if (intfVersion != null)

+				osgiProperties.put(packageKey, intfVersion);

+		}

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID

 		String endpointId = decodeString(props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);

 		osgiProperties

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

 						endpointId);

-		// endpoint.service.id

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID

 		Long endpointServiceId = decodeLong(

 				props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID);

 		osgiProperties

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

 						endpointServiceId);

-		// objectClass

-		List<String> interfaces = decodeList(props,

-				org.osgi.framework.Constants.OBJECTCLASS);

-		osgiProperties.put(org.osgi.framework.Constants.OBJECTCLASS,

-				(String[]) interfaces.toArray(new String[] {}));

-		// framework uuid

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID

 		String fwkuuid = decodeString(

 				props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID);

 		osgiProperties

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

 						fwkuuid);

-		// configuration types

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS

 		List<String> configTypes = decodeList(

 				props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS);

@@ -160,7 +128,7 @@
 					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,

 							(String[]) configTypes

 									.toArray(new String[configTypes.size()]));

-		// service intents

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS

 		List<String> intents = decodeList(

 				props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS);

@@ -169,8 +137,7 @@
 					.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS,

 							(String[]) intents.toArray(new String[intents

 									.size()]));

-

-		// remote supported configs

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED

 		List<String> remoteConfigsSupported = decodeList(

 				props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);

@@ -180,8 +147,7 @@
 							(String[]) remoteConfigsSupported

 									.toArray(new String[remoteConfigsSupported

 											.size()]));

-

-		// remote supported configs

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED

 		List<String> remoteIntentsSupported = decodeList(

 				props,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED);

@@ -196,71 +162,111 @@
 

 	protected EndpointDescription decodeEndpointDescription(

 			IServiceProperties discoveredServiceProperties) {

-		Map osgiProperties = new HashMap();

-		decodeOSGiProperties(discoveredServiceProperties, osgiProperties);

+

+		Map<String, Object> endpointDescriptionProperties = new TreeMap<String, Object>(

+				String.CASE_INSENSITIVE_ORDER);

+

+		decodeOSGiProperties(discoveredServiceProperties,

+				endpointDescriptionProperties);

 

 		// remote service id

 		Long remoteServiceId = decodeLong(discoveredServiceProperties,

 				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);

-		osgiProperties.put(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,

+		endpointDescriptionProperties.put(

+				org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,

 				remoteServiceId);

+

 		// container id namespace

 		String containerIDNamespace = decodeString(discoveredServiceProperties,

 				RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);

-		// target ID

-		String targetName = decodeString(discoveredServiceProperties,

+		if (containerIDNamespace != null)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,

+					containerIDNamespace);

+

+		// connect target ID

+		String connectTargetIDName = decodeString(discoveredServiceProperties,

 				RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

-		String targetNamespace = decodeString(discoveredServiceProperties,

-				RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);

-		ID targetID = null;

-		if (targetName != null) {

-			Namespace ns = (targetNamespace != null) ? IDUtil

-					.getNamespaceByName(targetNamespace) : IDUtil

-					.findNamespaceByIdName(targetName);

-			if (ns != null)

-				targetID = IDUtil.createID(ns, targetName);

-		}

+		if (connectTargetIDName != null)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_CONNECTTARGET_ID,

+					connectTargetIDName);

+

 		// ID filter

-		ID[] idFilter = decodeIDArray(discoveredServiceProperties);

+		List<String> idFilterNames = decodeList(discoveredServiceProperties,

+				RemoteConstants.ENDPOINT_IDFILTER_IDS);

+		Object idFilterNamesval = PropertiesUtil

+				.convertToStringPlusValue(idFilterNames);

+		if (idFilterNamesval != null)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_IDFILTER_IDS, idFilterNamesval);

+

 		// remote service filter

 		String remoteServiceFilter = decodeString(discoveredServiceProperties,

 				RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER);

+		if (remoteServiceFilter != null)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,

+					remoteServiceFilter);

 

 		// Finally, fill out other properties

 		decodeNonStandardServiceProperties(discoveredServiceProperties,

-				osgiProperties);

+				endpointDescriptionProperties);

 

-		return new EndpointDescription(osgiProperties, containerIDNamespace,

-				targetID, idFilter, remoteServiceFilter);

+		return new EndpointDescription(endpointDescriptionProperties);

 	}

 

-	protected void encodeServiceProperties(

+	private String getPackageName(String className) {

+		int lastDotIndex = className.lastIndexOf("."); //$NON-NLS-1$

+		if (lastDotIndex == -1)

+			return ""; //$NON-NLS-1$

+		return className.substring(0, lastDotIndex);

+	}

+

+	protected void encodeOSGiServiceProperties(

 			EndpointDescription endpointDescription, IServiceProperties result) {

-		// OSGi objectClass = endpointDescription.getInterfaces();

+		// org.osgi.framework.Constants.OBJECTCLASS =

+		// endpointDescription.getInterfaces();

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

 		encodeList(result, org.osgi.framework.Constants.OBJECTCLASS, interfaces);

-		// OSGi service properties

-		// endpoint.id == endpointDescription.getId()

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_

+		// version every interface package, make sure to encode package version

+		// (if specified)

+		for (String intf : interfaces) {

+			String intfPackageName = getPackageName(intf);

+			Version intfVersion = endpointDescription

+					.getPackageVersion(intfPackageName);

+			if (intfVersion != null

+					&& !Version.emptyVersion.equals(intfVersion))

+				encodeString(

+						result,

+						org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_

+								+ intfPackageName, intfVersion.toString());

+		}

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID ==

+		// endpointDescription.getId()

 		String endpointId = endpointDescription.getId();

 		encodeString(

 				result,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,

 				endpointId);

-		// OSGi endpoint.service.id = endpointDescription.getServiceId()

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID

+		// = endpointDescription.getServiceId()

 		long endpointServiceId = endpointDescription.getServiceId();

 		encodeLong(

 				result,

 				org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,

 				new Long(endpointServiceId));

-		// OSGi frameworkUUID = endpointDescription.getFrameworkUUID()

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID

+		// = endpointDescription.getFrameworkUUID()

 		String frameworkUUID = endpointDescription.getFrameworkUUID();

 		if (frameworkUUID != null)

 			encodeString(

 					result,

 					org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,

 					frameworkUUID);

-		// OSGi configuration types =

-		// endpointDescription.getConfigurationTypes();

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS

+		// = endpointDescription.getConfigurationTypes();

 		List<String> configurationTypes = endpointDescription

 				.getConfigurationTypes();

 		if (configurationTypes.size() > 0)

@@ -268,13 +274,15 @@
 					result,

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

 					configurationTypes);

-		// OSGI service intents = endpointDescription.getIntents()

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS =

+		// endpointDescription.getIntents()

 		List<String> serviceIntents = endpointDescription.getIntents();

 		if (serviceIntents.size() > 0)

 			encodeList(

 					result,

 					org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS,

 					serviceIntents);

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED

 		Map endpointDescriptionProperties = endpointDescription.getProperties();

 		List<String> remoteConfigsSupported = PropertiesUtil

 				.getStringPlusProperty(

@@ -285,7 +293,7 @@
 					result,

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

 					remoteConfigsSupported);

-

+		// org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED

 		List<String> remoteIntentsSupported = PropertiesUtil

 				.getStringPlusProperty(

 						endpointDescriptionProperties,

@@ -296,40 +304,52 @@
 					org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED,

 					remoteIntentsSupported);

 

-		// namespace

-		String containerIDNamespace = endpointDescription

-				.getContainerIDNamespace();

-		encodeString(result, RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,

-				containerIDNamespace);

-		// ECF remote service id = endpointDescription.getRemoteServiceId()

-		long remoteServiceId = endpointDescription.getRemoteServiceId();

-		encodeLong(result, org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,

-				new Long(remoteServiceId));

-		// ECF connectTargetID = endpointDescription.getConnectTargetID()

-		ID connectTargetID = endpointDescription.getConnectTargetID();

-		if (connectTargetID != null) {

-			// external form of ID

-			encodeString(result, RemoteConstants.ENDPOINT_CONNECTTARGET_ID,

-					connectTargetID.toExternalForm());

-			// namespace

+	}

+

+	protected void encodeServiceProperties(

+			EndpointDescription endpointDescription, IServiceProperties result) {

+

+		encodeOSGiServiceProperties(endpointDescription, result);

+

+		Long rsId = (Long) endpointDescription.getProperties().get(

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

+		if (rsId != null)

+			encodeLong(result,

+					org.eclipse.ecf.remoteservice.Constants.SERVICE_ID, rsId);

+

+		// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE

+		// = endpointDescription.getIdNamespace()

+		String containerIDNamespace = endpointDescription.getIdNamespace();

+		if (containerIDNamespace != null)

 			encodeString(result,

-					RemoteConstants.ENDPOINT_CONNECTTARGET_ID_NAMESPACE,

-					connectTargetID.getNamespace().getName());

-		}

-		// ECF idFilter = endpointDescription.getIDFilter();

+					RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,

+					containerIDNamespace);

+

+		// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONNECTTARGET_ID

+		// = endpointDescription.getRemoteServiceId()

+		ID connectTargetID = endpointDescription.getConnectTargetID();

+		if (connectTargetID != null)

+			encodeString(result, RemoteConstants.ENDPOINT_CONNECTTARGET_ID,

+					connectTargetID.getName());

+

+		// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_IDFILTER_IDS

+		// = endpointDescription.getIDFilter();

 		ID[] idFilter = endpointDescription.getIDFilter();

 		if (idFilter != null && idFilter.length > 0) {

-			encodeIDArray(result, idFilter);

+			List<String> idNames = new ArrayList<String>();

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

+				idNames.add(idFilter[i].getName());

+			encodeList(result, RemoteConstants.ENDPOINT_IDFILTER_IDS, idNames);

 		}

 

-		// ECF remote service filter =

-		// endpointDescription.getRemoteServiceFilter()

+		// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER

+		// = endpointDescription.getRemoteServiceFilter()

 		String remoteFilter = endpointDescription.getRemoteServiceFilter();

 		if (remoteFilter != null) {

 			encodeString(result, RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,

 					remoteFilter);

 		}

-		// encode non standar properties

+		// encode non standard properties

 		encodeNonStandardServiceProperties(endpointDescription.getProperties(),

 				result);

 	}

@@ -376,12 +396,12 @@
 	}

 

 	protected void logWarning(String methodName, String message, Throwable t) {

-		LogUtility.logWarning(methodName, DebugOptions.DISCOVERY,

+		LogUtility.logWarning(methodName, DebugOptions.METADATA_FACTORY,

 				this.getClass(), message, t);

 	}

 

 	protected void logError(String methodName, String message, Throwable t) {

-		LogUtility.logError(methodName, DebugOptions.DISCOVERY,

+		LogUtility.logError(methodName, DebugOptions.METADATA_FACTORY,

 				this.getClass(), message, t);

 	}

 

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
new file mode 100644
index 0000000..8c6048e
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
@@ -0,0 +1,435 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+import java.util.TreeMap;

+

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

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

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

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.Filter;

+import org.osgi.framework.InvalidSyntaxException;

+import org.osgi.framework.ServiceEvent;

+import org.osgi.framework.ServiceReference;

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

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

+

+	private BundleContext context;

+

+	private ServiceTracker endpointDescriptionAdvertiserTracker;

+	private Object endpointDescriptionAdvertiserTrackerLock = new Object();

+

+	private ServiceTracker remoteServiceAdminTracker;

+	private Object remoteServiceAdminTrackerLock = new Object();

+

+	protected Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> exportedRegistrations = new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>();

+

+	protected Collection<org.osgi.service.remoteserviceadmin.ImportRegistration> importedRegistrations = new ArrayList<org.osgi.service.remoteserviceadmin.ImportRegistration>();

+

+	public AbstractTopologyManager(BundleContext context) {

+		this.context = context;

+	}

+

+	protected BundleContext getContext() {

+		return context;

+	}

+

+	protected String getFrameworkUUID() {

+		Activator a = Activator.getDefault();

+		if (a == null)

+			return null;

+		return a.getFrameworkUUID();

+	}

+

+	protected IEndpointDescriptionAdvertiser getEndpointDescriptionAdvertiser(

+			EndpointDescription endpointDescription) {

+		synchronized (endpointDescriptionAdvertiserTrackerLock) {

+			if (endpointDescriptionAdvertiserTracker == null) {

+				endpointDescriptionAdvertiserTracker = new ServiceTracker(

+						getContext(),

+						IEndpointDescriptionAdvertiser.class.getName(), null);

+				endpointDescriptionAdvertiserTracker.open();

+			}

+		}

+		return (IEndpointDescriptionAdvertiser) endpointDescriptionAdvertiserTracker

+				.getService();

+	}

+

+	public void close() {

+		synchronized (endpointDescriptionAdvertiserTrackerLock) {

+			if (endpointDescriptionAdvertiserTracker != null) {

+				endpointDescriptionAdvertiserTracker.close();

+				endpointDescriptionAdvertiserTracker = null;

+			}

+		}

+		synchronized (remoteServiceAdminTrackerLock) {

+			if (remoteServiceAdminTracker != null) {

+				remoteServiceAdminTracker.close();

+				remoteServiceAdminTracker = null;

+			}

+		}

+		synchronized (exportedRegistrations) {

+			exportedRegistrations.clear();

+		}

+		synchronized (importedRegistrations) {

+			importedRegistrations.clear();

+		}

+		context = null;

+	}

+

+	protected void logWarning(String methodName, String message) {

+		LogUtility.logWarning(methodName, DebugOptions.TOPOLOGY_MANAGER,

+				this.getClass(), message);

+	}

+

+	protected Filter createRSAFilter() {

+		String filterString = "(&(" //$NON-NLS-1$

+				+ org.osgi.framework.Constants.OBJECTCLASS

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

+				+ org.osgi.service.remoteserviceadmin.RemoteServiceAdmin.class

+						.getName()

+				+ ")(" //$NON-NLS-1$

+				+ org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin.SERVICE_PROP

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

+		try {

+			return getContext().createFilter(filterString);

+		} catch (InvalidSyntaxException e) {

+			// Should never happen

+			return null;

+		}

+	}

+

+	protected org.osgi.service.remoteserviceadmin.RemoteServiceAdmin getRemoteServiceAdmin() {

+		synchronized (remoteServiceAdminTrackerLock) {

+			if (remoteServiceAdminTracker == null) {

+				remoteServiceAdminTracker = new ServiceTracker(getContext(),

+						createRSAFilter(), null);

+				remoteServiceAdminTracker.open();

+			}

+		}

+		return (org.osgi.service.remoteserviceadmin.RemoteServiceAdmin) remoteServiceAdminTracker

+				.getService();

+	}

+

+	protected void advertiseEndpointDescription(

+			EndpointDescription endpointDescription) {

+		IEndpointDescriptionAdvertiser advertiser = getEndpointDescriptionAdvertiser(endpointDescription);

+		if (advertiser == null) {

+			logWarning("advertiseExportedRegistration", //$NON-NLS-1$

+					"No endpoint description advertiser available for endpointDescription=" //$NON-NLS-1$

+							+ endpointDescription);

+			return;

+		}

+		// Now advertise endpoint description using endpoint description

+		// advertiser

+		trace("advertiseEndpointDescription", //$NON-NLS-1$

+				"advertising endpointDescription=" + endpointDescription //$NON-NLS-1$

+						+ " with advertiser=" + advertiser); //$NON-NLS-1$

+		IStatus result = advertiser.advertise(endpointDescription);

+		if (!result.isOK())

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

+					"Advertise of endpointDescription=" + endpointDescription //$NON-NLS-1$

+							+ " FAILED", result); //$NON-NLS-1$

+	}

+

+	protected void unadvertiseEndpointDescription(

+			EndpointDescription endpointDescription) {

+		IEndpointDescriptionAdvertiser advertiser = getEndpointDescriptionAdvertiser(endpointDescription);

+		if (advertiser == null) {

+			logError(

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

+					"No endpoint description advertiser available to unadvertise endpointDescription=" //$NON-NLS-1$

+							+ endpointDescription);

+			return;

+		}

+		// Now unadvertise endpoint description using endpoint description

+		// advertiser

+		IStatus result = advertiser.unadvertise(endpointDescription);

+		if (!result.isOK())

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

+					"Unadvertise of endpointDescription=" + endpointDescription //$NON-NLS-1$

+							+ " FAILED", result); //$NON-NLS-1$

+	}

+

+	protected void logError(String methodName, String message,

+			Throwable exception) {

+		LogUtility.logError(methodName, DebugOptions.TOPOLOGY_MANAGER,

+				this.getClass(), message, exception);

+	}

+

+	protected void logError(String methodName, String message, IStatus result) {

+		LogUtility.logError(methodName, DebugOptions.TOPOLOGY_MANAGER,

+				this.getClass(), result);

+	}

+

+	protected void trace(String methodName, String message) {

+		LogUtility.trace(methodName, DebugOptions.TOPOLOGY_MANAGER,

+				this.getClass(), message);

+	}

+

+	protected void logError(String methodName, String message) {

+		LogUtility.logError(methodName, DebugOptions.TOPOLOGY_MANAGER,

+				this.getClass(), message);

+	}

+

+	protected void handleEndpointAdded(

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+			String matchedFilter) {

+

+		// First, select importing remote service admin

+		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin rsa = getRemoteServiceAdmin();

+

+		if (rsa == null) {

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

+					"RemoteServiceAdmin not found for importing endpointDescription=" //$NON-NLS-1$

+							+ endpointDescription);

+			return;

+		}

+

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

+				+ endpointDescription + " rsa=" + rsa); //$NON-NLS-1$

+

+		// now call rsa.import

+		org.osgi.service.remoteserviceadmin.ImportRegistration importRegistration = rsa

+				.importService(endpointDescription);

+

+		if (importRegistration == null) {

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

+					"Import registration is null for endpointDescription=" //$NON-NLS-1$

+							+ endpointDescription + " and rsa=" + rsa); //$NON-NLS-1$

+		} else {

+			Throwable t = importRegistration.getException();

+			if (t != null)

+				handleInvalidImportRegistration(importRegistration, t);

+			else {

+				synchronized (importedRegistrations) {

+					importedRegistrations.add(importRegistration);

+				}

+			}

+		}

+	}

+

+	protected void handleInvalidImportRegistration(

+			ImportRegistration importRegistration, Throwable t) {

+		logError("handleInvalidImportRegistration", "importRegistration=" //$NON-NLS-1$ //$NON-NLS-2$

+				+ importRegistration, t);

+	}

+

+	protected void handleEvent(ServiceEvent event, Collection contexts) {

+		switch (event.getType()) {

+		case ServiceEvent.MODIFIED:

+			handleServiceModifying(event.getServiceReference());

+			break;

+		case ServiceEvent.MODIFIED_ENDMATCH:

+			break;

+		case ServiceEvent.REGISTERED:

+			handleServiceRegistering(event.getServiceReference());

+			break;

+		case ServiceEvent.UNREGISTERING:

+			handleServiceUnregistering(event.getServiceReference());

+			break;

+		default:

+			break;

+		}

+	}

+

+	protected void handleEndpointRemoved(

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+			String matchedFilter) {

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

+				+ endpointDescription);

+		unimportService(endpointDescription);

+	}

+

+	protected void handleServiceRegistering(ServiceReference serviceReference) {

+		// Using OSGI 4.2 Chap 13 Remote Services spec, get the specified remote

+		// interfaces for the given service reference

+		String[] exportedInterfaces = PropertiesUtil

+				.getExportedInterfaces(serviceReference);

+		// If no remote interfaces set, then we don't do anything with it

+		if (exportedInterfaces == null)

+			return;

+

+		// Select remote service admin

+		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin rsa = getRemoteServiceAdmin();

+

+		// if no remote service admin available, then log error and return

+		if (rsa == null) {

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

+					"No RemoteServiceAdmin found for serviceReference=" //$NON-NLS-1$

+							+ serviceReference

+							+ ".  Remote service NOT EXPORTED"); //$NON-NLS-1$

+			return;

+		}

+

+		// prepare export properties

+		Map<String, Object> exportProperties = new TreeMap<String, Object>(

+				String.CASE_INSENSITIVE_ORDER);

+		exportProperties

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

+						exportedInterfaces);

+		trace("handleServiceRegistering", "serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$

+				+ serviceReference + " exportProperties=" + exportProperties); //$NON-NLS-1$

+		Collection<org.osgi.service.remoteserviceadmin.ExportRegistration> registrations = rsa

+				.exportService(serviceReference, exportProperties);

+

+		if (registrations == null || registrations.size() == 0) {

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

+					"No export registrations created by RemoteServiceAdmin=" //$NON-NLS-1$

+							+ rsa + ".  ServiceReference=" + serviceReference //$NON-NLS-1$

+							+ " NOT EXPORTED"); //$NON-NLS-1$

+			return;

+		}

+

+		List<EndpointDescription> endpointDescriptions = new ArrayList<EndpointDescription>();

+

+		for (org.osgi.service.remoteserviceadmin.ExportRegistration exportRegistration : registrations) {

+			// If they are invalid report as such

+			Throwable t = exportRegistration.getException();

+			if (t != null)

+				handleInvalidExportRegistration(exportRegistration, t);

+			else {

+				endpointDescriptions

+						.add((EndpointDescription) exportRegistration

+								.getExportReference().getExportedEndpoint());

+				synchronized (exportedRegistrations) {

+					exportedRegistrations.add(exportRegistration);

+				}

+			}

+		}

+		// advertise valid exported registrations

+		advertiseEndpointDescriptions(endpointDescriptions);

+	}

+

+	protected void advertiseEndpointDescriptions(

+			List<EndpointDescription> endpointDescriptions) {

+		for (EndpointDescription ed : endpointDescriptions)

+			advertiseEndpointDescription(ed);

+	}

+

+	protected void handleInvalidExportRegistration(

+			ExportRegistration exportRegistration, Throwable t) {

+		logError("handleInvalidExportRegistration", "exportRegistration=" //$NON-NLS-1$ //$NON-NLS-2$

+				+ exportRegistration, t);

+	}

+

+	protected void handleServiceModifying(ServiceReference serviceReference) {

+	}

+

+	protected void handleServiceUnregistering(ServiceReference serviceReference) {

+		Collection<EndpointDescription> endpointDescriptions = unexportService(serviceReference);

+		if (endpointDescriptions != null)

+			for (EndpointDescription ed : endpointDescriptions)

+				unadvertiseEndpointDescription(ed);

+	}

+

+	protected Collection<EndpointDescription> unexportService(

+			ServiceReference serviceReference) {

+		Map<org.osgi.service.remoteserviceadmin.ExportRegistration, EndpointDescription> matchingExportRegistrations = null;

+		synchronized (exportedRegistrations) {

+			for (Iterator<org.osgi.service.remoteserviceadmin.ExportRegistration> i = exportedRegistrations

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

+				if (matchingExportRegistrations == null)

+					matchingExportRegistrations = new HashMap<org.osgi.service.remoteserviceadmin.ExportRegistration, EndpointDescription>();

+				org.osgi.service.remoteserviceadmin.ExportRegistration exportRegistration = i

+						.next();

+				// Only check valid registrations (no exceptions)

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

+					org.osgi.service.remoteserviceadmin.ExportReference exportRef = exportRegistration

+							.getExportReference();

+					if (exportRef != null) {

+						ServiceReference exportReference = exportRef

+								.getExportedService();

+						if (exportReference != null

+								&& serviceReference.equals(exportReference)) {

+							matchingExportRegistrations.put(exportRegistration,

+									(EndpointDescription) exportRef

+											.getExportedEndpoint());

+							i.remove();

+						}

+					}

+				}

+			}

+		}

+		// If no matching export registrations then we return null and are done

+		if (matchingExportRegistrations == null

+				|| matchingExportRegistrations.size() == 0)

+			return null;

+		// We close all matching export registrations

+		for (Iterator<org.osgi.service.remoteserviceadmin.ExportRegistration> i = matchingExportRegistrations

+				.keySet().iterator(); i.hasNext();) {

+			org.osgi.service.remoteserviceadmin.ExportRegistration exportRegistration = i

+					.next();

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

+					+ exportRegistration);

+			exportRegistration.close();

+		}

+		// And return endpointDescriptions for matching registrations

+		return matchingExportRegistrations.values();

+	}

+

+	protected void unimportService(

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

+		List<org.osgi.service.remoteserviceadmin.ImportRegistration> removedRegistrations = null;

+		synchronized (importedRegistrations) {

+			for (Iterator<org.osgi.service.remoteserviceadmin.ImportRegistration> i = importedRegistrations

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

+				if (removedRegistrations == null)

+					removedRegistrations = new ArrayList<org.osgi.service.remoteserviceadmin.ImportRegistration>();

+				org.osgi.service.remoteserviceadmin.ImportRegistration importRegistration = i

+						.next();

+				if (importRegistration.getException() == null) {

+					org.osgi.service.remoteserviceadmin.ImportReference importRef = importRegistration

+							.getImportReference();

+					if (importRef != null) {

+						org.osgi.service.remoteserviceadmin.EndpointDescription ed = importRef

+								.getImportedEndpoint();

+						if (ed != null && ed.isSameService(endpointDescription)) {

+							removedRegistrations.add(importRegistration);

+							i.remove();

+						}

+					}

+				}

+			}

+		}

+		// Now close all of them

+		if (removedRegistrations != null)

+			for (org.osgi.service.remoteserviceadmin.ImportRegistration removedReg : removedRegistrations) {

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

+						+ removedReg);

+				removedReg.close();

+			}

+	}

+

+}

diff --git a/incubation/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
similarity index 68%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
index c8374fb..e06dff7 100644
--- a/incubation/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
@@ -12,9 +12,13 @@
 import java.util.List;

 

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

-import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;

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

 

@@ -25,43 +29,37 @@
 	}

 

 	public IRemoteServiceContainer selectConsumerContainer(

-			EndpointDescription endpointDescription) {

-		trace("selectConsumerContainers", "endpointDescription=" + endpointDescription); //$NON-NLS-1$

+			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 endpointID = IDUtil.createContainerID(endpointDescription);

-

-		String[] remoteSupportedConfigs = null;

-		List<String> edConfigurationTypes = endpointDescription

-				.getConfigurationTypes();

-		if (edConfigurationTypes.size() >= 1

-				&& edConfigurationTypes

-						.get(0)

-						.equals(RemoteConstants.ENDPOINT_SERVICE_IMPORTED_CONFIGS_VALUE)) {

-			remoteSupportedConfigs = (String[]) endpointDescription

-					.getProperties()

-					.get(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);

-		} else

-			remoteSupportedConfigs = edConfigurationTypes

-					.toArray(new String[edConfigurationTypes.size()]);

+		ID endpointContainerID = endpointDescription.getContainerID();

 

 		// Get connect targetID

 		ID connectTargetID = endpointDescription.getConnectTargetID();

 

 		IRemoteServiceContainer rsContainer = selectExistingConsumerContainer(

-				endpointID, 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/incubation/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
similarity index 86%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescription.java
index 0f3dd47..557c9b2 100644
--- a/incubation/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
@@ -12,6 +12,14 @@
 import org.eclipse.ecf.core.identity.Namespace;

 import org.eclipse.ecf.discovery.identity.IServiceID;

 

+/**

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

+ * 

+ * @see IDiscoveredEndpointDescriptionFactory

+ */

 public class DiscoveredEndpointDescription {

 

 	private Namespace discoveryLocatorNamespace;

diff --git a/incubation/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
similarity index 89%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/DiscoveredEndpointDescriptionFactory.java
index 32d1279..c44c8e6 100644
--- a/incubation/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
@@ -19,6 +19,12 @@
 import org.eclipse.ecf.discovery.identity.IServiceID;

 import org.osgi.service.remoteserviceadmin.EndpointDescription;

 

+/**

+ * Default implementation of {@link IDiscoveredEndpointDescriptionFactory}

+ * service.

+ * 

+ * @see IDiscoveredEndpointDescriptionFactory

+ */

 public class DiscoveredEndpointDescriptionFactory extends

 		AbstractMetadataFactory implements

 		IDiscoveredEndpointDescriptionFactory {

@@ -72,13 +78,13 @@
 				}

 			}

 		} catch (Exception e) {

-			logError("createDiscoveredEndpointDescription",

-					"Exception creating discovered endpoint description", e);

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

+					"Exception creating discovered endpoint description", e); //$NON-NLS-1$

 			return null;

 		}

 	}

 

-	public DiscoveredEndpointDescription getUndiscoveredEndpointDescription(

+	public DiscoveredEndpointDescription removeDiscoveredEndpointDescription(

 			IDiscoveryLocator locator, IServiceID serviceID) {

 		synchronized (discoveredEndpointDescriptions) {

 			DiscoveredEndpointDescription ded = findUniscoveredEndpointDescription(

@@ -110,11 +116,11 @@
 	}

 

 	public void close() {

-		removeAllEndpointDescriptions();

+		removeAllDiscoveredEndpointDescriptions();

 		super.close();

 	}

 

-	public boolean removeEndpointDescription(

+	public boolean removeDiscoveredEndpointDescription(

 			EndpointDescription endpointDescription) {

 		synchronized (discoveredEndpointDescriptions) {

 			DiscoveredEndpointDescription d = findDiscoveredEndpointDescription(endpointDescription);

@@ -126,7 +132,7 @@
 		return false;

 	}

 

-	public void removeAllEndpointDescriptions() {

+	public void removeAllDiscoveredEndpointDescriptions() {

 		synchronized (discoveredEndpointDescriptions) {

 			discoveredEndpointDescriptions.clear();

 		}

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
new file mode 100644
index 0000000..e30a413
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
@@ -0,0 +1,252 @@
+/*******************************************************************************
+ * Copyright (c) 2010-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 java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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;
+import org.osgi.framework.Version;
+
+/**
+ * ECF remote service endpoint description. Instances of this class, typically
+ * created via discovery, allow the import of an ECF remote service. The
+ * superclass of this class is the
+ * {@link org.osgi.service.remoteserviceadmin.EndpointDescription} class which
+ * is specified by the Remote Service Admin (chap 122) from the <a
+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGi 4.2
+ * Enterprise Specification</a>.
+ * <p>
+ * <p>
+ * ECF remote services have capabilities beyond typical OSGi remote services. To
+ * expose these capabilities, this EndpointDescription adds <b>optional</b>
+ * meta-data. This meta-data may then be used by the remote service consumer to
+ * customize ECF remote services import. Specifically, to customize the behavior
+ * of the ECF implementation of
+ * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}.
+ * <p>
+ */
+public class EndpointDescription extends
+		org.osgi.service.remoteserviceadmin.EndpointDescription {
+
+	private String idNamespace;
+	private ID containerID;
+	private ID connectTargetID;
+	private ID[] idFilter;
+	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();
+		String frameworkUUID = getFrameworkUUID();
+		this.hashCode = 31 * this.hashCode
+				+ (frameworkUUID == null ? 0 : frameworkUUID.hashCode());
+	}
+
+	/**
+	 * 
+	 * @param reference
+	 *            A service reference that can be exported.
+	 * @param properties
+	 *            Map of properties. This argument can be <code>null</code>. The
+	 *            keys in the map must be type <code>String</code> and, since
+	 *            the keys are case insensitive, there must be no duplicates
+	 *            with case variation.
+	 * @throws IllegalArgumentException
+	 *             When the properties are not proper for an Endpoint
+	 *             Description
+	 * 
+	 * @see org.osgi.service.remoteserviceadmin.EndpointDescription#EndpointDescription(ServiceReference,
+	 *      Map)
+	 */
+	public EndpointDescription(final ServiceReference reference,
+			final Map<String, Object> properties) {
+		super(reference, properties);
+		verifyECFProperties();
+		computeHashCode();
+	}
+
+	/**
+	 * 
+	 * @param properties
+	 *            The map from which to create the Endpoint Description. The
+	 *            keys in the map must be type <code>String</code> and, since
+	 *            the keys are case insensitive, there must be no duplicates
+	 *            with case variation.
+	 * @throws IllegalArgumentException
+	 *             When the properties are not proper for an Endpoint
+	 *             Description.
+	 * 
+	 * @see org.osgi.service.remoteserviceadmin.EndpointDescription#EndpointDescription(Map)
+	 */
+	public EndpointDescription(Map<String, Object> properties) {
+		super(properties);
+		verifyECFProperties();
+		computeHashCode();
+	}
+
+	private void verifyECFProperties() {
+		this.idNamespace = verifyStringProperty(RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
+		this.containerID = verifyIDProperty(idNamespace, getId());
+		this.connectTargetID = verifyIDProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
+		this.idFilter = verifyIDFilter();
+		this.rsFilter = verifyStringProperty(RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER);
+	}
+
+	private String verifyStringProperty(String propName) {
+		Object r = getProperties().get(propName);
+		try {
+			return (String) r;
+		} catch (ClassCastException e) {
+			IllegalArgumentException iae = new IllegalArgumentException(
+					"property value is not a String: " + propName); //$NON-NLS-1$
+			iae.initCause(e);
+			throw iae;
+		}
+	}
+
+	private ID verifyIDProperty(String idNamespace, String idName) {
+		if (idName == null)
+			return null;
+		try {
+			return IDUtil.createID(idNamespace, idName);
+		} catch (IDCreateException e) {
+			return IDFactory.getDefault().createStringID(idName);
+		}
+	}
+
+	private ID verifyIDProperty(String namePropName) {
+		return verifyIDProperty(idNamespace, verifyStringProperty(namePropName));
+	}
+
+	private ID[] verifyIDFilter() {
+		List<String> idNames = PropertiesUtil.getStringPlusProperty(
+				getProperties(), RemoteConstants.ENDPOINT_IDFILTER_IDS);
+		if (idNames.size() == 0)
+			return null;
+		List<ID> results = new ArrayList();
+		String idNamespace = getIdNamespace();
+		for (String idName : idNames) {
+			try {
+				results.add(IDUtil.createID(idNamespace, idName));
+			} catch (IDCreateException e) {
+				IllegalArgumentException iae = new IllegalArgumentException(
+						"cannot create ID[]: idNamespace=" + idNamespace //$NON-NLS-1$
+								+ " idName=" + idName); //$NON-NLS-1$
+				iae.initCause(e);
+				throw iae;
+			}
+		}
+		return (ID[]) results.toArray(new ID[results.size()]);
+	}
+
+	/**
+	 * Get a map of the service interface name -> Version information for all
+	 * the service interfaces exposed by this endpoint description (i.e. those
+	 * returned by {@link #getInterfaces()} which have a
+	 * 
+	 * @return Map<String,Version> of interface versions for all our service
+	 *         interfaces. Every service interface returned by
+	 *         {@link #getInterfaces()} will have an associated Version, but it
+	 *         may have value {@value Version#emptyVersion}
+	 */
+	public Map<String, Version> getInterfaceVersions() {
+		List<String> interfaces = getInterfaces();
+		Map<String, Version> result = new HashMap<String, Version>();
+		for (String intf : interfaces) {
+			int index = intf.lastIndexOf('.');
+			if (index == -1) {
+				continue;
+			}
+			String packageName = intf.substring(0, index);
+			result.put(intf, getPackageVersion(packageName));
+		}
+		return result;
+	}
+
+	public ID getContainerID() {
+		return containerID;
+	}
+
+	public String getIdNamespace() {
+		return idNamespace;
+	}
+
+	public ID getConnectTargetID() {
+		return connectTargetID;
+	}
+
+	public ID[] getIDFilter() {
+		return idFilter;
+	}
+
+	public String getRemoteServiceFilter() {
+		return rsFilter;
+	}
+
+	public int hashCode() {
+		return hashCode;
+	}
+
+	public boolean equals(Object other) {
+		if (other == null)
+			return false;
+		if (this == other)
+			return true;
+		if (!(other instanceof EndpointDescription))
+			return false;
+		EndpointDescription o = (EndpointDescription) other;
+		String frameworkUUID = getFrameworkUUID();
+		// equals returns true: 1) if getId() returns same String
+		return getId().equals(o.getId())
+		// 2) getServiceId() returns same value
+				&& getServiceId() == o.getServiceId()
+				// 3) a non-null frameworkUUID...and frameworkUUIDs equal
+				&& (frameworkUUID == null ? true : frameworkUUID.equals(o
+						.getFrameworkUUID()));
+	}
+
+	public String toString() {
+		return "EndpointDescription[containerID=" + containerID //$NON-NLS-1$
+				+ ",connectTargetID=" + connectTargetID + ",idFilter=" //$NON-NLS-1$ //$NON-NLS-2$
+				+ Arrays.toString(idFilter) + ",rsFilter=" + rsFilter //$NON-NLS-1$
+				+ ",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
new file mode 100644
index 0000000..6e42be4
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionAdvertiser.java
@@ -0,0 +1,141 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.util.ArrayList;

+import java.util.List;

+

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

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

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

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

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

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

+

+	private EndpointDescriptionLocator endpointDescriptionLocator;

+

+	public EndpointDescriptionAdvertiser(

+			EndpointDescriptionLocator endpointDescriptionLocator) {

+		this.endpointDescriptionLocator = endpointDescriptionLocator;

+	}

+

+	public IStatus advertise(EndpointDescription endpointDescription) {

+		return doDiscovery(endpointDescription, true);

+	}

+

+	protected IStatus doDiscovery(IDiscoveryAdvertiser discoveryAdvertiser,

+			IServiceInfo serviceInfo, boolean advertise) {

+		try {

+			if (advertise)

+				discoveryAdvertiser.registerService(serviceInfo);

+			else

+				discoveryAdvertiser.unregisterService(serviceInfo);

+			return Status.OK_STATUS;

+		} catch (Exception e) {

+			return createErrorStatus((advertise ? "registerService" //$NON-NLS-1$

+					: "unregisterService") //$NON-NLS-1$

+					+ " with serviceInfo=" //$NON-NLS-1$

+					+ serviceInfo + " for discoveryAdvertiser=" //$NON-NLS-1$

+					+ discoveryAdvertiser + " failed", e); //$NON-NLS-1$

+		}

+	}

+

+	protected IServiceInfoFactory getServiceInfoFactory() {

+		return endpointDescriptionLocator.getServiceInfoFactory();

+	}

+

+	protected IDiscoveryAdvertiser[] getDiscoveryAdvertisers() {

+		return endpointDescriptionLocator.getDiscoveryAdvertisers();

+	}

+

+	protected IStatus createErrorStatus(String message) {

+		return createErrorStatus(message, null);

+	}

+

+	protected IStatus createErrorStatus(String message, Throwable e) {

+		return new Status(IStatus.ERROR, Activator.PLUGIN_ID, message, e);

+	}

+

+	protected IStatus doDiscovery(EndpointDescription endpointDescription,

+			boolean advertise) {

+		Assert.isNotNull(endpointDescription);

+		String messagePrefix = advertise ? "Advertise" : "Unadvertise"; //$NON-NLS-1$ //$NON-NLS-2$

+		List<IStatus> statuses = new ArrayList<IStatus>();

+		// First get serviceInfoFactory

+		IServiceInfoFactory serviceInfoFactory = getServiceInfoFactory();

+		if (serviceInfoFactory == null)

+			return createErrorStatus(messagePrefix

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

+					+ endpointDescription

+					+ ".  No IServiceInfoFactory is available.  Cannot unpublish endpointDescription=" //$NON-NLS-1$

+					+ endpointDescription);

+		IDiscoveryAdvertiser[] discoveryAdvertisers = getDiscoveryAdvertisers();

+		if (discoveryAdvertisers == null || discoveryAdvertisers.length == 0)

+			return createErrorStatus(messagePrefix

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

+					+ endpointDescription

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

+					.createServiceInfo(discoveryAdvertisers[i],

+							endpointDescription) : serviceInfoFactory

+					.removeServiceInfo(discoveryAdvertisers[i],

+							endpointDescription));

+			if (serviceInfo == null) {

+				statuses.add(createErrorStatus(messagePrefix

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

+						+ endpointDescription

+						+ ".  Service Info is null.  Cannot publish endpointDescription=" //$NON-NLS-1$

+						+ endpointDescription));

+				continue;

+			}

+			// Now actually unregister with advertiser

+			statuses.add(doDiscovery(discoveryAdvertisers[i], serviceInfo,

+					advertise));

+		}

+		return createResultStatus(statuses, messagePrefix

+				+ " endpointDesription=" + endpointDescription //$NON-NLS-1$

+				+ ".  Problem in unadvertise"); //$NON-NLS-1$

+	}

+

+	public IStatus unadvertise(EndpointDescription endpointDescription) {

+		return doDiscovery(endpointDescription, false);

+	}

+

+	private IStatus createResultStatus(List<IStatus> statuses,

+			String errorMessage) {

+		List<IStatus> errorStatuses = new ArrayList<IStatus>();

+		for (IStatus status : statuses)

+			if (!status.isOK())

+				errorStatuses.add(status);

+		if (errorStatuses.size() > 0)

+			return new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR,

+					(IStatus[]) statuses.toArray(new IStatus[statuses.size()]),

+					errorMessage, null);

+		else

+			return Status.OK_STATUS;

+	}

+

+	public void close() {

+		this.endpointDescriptionLocator = null;

+	}

+

+}

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
new file mode 100644
index 0000000..f852af3
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
@@ -0,0 +1,943 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.io.IOException;

+import java.io.InputStream;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Arrays;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Dictionary;

+import java.util.Enumeration;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.Properties;

+import java.util.TreeMap;

+

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

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

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

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

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

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

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

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

+import org.eclipse.ecf.discovery.identity.IServiceID;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

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

+import org.eclipse.equinox.concurrent.future.IExecutor;

+import org.eclipse.equinox.concurrent.future.IProgressRunnable;

+import org.eclipse.equinox.concurrent.future.ThreadsExecutor;

+import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;

+import org.eclipse.osgi.framework.eventmgr.EventDispatcher;

+import org.eclipse.osgi.framework.eventmgr.EventManager;

+import org.eclipse.osgi.framework.eventmgr.ListenerQueue;

+import org.osgi.framework.Bundle;

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.BundleEvent;

+import org.osgi.framework.Constants;

+import org.osgi.framework.ServiceReference;

+import org.osgi.framework.ServiceRegistration;

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

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

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

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

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

+	private IExecutor executor;

+

+	// service info factory default

+	private ServiceInfoFactory serviceInfoFactory;

+	private ServiceRegistration defaultServiceInfoFactoryRegistration;

+	// service info factory service tracker

+	private Object serviceInfoFactoryTrackerLock = new Object();

+	private ServiceTracker serviceInfoFactoryTracker;

+

+	// endpoint description factory default

+	private DiscoveredEndpointDescriptionFactory defaultEndpointDescriptionFactory;

+	private ServiceRegistration defaultEndpointDescriptionFactoryRegistration;

+	// endpoint description factory tracker

+	private Object endpointDescriptionFactoryTrackerLock = new Object();

+	private ServiceTracker endpointDescriptionFactoryTracker;

+	// endpointDescriptionReader default

+	private ServiceRegistration defaultEndpointDescriptionReaderRegistration;

+

+	// For processing synchronous notifications asynchronously

+	private EventManager eventManager;

+	private ListenerQueue eventQueue;

+	private LocatorServiceListener localLocatorServiceListener;

+

+	// ECF IDiscoveryLocator tracker

+	private ServiceTracker locatorServiceTracker;

+	// Locator listeners

+	private Map<IDiscoveryLocator, LocatorServiceListener> locatorListeners;

+

+	private ServiceTracker endpointListenerTracker;

+

+	private ServiceTracker advertiserTracker;

+	private Object advertiserTrackerLock = new Object();

+

+	private BundleTracker bundleTracker;

+	private EndpointDescriptionBundleTrackerCustomizer bundleTrackerCustomizer;

+

+	public EndpointDescriptionLocator(BundleContext context) {

+		this.context = context;

+		this.executor = new ThreadsExecutor();

+	}

+

+	public void start() {

+		// For service info and endpoint description factories

+		// set the service ranking to Integer.MIN_VALUE

+		// so that any other registered factories will be preferred

+		final Properties properties = new Properties();

+		properties.put(Constants.SERVICE_RANKING,

+				new Integer(Integer.MIN_VALUE));

+		serviceInfoFactory = new ServiceInfoFactory();

+		defaultServiceInfoFactoryRegistration = context.registerService(

+				IServiceInfoFactory.class.getName(), serviceInfoFactory,

+				(Dictionary) properties);

+		defaultEndpointDescriptionFactory = new DiscoveredEndpointDescriptionFactory();

+		defaultEndpointDescriptionFactoryRegistration = context

+				.registerService(

+						IDiscoveredEndpointDescriptionFactory.class.getName(),

+						defaultEndpointDescriptionFactory,

+						(Dictionary) properties);

+		// setup/register default endpointDescriptionReader

+		defaultEndpointDescriptionReaderRegistration = context.registerService(

+				IEndpointDescriptionReader.class.getName(),

+				new EndpointDescriptionReader(), (Dictionary) properties);

+

+		// Create thread group, event manager, and eventQueue, and setup to

+		// dispatch EndpointListenerEvents

+		ThreadGroup eventGroup = new ThreadGroup(

+				"RSA EndpointDescriptionLocator ThreadGroup"); //$NON-NLS-1$

+		eventGroup.setDaemon(true);

+		eventManager = new EventManager(

+				"RSA EndpointDescriptionLocator Dispatcher", eventGroup); //$NON-NLS-1$

+		eventQueue = new ListenerQueue(eventManager);

+		CopyOnWriteIdentityMap listeners = new CopyOnWriteIdentityMap();

+		listeners.put(this, this);

+		eventQueue.queueListeners(listeners.entrySet(), new EventDispatcher() {

+			public void dispatchEvent(Object eventListener,

+					Object listenerObject, int eventAction, Object eventObject) {

+				final String logMethodName = "dispatchEvent"; //$NON-NLS-1$

+				final EndpointListenerEvent event = (EndpointListenerEvent) eventObject;

+				final EndpointListener endpointListener = event

+						.getEndpointListener();

+				final EndpointDescription endpointDescription = event

+						.getEndointDescription();

+				final String matchingFilter = event.getMatchingFilter();

+

+				try {

+					if (event.isDiscovered())

+						endpointListener.endpointAdded(endpointDescription,

+								matchingFilter);

+					else

+						endpointListener.endpointRemoved(endpointDescription,

+								matchingFilter);

+				} catch (Exception e) {

+					String message = "Exception in EndpointListener listener=" //$NON-NLS-1$

+							+ endpointListener + " description=" //$NON-NLS-1$

+							+ endpointDescription + " matchingFilter=" //$NON-NLS-1$

+							+ matchingFilter;

+					logError(logMethodName, message, e);

+				} catch (LinkageError e) {

+					String message = "LinkageError in EndpointListener listener=" //$NON-NLS-1$

+							+ endpointListener + " description=" //$NON-NLS-1$

+							+ endpointDescription + " matchingFilter=" //$NON-NLS-1$

+							+ matchingFilter;

+					logError(logMethodName, message, e);

+				} catch (AssertionError e) {

+					String message = "AssertionError in EndpointListener listener=" //$NON-NLS-1$

+							+ endpointListener + " description=" //$NON-NLS-1$

+							+ endpointDescription + " matchingFilter=" //$NON-NLS-1$

+							+ matchingFilter;

+					logError(logMethodName, message, e);

+				}

+			}

+		});

+		// Register the endpoint listener tracker, so that endpoint listeners

+		// that are subsequently added

+		// will then be notified of discovered endpoints

+		endpointListenerTracker = new ServiceTracker(context,

+				EndpointListener.class.getName(),

+				new ServiceTrackerCustomizer() {

+					public Object addingService(ServiceReference reference) {

+						if (context == null)

+							return null;

+						EndpointListener listener = (EndpointListener) context

+								.getService(reference);

+						if (listener == null)

+							return null;

+						Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> allDiscoveredEndpointDescriptions = getAllDiscoveredEndpointDescriptions();

+						for (org.osgi.service.remoteserviceadmin.EndpointDescription ed : allDiscoveredEndpointDescriptions) {

+							EndpointDescriptionLocator.EndpointListenerHolder[] endpointListenerHolders = getMatchingEndpointListenerHolders(

+									new ServiceReference[] { reference }, ed);

+							if (endpointListenerHolders != null) {

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

+									queueEndpointDescription(

+											endpointListenerHolders[i]

+													.getListener(),

+											endpointListenerHolders[i]

+													.getDescription(),

+											endpointListenerHolders[i]

+													.getMatchingFilter(), true);

+								}

+							}

+						}

+						return listener;

+					}

+

+					public void modifiedService(ServiceReference reference,

+							Object service) {

+					}

+

+					public void removedService(ServiceReference reference,

+							Object service) {

+					}

+				});

+

+		endpointListenerTracker.open();

+

+		locatorListeners = new HashMap();

+		localLocatorServiceListener = new LocatorServiceListener(null);

+		// Create locator service tracker, so new IDiscoveryLocators can

+		// be used to discover endpoint descriptions

+		locatorServiceTracker = new ServiceTracker(context,

+				IDiscoveryLocator.class.getName(),

+				new LocatorTrackerCustomizer());

+		locatorServiceTracker.open();

+		// Create bundle tracker for reading local/xml-file endpoint

+		// descriptions

+		bundleTrackerCustomizer = new EndpointDescriptionBundleTrackerCustomizer();

+		bundleTracker = new BundleTracker(context, Bundle.ACTIVE

+				| Bundle.STARTING, bundleTrackerCustomizer);

+		// This may trigger local endpoint description discovery

+		bundleTracker.open();

+	}

+

+	private void logError(String methodName, String message, Throwable e) {

+		LogUtility.logError(methodName,

+				DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),

+				message, e);

+	}

+

+	private void trace(String methodName, String message) {

+		LogUtility.trace(methodName, DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR,

+				this.getClass(), message);

+	}

+

+	public void close() {

+		if (bundleTracker != null) {

+			bundleTracker.close();

+			bundleTracker = null;

+		}

+		if (bundleTrackerCustomizer != null) {

+			bundleTrackerCustomizer.close();

+			bundleTrackerCustomizer = null;

+		}

+

+		// shutdown locatorListeners

+		synchronized (locatorListeners) {

+			for (IDiscoveryLocator l : locatorListeners.keySet()) {

+				LocatorServiceListener locatorListener = locatorListeners

+						.get(l);

+				if (locatorListener != null) {

+					l.removeServiceListener(locatorListener);

+					locatorListener.close();

+				}

+			}

+			locatorListeners.clear();

+		}

+

+		Object[] locators = locatorServiceTracker.getServices();

+		if (locators != null) {

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

+				// Add service listener to locator

+				shutdownLocator((IDiscoveryLocator) locators[i]);

+			}

+		}

+

+		if (localLocatorServiceListener != null) {

+			localLocatorServiceListener.close();

+			localLocatorServiceListener = null;

+		}

+

+		if (endpointListenerTracker != null) {

+			endpointListenerTracker.close();

+			endpointListenerTracker = null;

+		}

+		// Shutdown asynchronous event manager

+		if (eventManager != null) {

+			eventManager.close();

+			eventManager = null;

+		}

+

+		synchronized (endpointDescriptionFactoryTrackerLock) {

+			if (endpointDescriptionFactoryTracker != null) {

+				endpointDescriptionFactoryTracker.close();

+				endpointDescriptionFactoryTracker = null;

+			}

+		}

+		if (defaultEndpointDescriptionFactoryRegistration != null) {

+			defaultEndpointDescriptionFactoryRegistration.unregister();

+			defaultEndpointDescriptionFactoryRegistration = null;

+		}

+		if (defaultEndpointDescriptionFactory != null) {

+			defaultEndpointDescriptionFactory.close();

+			defaultEndpointDescriptionFactory = null;

+		}

+

+		synchronized (serviceInfoFactoryTrackerLock) {

+			if (serviceInfoFactoryTracker != null) {

+				serviceInfoFactoryTracker.close();

+				serviceInfoFactoryTracker = null;

+			}

+		}

+		if (defaultServiceInfoFactoryRegistration != null) {

+			defaultServiceInfoFactoryRegistration.unregister();

+			defaultServiceInfoFactoryRegistration = null;

+		}

+		if (serviceInfoFactory != null) {

+			serviceInfoFactory.close();

+			serviceInfoFactory = null;

+		}

+		if (defaultEndpointDescriptionReaderRegistration != null) {

+			defaultEndpointDescriptionReaderRegistration.unregister();

+			defaultEndpointDescriptionReaderRegistration = null;

+		}

+		if (locatorServiceTracker != null) {

+			locatorServiceTracker.close();

+			locatorServiceTracker = null;

+		}

+		synchronized (advertiserTrackerLock) {

+			if (advertiserTracker != null) {

+				advertiserTracker.close();

+				advertiserTracker = null;

+			}

+		}

+		this.executor = null;

+		this.context = null;

+	}

+

+	public IDiscoveryAdvertiser[] getDiscoveryAdvertisers() {

+		synchronized (advertiserTrackerLock) {

+			if (advertiserTracker == null) {

+				advertiserTracker = new ServiceTracker(context,

+						IDiscoveryAdvertiser.class.getName(), null);

+				advertiserTracker.open();

+			}

+		}

+		ServiceReference[] advertiserRefs = advertiserTracker

+				.getServiceReferences();

+		if (advertiserRefs == null)

+			return null;

+		List<IDiscoveryAdvertiser> results = new ArrayList<IDiscoveryAdvertiser>();

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

+			results.add((IDiscoveryAdvertiser) context

+					.getService(advertiserRefs[i]));

+		}

+		return results.toArray(new IDiscoveryAdvertiser[results.size()]);

+	}

+

+	private void openLocator(IDiscoveryLocator locator) {

+		if (context == null)

+			return;

+		synchronized (locatorListeners) {

+			LocatorServiceListener locatorListener = new LocatorServiceListener(

+					locator);

+			locatorListeners.put(locator, locatorListener);

+			processInitialLocatorServices(locator, locatorListener);

+		}

+	}

+

+	private void shutdownLocator(IDiscoveryLocator locator) {

+		if (locator == null || context == null)

+			return;

+		synchronized (locatorListeners) {

+			LocatorServiceListener locatorListener = locatorListeners

+					.remove(locator);

+			if (locatorListener != null)

+				locatorListener.close();

+		}

+	}

+

+	void queueEndpointDescription(

+			EndpointListener listener,

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+			String matchingFilters, boolean discovered) {

+		if (eventQueue == null)

+			return;

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

+				+ endpointDescription);

+		synchronized (eventQueue) {

+			eventQueue

+					.dispatchEventAsynchronous(0, new EndpointListenerEvent(

+							listener, endpointDescription, matchingFilters,

+							discovered));

+		}

+	}

+

+	Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> getAllDiscoveredEndpointDescriptions() {

+		Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> result = new ArrayList();

+		if (localLocatorServiceListener == null)

+			return result;

+		// Get local first

+		result.addAll(localLocatorServiceListener.getEndpointDescriptions());

+		synchronized (locatorListeners) {

+			for (IDiscoveryLocator l : locatorListeners.keySet()) {

+				LocatorServiceListener locatorListener = locatorListeners

+						.get(l);

+				result.addAll(locatorListener.getEndpointDescriptions());

+			}

+		}

+		return result;

+	}

+

+	void queueEndpointDescription(

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+			boolean discovered) {

+		EndpointListenerHolder[] endpointListenerHolders = getMatchingEndpointListenerHolders(endpointDescription);

+		if (endpointListenerHolders != null) {

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

+				queueEndpointDescription(

+						endpointListenerHolders[i].getListener(),

+						endpointListenerHolders[i].getDescription(),

+						endpointListenerHolders[i].getMatchingFilter(),

+						discovered);

+

+			}

+		} else {

+			LogUtility.logWarning(

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

+					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),

+					"No matching EndpointListeners found for " //$NON-NLS-1$

+							+ (discovered ? "discovered" : "undiscovered") //$NON-NLS-1$ //$NON-NLS-2$

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

+		}

+

+	}

+

+	private void processInitialLocatorServices(final IDiscoveryLocator locator,

+			final LocatorServiceListener locatorListener) {

+		IProgressRunnable runnable = new IProgressRunnable() {

+			public Object run(IProgressMonitor arg0) throws Exception {

+				IServiceInfo[] serviceInfos = locator.getServices();

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

+					locatorListener.handleService(serviceInfos[i], true);

+				}

+				return null;

+			}

+		};

+		executor.execute(runnable, null);

+	}

+

+	void shutdownLocators() {

+		Object[] locators = locatorServiceTracker.getServices();

+		if (locators != null) {

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

+				// Add service listener to locator

+				shutdownLocator((IDiscoveryLocator) locators[i]);

+			}

+		}

+	}

+

+	private class EndpointListenerEvent {

+

+		private EndpointListener endpointListener;

+		private org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription;

+		private String matchingFilter;

+		private boolean discovered;

+

+		public EndpointListenerEvent(

+				EndpointListener endpointListener,

+				org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+				String matchingFilter, boolean discovered) {

+			this.endpointListener = endpointListener;

+			this.endpointDescription = endpointDescription;

+			this.matchingFilter = matchingFilter;

+			this.discovered = discovered;

+		}

+

+		public EndpointListener getEndpointListener() {

+			return endpointListener;

+		}

+

+		public org.osgi.service.remoteserviceadmin.EndpointDescription getEndointDescription() {

+			return endpointDescription;

+		}

+

+		public String getMatchingFilter() {

+			return matchingFilter;

+		}

+

+		public boolean isDiscovered() {

+			return discovered;

+		}

+	}

+

+	private class LocatorTrackerCustomizer implements ServiceTrackerCustomizer {

+

+		/*

+		 * (non-Javadoc)

+		 * 

+		 * @see

+		 * org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(org.

+		 * osgi.framework.ServiceReference)

+		 */

+		public Object addingService(ServiceReference reference) {

+			IDiscoveryLocator locator = (IDiscoveryLocator) context

+					.getService(reference);

+			if (locator != null)

+				openLocator(locator);

+			return locator;

+		}

+

+		public void modifiedService(ServiceReference reference, Object service) {

+		}

+

+		public void removedService(ServiceReference reference, Object service) {

+			shutdownLocator((IDiscoveryLocator) service);

+		}

+	}

+

+	public IServiceInfoFactory getServiceInfoFactory() {

+		if (context == null)

+			return null;

+		synchronized (serviceInfoFactoryTrackerLock) {

+			if (serviceInfoFactoryTracker == null) {

+				serviceInfoFactoryTracker = new ServiceTracker(context,

+						IServiceInfoFactory.class.getName(), null);

+				serviceInfoFactoryTracker.open();

+			}

+		}

+		return (IServiceInfoFactory) serviceInfoFactoryTracker.getService();

+	}

+

+	public IDiscoveredEndpointDescriptionFactory getDiscoveredEndpointDescriptionFactory() {

+		synchronized (endpointDescriptionFactoryTrackerLock) {

+			if (context == null)

+				return null;

+			if (endpointDescriptionFactoryTracker == null) {

+				endpointDescriptionFactoryTracker = new ServiceTracker(context,

+						IDiscoveredEndpointDescriptionFactory.class.getName(),

+						null);

+				endpointDescriptionFactoryTracker.open();

+			}

+			return (IDiscoveredEndpointDescriptionFactory) endpointDescriptionFactoryTracker

+					.getService();

+		}

+	}

+

+	private Object endpointListenerServiceTrackerLock = new Object();

+

+	public EndpointListenerHolder[] getMatchingEndpointListenerHolders(

+			EndpointDescription description) {

+		synchronized (endpointListenerServiceTrackerLock) {

+			if (context == null)

+				return null;

+			return getMatchingEndpointListenerHolders(

+					endpointListenerTracker.getServiceReferences(), description);

+		}

+	}

+

+	public class EndpointListenerHolder {

+

+		private EndpointListener listener;

+		private EndpointDescription description;

+		private String matchingFilter;

+

+		public EndpointListenerHolder(EndpointListener l,

+				EndpointDescription d, String f) {

+			this.listener = l;

+			this.description = d;

+			this.matchingFilter = f;

+		}

+

+		public EndpointListener getListener() {

+			return listener;

+		}

+

+		public EndpointDescription getDescription() {

+			return description;

+		}

+

+		public String getMatchingFilter() {

+			return matchingFilter;

+		}

+	}

+

+	public EndpointListenerHolder[] getMatchingEndpointListenerHolders(

+			ServiceReference[] refs, EndpointDescription description) {

+		if (refs == null)

+			return null;

+		List results = new ArrayList();

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

+			EndpointListener listener = (EndpointListener) context

+					.getService(refs[i]);

+			if (listener == null)

+				continue;

+			List<String> filters = PropertiesUtil.getStringPlusProperty(

+					getMapFromProperties(refs[i]),

+					EndpointListener.ENDPOINT_LISTENER_SCOPE);

+			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) {

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

+	}

+

+	private Map getMapFromProperties(ServiceReference ref) {

+		Map<String, Object> results = new TreeMap<String, Object>(

+				String.CASE_INSENSITIVE_ORDER);

+		String[] keys = ref.getPropertyKeys();

+		if (keys != null) {

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

+				results.put(keys[i], ref.getProperty(keys[i]));

+			}

+		}

+		return results;

+	}

+

+	class EndpointDescriptionBundleTrackerCustomizer implements

+			BundleTrackerCustomizer {

+

+		private static final String REMOTESERVICE_MANIFESTHEADER = "Remote-Service"; //$NON-NLS-1$

+		private static final String XML_FILE_PATTERN = "*.xml"; //$NON-NLS-1$

+

+		private Map<Long, Collection<org.osgi.service.remoteserviceadmin.EndpointDescription>> bundleDescriptionMap = Collections

+				.synchronizedMap(new HashMap<Long, Collection<org.osgi.service.remoteserviceadmin.EndpointDescription>>());

+

+		private Object endpointDescriptionReaderTrackerLock = new Object();

+		private ServiceTracker endpointDescriptionReaderTracker;

+

+		private IEndpointDescriptionReader getEndpointDescriptionReader() {

+			synchronized (endpointDescriptionReaderTrackerLock) {

+				if (endpointDescriptionReaderTracker == null) {

+					endpointDescriptionReaderTracker = new ServiceTracker(

+							context,

+							IEndpointDescriptionReader.class.getName(), null);

+					endpointDescriptionReaderTracker.open();

+				}

+			}

+			return (IEndpointDescriptionReader) endpointDescriptionReaderTracker

+					.getService();

+		}

+

+		public Object addingBundle(Bundle bundle, BundleEvent event) {

+			handleAddingBundle(bundle);

+			return bundle;

+		}

+

+		private void handleAddingBundle(Bundle bundle) {

+			if (context == null)

+				return;

+			String remoteServicesHeaderValue = (String) bundle.getHeaders()

+					.get(REMOTESERVICE_MANIFESTHEADER);

+			if (remoteServicesHeaderValue != null) {

+				// First parse into comma-separated values

+				String[] paths = remoteServicesHeaderValue.split(","); //$NON-NLS-1$

+				if (paths != null)

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

+						handleEndpointDescriptionPath(bundle, paths[i]);

+			}

+		}

+

+		private void handleEndpointDescriptionPath(Bundle bundle,

+				String remoteServicesHeaderValue) {

+			// if it's empty, ignore

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

+				return;

+			Enumeration<URL> e = null;

+			// if it endswith a '/', then scan for *.xml files

+			if (remoteServicesHeaderValue.endsWith("/")) { //$NON-NLS-1$

+				e = bundle.findEntries(remoteServicesHeaderValue,

+						XML_FILE_PATTERN, false);

+			} else {

+				// Break into path and filename/pattern

+				int lastSlashIndex = remoteServicesHeaderValue.lastIndexOf('/');

+				if (lastSlashIndex == -1) {

+					// no slash...might be a file name or pattern, assumed to be

+					// at root of bundle

+					e = bundle.findEntries(

+							"/", remoteServicesHeaderValue, false); //$NON-NLS-1$

+				} else {

+					String path = remoteServicesHeaderValue.substring(0,

+							lastSlashIndex);

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

+						// path is empty so assume it's root

+						path = "/"; //$NON-NLS-1$

+					}

+					String filePattern = remoteServicesHeaderValue

+							.substring(lastSlashIndex + 1);

+					e = bundle.findEntries(path, filePattern, false);

+				}

+			}

+			// Now process any found

+			Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> endpointDescriptions = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();

+			if (e != null) {

+				while (e.hasMoreElements()) {

+					org.osgi.service.remoteserviceadmin.EndpointDescription[] eps = handleEndpointDescriptionFile(

+							bundle, e.nextElement());

+					if (eps != null)

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

+							endpointDescriptions.add(eps[i]);

+				}

+			}

+			// finally, handle them

+			if (endpointDescriptions.size() > 0) {

+				bundleDescriptionMap.put(new Long(bundle.getBundleId()),

+						endpointDescriptions);

+				for (org.osgi.service.remoteserviceadmin.EndpointDescription ed : endpointDescriptions)

+					localLocatorServiceListener.handleEndpointDescription(ed,

+							true);

+			}

+		}

+

+		private org.osgi.service.remoteserviceadmin.EndpointDescription[] handleEndpointDescriptionFile(

+				Bundle bundle, URL fileURL) {

+			InputStream ins = null;

+			try {

+				IEndpointDescriptionReader endpointDescriptionReader = getEndpointDescriptionReader();

+				if (endpointDescriptionReader == null)

+					throw new NullPointerException(

+							"No endpointDescriptionReader available for handleEndpointDescriptionFile fileURL=" //$NON-NLS-1$

+									+ fileURL);

+				ins = fileURL.openStream();

+				return endpointDescriptionReader.readEndpointDescriptions(ins);

+			} catch (Exception e) {

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

+						"Exception creating endpoint descriptions from fileURL=" //$NON-NLS-1$

+								+ fileURL, e);

+				return null;

+			} finally {

+				if (ins != null)

+					try {

+						ins.close();

+					} catch (IOException e) {

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

+								"Exception closing endpointDescription input fileURL=" //$NON-NLS-1$

+										+ fileURL, e);

+					}

+			}

+		}

+

+		private void logError(String method, String message, Throwable t) {

+			LogUtility.logError(method,

+					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),

+					new Status(IStatus.ERROR, Activator.PLUGIN_ID,

+							IStatus.ERROR, message, t));

+		}

+

+		public void modifiedBundle(Bundle bundle, BundleEvent event,

+				Object object) {

+		}

+

+		public void removedBundle(Bundle bundle, BundleEvent event,

+				Object object) {

+			handleRemovedBundle(bundle);

+		}

+

+		private void handleRemovedBundle(Bundle bundle) {

+			Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> endpointDescriptions = bundleDescriptionMap

+					.remove(new Long(bundle.getBundleId()));

+			if (endpointDescriptions != null)

+				for (org.osgi.service.remoteserviceadmin.EndpointDescription ed : endpointDescriptions)

+					localLocatorServiceListener.handleEndpointDescription(ed,

+							false);

+		}

+

+		public void close() {

+			synchronized (endpointDescriptionReaderTrackerLock) {

+				if (endpointDescriptionReaderTracker != null) {

+					endpointDescriptionReaderTracker.close();

+					endpointDescriptionReaderTracker = null;

+				}

+			}

+			bundleDescriptionMap.clear();

+		}

+	}

+

+	class LocatorServiceListener implements IServiceListener {

+

+		private Object listenerLock = new Object();

+		private IDiscoveryLocator locator;

+

+		private List<org.osgi.service.remoteserviceadmin.EndpointDescription> discoveredEndpointDescriptions = new ArrayList();

+

+		public LocatorServiceListener(IDiscoveryLocator locator) {

+			this.locator = locator;

+			if (locator != null)

+				this.locator.addServiceListener(this);

+		}

+

+		public void serviceDiscovered(IServiceEvent anEvent) {

+			handleService(anEvent.getServiceInfo(), true);

+		}

+

+		public void serviceUndiscovered(IServiceEvent anEvent) {

+			handleService(anEvent.getServiceInfo(), false);

+		}

+

+		private boolean matchServiceID(IServiceID serviceId) {

+			if (Arrays.asList(serviceId.getServiceTypeID().getServices())

+					.contains(RemoteConstants.DISCOVERY_SERVICE_TYPE))

+				return true;

+			return false;

+		}

+

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

+		}

+

+		private void handleOSGiServiceEndpoint(IServiceID serviceId,

+				IServiceInfo serviceInfo, boolean discovered) {

+			if (locator == null)

+				return;

+			DiscoveredEndpointDescription discoveredEndpointDescription = getDiscoveredEndpointDescription(

+					serviceId, serviceInfo, discovered);

+			if (discoveredEndpointDescription != null) {

+				handleEndpointDescription(

+						discoveredEndpointDescription.getEndpointDescription(),

+						discovered);

+			} else {

+				logWarning("handleOSGiServiceEvent", //$NON-NLS-1$

+						"discoveredEndpointDescription is null for service info=" //$NON-NLS-1$

+								+ serviceInfo + ",discovered=" + discovered); //$NON-NLS-1$

+			}

+		}

+

+		public void handleEndpointDescription(

+				org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+				boolean discovered) {

+			synchronized (listenerLock) {

+				if (discovered)

+					discoveredEndpointDescriptions.add(endpointDescription);

+				else

+					discoveredEndpointDescriptions.remove(endpointDescription);

+

+				queueEndpointDescription(endpointDescription, discovered);

+			}

+		}

+

+		public Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> getEndpointDescriptions() {

+			synchronized (listenerLock) {

+				Collection<org.osgi.service.remoteserviceadmin.EndpointDescription> result = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();

+				result.addAll(discoveredEndpointDescriptions);

+				return result;

+			}

+		}

+

+		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(),

+					message);

+		}

+

+		private void logError(String methodName, String message) {

+			logError(methodName, message, null);

+		}

+

+		private void logError(String methodName, String message, Throwable t) {

+			LogUtility.logError(methodName,

+					DebugOptions.ENDPOINT_DESCRIPTION_LOCATOR, this.getClass(),

+					message, t);

+		}

+

+		private DiscoveredEndpointDescription getDiscoveredEndpointDescription(

+				IServiceID serviceId, IServiceInfo serviceInfo,

+				boolean discovered) {

+			// Get IEndpointDescriptionFactory

+			final String methodName = "getDiscoveredEndpointDescription"; //$NON-NLS-1$

+			IDiscoveredEndpointDescriptionFactory factory = getDiscoveredEndpointDescriptionFactory();

+			if (factory == null) {

+				logError(

+						methodName,

+						"No IEndpointDescriptionFactory found, could not create EndpointDescription for " //$NON-NLS-1$

+								+ (discovered ? "discovered" : "undiscovered") //$NON-NLS-1$ //$NON-NLS-2$

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

+				return null;

+			}

+			try {

+				// Else get endpoint description factory to create

+				// EndpointDescription

+				// for given serviceID and serviceInfo

+				return (discovered) ? factory

+						.createDiscoveredEndpointDescription(locator,

+								serviceInfo)

+						: factory.removeDiscoveredEndpointDescription(locator,

+								serviceId);

+			} catch (Exception e) {

+				logError(

+						methodName,

+						"Exception calling IEndpointDescriptionFactory." //$NON-NLS-1$

+								+ ((discovered) ? "createDiscoveredEndpointDescription" //$NON-NLS-1$

+										: "getUndiscoveredEndpointDescription"), e); //$NON-NLS-1$

+				return null;

+			} catch (NoClassDefFoundError e) {

+				logError(

+						methodName,

+						"NoClassDefFoundError calling IEndpointDescriptionFactory." //$NON-NLS-1$

+								+ ((discovered) ? "createDiscoveredEndpointDescription" //$NON-NLS-1$

+										: "getUndiscoveredEndpointDescription"), e); //$NON-NLS-1$

+				return null;

+			}

+		}

+

+		public synchronized void close() {

+			if (locator != null) {

+				locator.removeServiceListener(this);

+				locator = null;

+			}

+			discoveredEndpointDescriptions.clear();

+		}

+	}

+}

diff --git a/incubation/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
similarity index 77%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionParseException.java
index b4aeb84..ab3fe2b 100644
--- a/incubation/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,10 +9,13 @@
  ******************************************************************************/

 package org.eclipse.ecf.osgi.services.remoteserviceadmin;

 

-import org.eclipse.core.runtime.IStatus;

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

-

-public class EndpointDescriptionParseException extends ECFException {

+/**

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

 

@@ -31,8 +34,4 @@
 		super(message, cause);

 	}

 

-	public EndpointDescriptionParseException(IStatus status) {

-		super(status);

-	}

-

 }

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
new file mode 100644
index 0000000..1197f12
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
@@ -0,0 +1,56 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.io.IOException;

+import java.io.InputStream;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Map;

+

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

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

+			InputStream input) throws IOException {

+		// First create parser

+		EndpointDescriptionParser parser = new EndpointDescriptionParser();

+		// Parse input stream

+		parser.parse(input);

+		// Get possible endpoint descriptions

+		List<EndpointDescriptionParser.EndpointDescription> parsedDescriptions = parser

+				.getEndpointDescriptions();

+		List<org.osgi.service.remoteserviceadmin.EndpointDescription> results = new ArrayList<org.osgi.service.remoteserviceadmin.EndpointDescription>();

+		// For each one parsed, get properties and

+		for (EndpointDescriptionParser.EndpointDescription ed : parsedDescriptions) {

+			Map parsedProperties = ed.getProperties();

+			try {

+				results.add(new EndpointDescription(parsedProperties));

+			} catch (Exception e) {

+				LogUtility.logError(

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

+						DebugOptions.ENDPOINT_DESCRIPTION_READER,

+						this.getClass(),

+						"Exception parsing endpoint description properties", e); //$NON-NLS-1$

+				throw new IOException("Error creating endpoint description: " //$NON-NLS-1$

+						+ e.getMessage());

+			}

+		}

+		return results.toArray(new EndpointDescription[results.size()]);

+	}

+

+}

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
new file mode 100644
index 0000000..82dc11c
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionWriter.java
@@ -0,0 +1,332 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.io.IOException;

+import java.io.Writer;

+import java.util.Iterator;

+import java.util.List;

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

+

+	protected List<String> xmlNames;

+

+	public EndpointDescriptionWriter() {

+		this(null);

+	}

+

+	public EndpointDescriptionWriter(List<String> xmlNames) {

+		this.xmlNames = xmlNames;

+	}

+

+	protected abstract class ComplexProperty {

+		private String name;

+		private Object value;

+

+		public ComplexProperty(String name, Object value) {

+			this.name = name;

+			this.value = value;

+		}

+

+		public abstract void writeProperty(int indentLevel, Writer writer)

+				throws IOException;

+

+		protected String getName() {

+			return name;

+		}

+

+		protected Object getValue() {

+			return value;

+		}

+	}

+

+	protected class XmlProperty extends ComplexProperty {

+		public XmlProperty(String name, String xml) {

+			super(name, xml);

+		}

+

+		void writeXml(int indentLevel, Writer writer) throws IOException {

+			indent(indentLevel, writer);

+			writer.append("<xml>"); //$NON-NLS-1$

+			newLine(writer);

+			indent(indentLevel + 1, writer);

+			writer.append((String) getValue());

+			newLine(writer);

+			indent(indentLevel, writer);

+			writer.append("</xml>"); //$NON-NLS-1$

+			newLine(writer);

+		}

+

+		public void writeProperty(int indentLevel, Writer writer)

+				throws IOException {

+			indent(indentLevel, writer);

+			writer.append("<property name=\"").append(getName()).append("\">"); //$NON-NLS-1$ //$NON-NLS-2$

+			newLine(writer);

+			writeXml(indentLevel + 1, writer);

+			writer.append("</property>"); //$NON-NLS-1$

+			newLine(writer);

+		}

+	}

+

+	protected abstract class MultiValueProperty extends ComplexProperty {

+		public MultiValueProperty(String name, Object value) {

+			super(name, value);

+		}

+

+		abstract String getValueType();

+

+		abstract void writePropertyValues(int indentLevel, Writer writer)

+				throws IOException;

+

+		public void writeProperty(int indentLevel, Writer writer)

+				throws IOException {

+			indent(indentLevel, writer);

+			writer.append("<property name=\"").append(getName()) //$NON-NLS-1$

+					.append("\" value-type=\"").append(getValueType()) //$NON-NLS-1$

+					.append("\">"); //$NON-NLS-1$

+			newLine(writer);

+			writePropertyValues(indentLevel + 1, writer);

+			indent(indentLevel, writer);

+			writer.append("</property>"); //$NON-NLS-1$

+			newLine(writer);

+		}

+

+		void writePropertyValue(int indentLevel, Object value, Writer writer)

+				throws IOException {

+			indent(indentLevel, writer);

+			writer.append("<value>").append(value.toString()) //$NON-NLS-1$

+					.append("</value>"); //$NON-NLS-1$

+			newLine(writer);

+		}

+

+	}

+

+	protected class SetProperty extends MultiValueProperty {

+		public SetProperty(String key, Set value) {

+			super(key, value);

+		}

+

+		public String getValueType() {

+			return EndpointDescriptionWriter.this

+					.getValueType(((Set) getValue()).iterator().next());

+		}

+

+		void writePropertyValues(int indentLevel, Writer writer)

+				throws IOException {

+			Set s = (Set) getValue();

+			indent(indentLevel, writer);

+			writer.append("<set>"); //$NON-NLS-1$

+			newLine(writer);

+			for (Iterator i = s.iterator(); i.hasNext();)

+				writePropertyValue(indentLevel + 1, i.next(), writer);

+			indent(indentLevel, writer);

+			writer.append("</set>"); //$NON-NLS-1$

+		}

+

+	}

+

+	protected class ListProperty extends MultiValueProperty {

+		public ListProperty(String key, List value) {

+			super(key, value);

+		}

+

+		public String getValueType() {

+			return EndpointDescriptionWriter.this

+					.getValueType(((List) getValue()).iterator().next());

+		}

+

+		void writePropertyValues(int indentLevel, Writer writer)

+				throws IOException {

+			List l = (List) getValue();

+			indent(indentLevel, writer);

+			writer.append("<list>"); //$NON-NLS-1$

+			newLine(writer);

+			for (Iterator i = l.iterator(); i.hasNext();)

+				writePropertyValue(indentLevel + 1, i.next(), writer);

+			indent(indentLevel, writer);

+			writer.append("</list>"); //$NON-NLS-1$

+			newLine(writer);

+		}

+	}

+

+	protected class ArrayProperty extends MultiValueProperty {

+		public ArrayProperty(String key, Object[] value) {

+			super(key, value);

+		}

+

+		public String getValueType() {

+			return EndpointDescriptionWriter.this

+					.getValueType(((Object[]) getValue())[0]);

+		}

+

+		void writePropertyValues(int indentLevel, Writer writer)

+				throws IOException {

+			Object[] a = (Object[]) getValue();

+			indent(indentLevel, writer);

+			writer.append("<array>"); //$NON-NLS-1$

+			newLine(writer);

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

+				writePropertyValue(indentLevel + 1, a[i], writer);

+			indent(indentLevel, writer);

+			writer.append("</array>"); //$NON-NLS-1$

+			newLine(writer);

+		}

+	}

+

+	public void writeEndpointDescriptions(

+			Writer writer,

+			org.osgi.service.remoteserviceadmin.EndpointDescription[] endpointDescriptions)

+			throws IOException {

+

+		indent(0, writer);

+		writer.append("<endpoint-descriptions xmlns=\"http://www.osgi.org/xmlns/rsa/v1.0.0\">"); //$NON-NLS-1$

+		newLine(writer);

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

+			writeEndpointDescription(1, writer, endpointDescriptions[i]);

+		indent(0, writer);

+		writer.append("</endpoint-descriptions>"); //$NON-NLS-1$

+		newLine(writer);

+	}

+

+	protected void writeEndpointDescription(

+			int indentLevel,

+			Writer writer,

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

+			throws IOException {

+		indent(indentLevel, writer);

+		writer.append("<endpoint-description>"); //$NON-NLS-1$

+		newLine(writer);

+		writeProperties(indentLevel, writer, endpointDescription);

+		indent(indentLevel, writer);

+		writer.append("</endpoint-description>"); //$NON-NLS-1$

+		newLine(writer);

+	}

+

+	protected void writeProperties(

+			int indentLevel,

+			Writer writer,

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

+			throws IOException {

+		Map<String, Object> properties = endpointDescription.getProperties();

+		for (String name : properties.keySet())

+			writeProperty(indentLevel + 1, writer, name, properties.get(name));

+	}

+

+	protected void writeProperty(int indentLevel, Writer writer, String name,

+			Object value) throws IOException {

+		if (value != null) {

+			ComplexProperty complexProperty = getComplexProperty(name, value);

+			if (complexProperty != null) {

+				complexProperty.writeProperty(indentLevel, writer);

+				return;

+			}

+			String valueType = getValueType(value);

+			if (valueType != null) {

+				writeValueProperty(indentLevel, name, valueType, value, writer);

+				return;

+			} else

+				writeUnknownProperty(indentLevel, writer, name, value);

+		}

+	}

+

+	protected void writeUnknownProperty(int indentLevel, Writer writer,

+			String name, Object value) {

+		// By default, do nothing

+	}

+

+	protected ComplexProperty getComplexProperty(String name, Object value) {

+		XmlProperty xmlProperty = getXmlProperty(name, value);

+		return (xmlProperty == null) ? getMultiValueProperty(name, value)

+				: xmlProperty;

+	}

+

+	protected XmlProperty getXmlProperty(String name, Object value) {

+		if (xmlNames != null && xmlNames.contains(name))

+			return new XmlProperty(name, (String) value);

+		return null;

+	}

+

+	protected void writeValueProperty(int indentLevel, String name,

+			String valueType, Object value, Writer writer) throws IOException {

+		indent(indentLevel, writer);

+		writer.append("<property name=\"").append(name) //$NON-NLS-1$

+				.append("\" value-type=\"").append(valueType) //$NON-NLS-1$

+				.append("\" value=\"").append(value.toString()).append("\"/>"); //$NON-NLS-1$ //$NON-NLS-2$

+		newLine(writer);

+	}

+

+	protected MultiValueProperty getMultiValueProperty(String key, Object value) {

+		if (value instanceof Set) {

+			Set s = (Set) value;

+			Object first = s.iterator().next();

+			if (first == null)

+				return null;

+			return new SetProperty(key, s);

+		} else if (value instanceof List) {

+			List l = (List) value;

+			Object first = l.get(0);

+			if (first == null)

+				return null;

+			return new ListProperty(key, l);

+		} else if (value.getClass().isArray()) {

+			Object[] a = (Object[]) value;

+			if (a.length == 0 || a[0] == null)

+				return null;

+			return new ArrayProperty(key, a);

+		}

+		return null;

+	}

+

+	protected String getValueType(Object value) {

+		// first determine if is array

+		if (value instanceof String)

+			return "String"; //$NON-NLS-1$

+		else if (value instanceof Long)

+			return "Long"; //$NON-NLS-1$

+		else if (value instanceof Double)

+			return "Double"; //$NON-NLS-1$

+		else if (value instanceof Float)

+			return "Float"; //$NON-NLS-1$

+		else if (value instanceof Integer)

+			return "Integer"; //$NON-NLS-1$

+		else if (value instanceof Byte)

+			return "Byte"; //$NON-NLS-1$

+		else if (value instanceof Character)

+			return "Character"; //$NON-NLS-1$

+		else if (value instanceof Boolean)

+			return "Boolean"; //$NON-NLS-1$

+		else if (value instanceof Short)

+			return "Short"; //$NON-NLS-1$

+		return null;

+	}

+

+	protected Writer newLine(Writer writer) throws IOException {

+		return writer.append("\n"); //$NON-NLS-1$

+	}

+

+	protected Writer indent(int indentLevel, Writer writer) throws IOException {

+		for (int i = 0; i < indentLevel; i++)

+			writer.append(indent);

+		return writer;

+	}

+

+}

diff --git a/incubation/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
similarity index 66%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
index 9a27e30..28873c1 100644
--- a/incubation/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 {

 

@@ -27,35 +32,47 @@
 		this.autoCreateContainer = autoCreateContainer;

 	}

 

-	public IRemoteServiceContainer[] selectHostContainers(

+	// 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
new file mode 100644
index 0000000..fce1ddb
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IConsumerContainerSelector.java
@@ -0,0 +1,52 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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.remoteservice.IRemoteServiceContainer;

+

+/**

+ * Consumer container selector service contract. When an ECF RemoteServiceAdmin

+ * instance is asked to import a service (i.e. via

+ * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+ * ), the RSA first gets an instance of this service via the service registry,

+ * and then uses it to select an ECF consumer container instance by calling

+ * {@link #selectConsumerContainer(EndpointDescription)}.

+ * <p>

+ * <p>

+ * The {@link IRemoteServiceContainer} returned is then used on the consumer

+ * side, to actually import the remote service.

+ * <p>

+ * <p>

+ * If no other instances of this service have been registered, a default

+ * instance of {@link ConsumerContainerSelector} will be used. Note that this

+ * default instance is registered with the lowest possible priority, so that if

+ * other {@link IConsumerContainerSelector} instances are registered, they will

+ * be preferred/used over the default.

+ * 

+ */

+public interface IConsumerContainerSelector {

+

+	/**

+	 * Select (or create and initialize) a consumer remote service container.

+	 * 

+	 * @param endpointDescription

+	 *            the endpoint description that has been discovered.

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

+			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
new file mode 100644
index 0000000..e2b9438
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IDiscoveredEndpointDescriptionFactory.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2010-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.discovery.IDiscoveryLocator;
+import org.eclipse.ecf.discovery.IServiceInfo;
+import org.eclipse.ecf.discovery.identity.IServiceID;
+
+/**
+ * Factory for creating {@link DiscoveredEndpointDescription}s. A discovered
+ * endpoint description factory is used by a {@link EndpointDescriptionLocator}
+ * to convert a service info (discovered by the locator) into a discovered
+ * endpoint description (instance of DiscoveredEndpointDescription). This
+ * discovered endpoint description is then used by the
+ * {@link EndpointDescriptionLocator} to notify endpoint description listeners
+ * as per section 122.6 of the <a
+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGi Enterprise
+ * Specification</a> OSGi enterprise specification.
+ * 
+ * <p>
+ * If no other instances of this service have been registered, a default
+ * 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
+ * customize/control this process of converting {@link IServiceInfo}s to
+ * {@link DiscoveredEndpointDescription} must
+ * <ul>
+ * <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.
+ * 
+ * @see IServiceInfoFactory
+ * 
+ */
+public interface IDiscoveredEndpointDescriptionFactory {
+
+	/**
+	 * Create an EndpointDescription for a discovered remote service.
+	 * Implementers of this factory service may return the type of
+	 * EndpointDescription appropriate for the associated distribution system
+	 * (e.g. ECFEndpointDescription). Implementers should return
+	 * <code>null</code> if no notification should occur.
+	 * 
+	 * @param locator
+	 *            the locator responsible for the discoveredServiceInfo. Must
+	 *            not be <code>null</code>.
+	 * @param discoveredServiceInfo
+	 *            the discovered service info. Must not be <code>null</code>.
+	 * @return DiscoveredEndpointDescription that will be used to notify
+	 *         EndpointListeners about a new EndpointDescription. If
+	 *         <code>null</code> is returned, no notification should be
+	 *         performed by the calling code.
+	 */
+	public DiscoveredEndpointDescription createDiscoveredEndpointDescription(
+			IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo);
+
+	/**
+	 * Remove an EndpointDescription for a previously discovered remote service.
+	 * Implementers of this factory service may return the type of
+	 * EndpointDescription appropriate for the associated distribution system
+	 * (e.g. ECFEndpointDescription). Implementers should return
+	 * <code>null</code> if no notification should occur.
+	 * 
+	 * @param locator
+	 *            the locator responsible for the discoveredServiceInfo. Must
+	 *            not be <code>null</code>.
+	 * @param serviceId
+	 *            the discovered service ID. Must not be <code>null</code>.
+	 * @return EndpointDescription that will be used to notify EndpointListeners
+	 *         about an undiscovered EndpointDescription. If <code>null</code>
+	 *         is returned, no notification should be performed by the calling
+	 *         code.
+	 */
+	public DiscoveredEndpointDescription removeDiscoveredEndpointDescription(
+			IDiscoveryLocator locator, IServiceID serviceID);
+
+	/**
+	 * Remove the DiscoveredEndpointDescription associated with the given
+	 * endpointDescription.
+	 * 
+	 * @param endpointDescription
+	 *            that was previously associated with a
+	 *            DiscoveredEndpointDescription (via
+	 *            {@link #createDiscoveredEndpointDescription(IDiscoveryLocator, IServiceInfo)}
+	 *            to be removed. Must not be <code>null</code>.
+	 * @return <code>true</code> if actually removed, <code>false</code> if
+	 *         nothing was removed.
+	 */
+	public boolean removeDiscoveredEndpointDescription(
+			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription);
+
+	/**
+	 * Remove all DiscoveredEndpointDescription from this factory.
+	 */
+	public void removeAllDiscoveredEndpointDescriptions();
+}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionAdvertiser.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionAdvertiser.java
new file mode 100644
index 0000000..2d59f78
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionAdvertiser.java
@@ -0,0 +1,80 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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.core.runtime.IStatus;

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

+

+/**

+ * Endpoint description advertiser service. TopologyManager consumers may use

+ * this service to advertise/publish endpoint descriptions for discovery.

+ * Typically, implementations of this service will use the ECF Discovery API to

+ * advertise/publish EndpointDescriptions over the network. For example, this is

+ * what {@link EndpointDescriptionAdvertiser} does...i.e. it

+ * advertises/unadvertises endpoint descriptions by calling and/all available

+ * instances of

+ * {@link org.eclipse.ecf.discovery.IDiscoveryAdvertiser#registerService(org.eclipse.ecf.discovery.IServiceInfo)}

+ * .

+ * <p>

+ * <p>

+ * Note, however, that other implementations of endpoint description advertisers

+ * are possible that do not use ECF Discovery...or use ECF Discovery in other

+ * ways. For example, some TopologyManagers may wish to advertise exported

+ * remote services by creating a static xml file describing the endpoint by

+ * using the Endpoint Description Extender Format (EDEF) described in section

+ * 122.8 of the <a

+ * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGi Enterprise

+ * Specification</a> by calling {@link #advertise(EndpointDescription)} on their

+ * own implementation of this service that uses an

+ * {@link EndpointDescriptionWriter} to create an EDEF bundle.

+ * <p>

+ * <p>

+ * If no other instances of this service have been registered, a default

+ * instance of {@link EndpointDescriptionAdvertiser} will be used. The default

+ * instance uses ECF {@link IDiscoveryAdvertiser}s to publish the endpoint

+ * description. Note that the default instance is registered with the lowest

+ * possible priority, so that if other {@link IEndpointDescriptionAdvertiser}

+ * instances are registered, they will be preferred/used over the default.

+ */

+public interface IEndpointDescriptionAdvertiser {

+

+	/**

+	 * Advertise/publish the given endpoint description.

+	 * 

+	 * @param endpointDescription

+	 *            the endpoint description to advertise. Must not be

+	 *            <code>null</code>.

+	 * @return IStatus to indicate the status of the advertisement. If the

+	 *         returned status returns <code>false</code> from

+	 *         {@link IStatus#isOK()}, then the advertisement failed. The

+	 *         IStatus can be further inspected for exception information and/or

+	 *         child statuses.

+	 * 

+	 * @see IStatus

+	 */

+	public IStatus advertise(EndpointDescription endpointDescription);

+

+	/**

+	 * Unadvertise/unpublishe the given endpoint description.

+	 * 

+	 * @param endpointDescription

+	 *            the endpoint description to unadvertise. Must not be

+	 *            <code>null</code>.

+	 * @return IStatus to indicate the status of the unadvertisement. If the

+	 *         returned status returns <code>false</code> from

+	 *         {@link IStatus#isOK()}, then the unadvertisement failed. The

+	 *         IStatus can be further inspected for exception information and/or

+	 *         child statuses.

+	 * 

+	 * @see IStatus

+	 */

+	public IStatus unadvertise(EndpointDescription endpointDescription);

+

+}

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
new file mode 100644
index 0000000..b12c9ff
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IEndpointDescriptionReader.java
@@ -0,0 +1,53 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.io.IOException;

+import java.io.InputStream;

+

+/**

+ * 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 (chapter 122)</a>. The InputStream provided must be of the EDEF

+ * format, otherwise an IOException or EndpointDescriptionParseException will be

+ * thrown.

+ * 

+ */

+public interface IEndpointDescriptionReader {

+

+	/**

+	 * Read endpoint descriptions from the given input stream. The ins parameter

+	 * must not be <code>null</code>, and must provide data 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>.

+	 * 

+	 * @param ins

+	 *            the input stream to read from. Must be non-<code>null</code>,

+	 *            and must provide data in the format specified the EDEF

+	 *            specification (see link above).

+	 * @return array of

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

+	 *         instance read from the given input stream.

+	 * 

+	 * @throws IOException

+	 *             if the inputstream does not have valid data in the EDE

+	 *             format. Note that the implementation of this method may call

+	 *             {@link InputStream#close()}.

+	 * 

+	 * @throws EndpointDescriptionParseException

+	 *             if the EDE format cannot be parsed from the input stream.

+	 */

+	public org.osgi.service.remoteserviceadmin.EndpointDescription[] readEndpointDescriptions(

+			InputStream ins) throws IOException,

+			EndpointDescriptionParseException;

+

+}

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
new file mode 100644
index 0000000..f7ecdf3
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IHostContainerSelector.java
@@ -0,0 +1,79 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.util.Map;

+

+import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;

+import org.osgi.framework.ServiceReference;

+

+/**

+ * Host container selector service contract. When an ECF RemoteServiceAdmin

+ * instance is asked to import a service (i.e. via

+ * {@link RemoteServiceAdmin#exportService(ServiceReference, java.util.Map)} ),

+ * the RSA first gets an instance of this service via the service registry, and

+ * then uses it to select an array of ECF host container instances by calling

+ * {@link #selectHostContainers(ServiceReference, String[], String[], String[])}

+ * .

+ * <p>

+ * <p>

+ * The {@link IRemoteServiceContainer} array returned is then used to actually

+ * export the remote service (typically via

+ * {@link IRemoteServiceContainerAdapter#registerRemoteService(String[], Object, java.util.Dictionary)}

+ * <p>

+ * <p>

+ * If no other instances of this service have been registered, a default

+ * instance of {@link HostContainerSelector} will be used. Note that this

+ * default instance is registered with the lowest possible priority, so that if

+ * other {@link IHostContainerSelector} instances are registered, they will be

+ * preferred/used over the default.

+ * 

+ */

+public interface IHostContainerSelector {

+	/**

+	 * 

+	 * Select host containers to use to export a remote service.

+	 * 

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

+	 *            ). Will not be <code>null</code>.

+	 * @param exportedConfigs

+	 *            the exportedConfigs (typically associated with

+	 *            {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_CONFIGS}

+	 *            ). May be <code>null</code>.

+	 * @param serviceIntents

+	 *            the service intents (typically associated with

+	 *            {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTENTS}

+	 *            and

+	 *            {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTENTS_EXTRA}

+	 *            ). May be <code>null</code>.

+	 * @return IRemoteServiceContainer[] of remote service containers that

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

+			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/IServiceInfoFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IServiceInfoFactory.java
new file mode 100644
index 0000000..5af66f5
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/IServiceInfoFactory.java
@@ -0,0 +1,88 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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.discovery.IDiscoveryAdvertiser;

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

+

+/**

+ * Service info factory service contract. A service info factory is used by the

+ * {@link EndpointDescriptionAdvertiser} to convert {@link EndpointDescription}s

+ * to {@link IServiceInfo} instances (via

+ * {@link #createServiceInfo(IDiscoveryAdvertiser, EndpointDescription)}. The

+ * resulting IServiceInfo instances are then used to by the

+ * {@link EndpointDescriptionAdvertiser} to publish the EndpointDescription

+ * metadata to a {@link IDiscoveryAdvertiser}.

+ * <p>

+ * <p>

+ * If no other instances of this service have been registered, a default

+ * instance of {@link ServiceInfoFactory} will be used by the

+ * {@link EndpointDescriptionAdvertiser}. Note that this default instance is

+ * registered with the lowest possible priority, so that if other

+ * {@link IServiceInfoFactory} instances are registered, they will be

+ * preferred/used over the default. This means that Those wishing to

+ * customize/control this process of converting {@link EndpointDescription}s to

+ * {@link IServiceInfo} must

+ * <ul>

+ * <li>create their own implementation of {@link IServiceInfoFactory}</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 EndpointDescriptionAdvertiser},

+ * the new service info factory will be used.

+ * 

+ * @see IDiscoveredEndpointDescriptionFactory

+ */

+public interface IServiceInfoFactory {

+

+	/**

+	 * Create an service info instance to represent the given

+	 * endpointDescription for discovery using the given discovery advertiser.

+	 * 

+	 * @param advertiser

+	 *            the advertiser to use for creating the service info result.

+	 *            Must not be <code>null</code>.

+	 * @param endpointDescription

+	 *            the endpoint description that the service info is to

+	 *            represent. Must not be <code>null</code>.

+	 * @return IServiceInfo to use to publish the endpointDescription for

+	 *         discovery (via

+	 *         {@link IDiscoveryAdvertiser#registerService(IServiceInfo)}. If a

+	 *         service info instance has previously been created for the given

+	 *         endpointDescription by this service info factory, then that

+	 *         serviceInfo will be returned in favor of creating a new one.

+	 *         Otherwise, a new service info will be created and returned. If

+	 *         some error occurs in the creation of the serviceInfo,

+	 *         <code>null</code> will be returned.

+	 */

+	public IServiceInfo createServiceInfo(IDiscoveryAdvertiser advertiser,

+			EndpointDescription endpointDescription);

+

+	/**

+	 * Remove any previously created service info that is associated with the

+	 * given endpointDescription (and advertiser).

+	 * 

+	 * @param advertiser

+	 *            the advertiser associated with the service info previously

+	 *            created. Must not be <code>null</code>.

+	 * @param endpointDescription

+	 *            the endpoint description that the service info was previously

+	 *            created for. Must not be <code>null</code>.

+	 * @return IServiceInfo to use to unpublish the endpointDescription for

+	 *         discovery (via

+	 *         {@link IDiscoveryAdvertiser#unregisterService(IServiceInfo)). If

+	 *         <code>null</code> no service info exists that had previously been

+	 *         created for the given endpointDescription and advertiser.

+	 */

+	public IServiceInfo removeServiceInfo(IDiscoveryAdvertiser advertiser,

+			EndpointDescription endpointDescription);

+

+}

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
new file mode 100644
index 0000000..86a73b5
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
@@ -0,0 +1,186 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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.IContainerFactory;

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

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

+import org.eclipse.ecf.discovery.identity.IServiceIDFactory;

+import org.eclipse.ecf.discovery.identity.IServiceTypeID;

+import org.eclipse.ecf.remoteservice.IRemoteService;

+

+/**

+ * ECF Remote Service Admin RemoteConstants. These are constants for ECF's RSA

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

+

+	private RemoteConstants() {

+		// not instantiable

+	}

+

+	/**

+	 * ECF discovery service type for Remote Service Admin. All ECF remote

+	 * services published by Remote Service Admin advertisers should have this

+	 * value as one of the entries in the list returned from

+	 * {@link IServiceTypeID#getServices()}.

+	 */

+	public static final String DISCOVERY_SERVICE_TYPE = "ecf.osgirsvc"; //$NON-NLS-1$

+	/**

+	 * ECF discovery scope property. Value type is String+. If set, the value

+	 * will be used by the {@link IServiceInfoFactory} during

+	 * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)}

+	 * to create an {@link IServiceTypeID} via

+	 * {@link IServiceIDFactory#createServiceTypeID(org.eclipse.ecf.core.identity.Namespace, String[], String[], String[], String)}

+	 * . The scopes value determines the third parameter. If not explicitly set,

+	 * the {@link IServiceTypeID#DEFAULT_SCOPE} is used.

+	 */

+	public static final String DISCOVERY_SCOPE = "ecf.endpoint.discovery.scope"; //$NON-NLS-1$

+	/**

+	 * ECF discovery protocols property. Value type is String+. If set, the

+	 * value will be used by the {@link IServiceInfoFactory} during

+	 * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)}

+	 * to create an {@link IServiceTypeID} via

+	 * {@link IServiceIDFactory#createServiceTypeID(org.eclipse.ecf.core.identity.Namespace, String[], String[], String[], String)}

+	 * . The protocols value determines the fourth parameter. If not explicitly

+	 * set, the {@link IServiceTypeID#DEFAULT_PROTO} is used.

+	 */

+	public static final String DISCOVERY_PROTOCOLS = "ecf.endpoint.discovery.protocols"; //$NON-NLS-1$

+	/**

+	 * ECF discovery naming authority property. Value type is String. If set,

+	 * the value will be used by the {@link IServiceInfoFactory} during

+	 * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)}

+	 * to create an {@link IServiceTypeID} via

+	 * {@link IServiceIDFactory#createServiceTypeID(org.eclipse.ecf.core.identity.Namespace, String[], String[], String[], String)}

+	 * . The protocols value determines the fifth parameter. If not explicitly

+	 * set, the {@link IServiceTypeID#DEFAULT_NA} is used.

+	 */

+	public static final String DISCOVERY_NAMING_AUTHORITY = "ecf.endpoint.discovery.namingauthority"; //$NON-NLS-1$

+	/**

+	 * ECF discovery service name property. Value type is String. If set, the

+	 * value will be used by the {@link IServiceInfoFactory} during

+	 * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)}

+	 * to create an {@link IServiceInfo} with a given name. The default is a

+	 * globally unique identifier. Note that if this value is explicitly set,

+	 * care should be taken to not have the name conflict with other remote

+	 * service names.

+	 */

+	public static final String DISCOVERY_SERVICE_NAME = "ecf.endpoint.discovery.servicename"; //$NON-NLS-1$

+	/**

+	 * ECF service name default prefix. If the DISCOVERY_SERVICE_NAME is

+	 * <b>not</b> set, this prefix will be the precede the unique identifier.

+	 */

+	public static final String DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX = "osgirsvc_"; //$NON-NLS-1$

+

+	/**

+	 * Optional ECF {@link EndpointDescription} property (with value of type

+	 * String) that defines the unique

+	 * {@link org.eclipse.ecf.core.identity.Namespace} name. If present in the

+	 * {@link EndpointDescription}, the value will be used to create the

+	 * containerID for accessing a remote service. The Namespace name is

+	 * optional because typically the ID protocol specifier (e.g. 'ecftcp' in ID

+	 * with name: 'ecftcp://localhost:3282/server') can be used to unambiguously

+	 * determine the appropriate {@link org.eclipse.ecf.core.identity.Namespace}

+	 * used to create the container ID for remote service import.

+	 */

+	public static final String ENDPOINT_CONTAINER_ID_NAMESPACE = "ecf.endpoint.id.ns"; //$NON-NLS-1$

+	/**

+	 * Optional ECF {@link EndpointDescription} property (with value of type

+	 * String) that defines a connect target ID. If set/non-<code>null</code>,

+	 * this property can be used by remote service consumers to connect to a

+	 * specific container, and access a remote service exposed by some

+	 * <b>other</b> member of the group.

+	 */

+	public static final String ENDPOINT_CONNECTTARGET_ID = "ecf.endpoint.connecttarget.id"; //$NON-NLS-1$

+	/**

+	 * Optional ECF {@link EndpointDescription} property (with value of type

+	 * String+) that defines one or more IDs used for filtering remote service

+	 * references during

+	 * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+	 * .

+	 */

+	public static final String ENDPOINT_IDFILTER_IDS = "ecf.endpoint.idfilter.ids"; //$NON-NLS-1$

+	/**

+	 * Optional ECF {@link EndpointDescription} property (with value of type

+	 * String), that defines a remote services properties filter used during

+	 * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)}

+	 * .

+	 */

+	public static final String ENDPOINT_REMOTESERVICE_FILTER = "ecf.endpoint.rsfilter"; //$NON-NLS-1$

+

+	/**

+	 * Container factory arguments for exported remote service hosts. If

+	 * specified as a service property upon remote service registration, this

+	 * property allows ECF containers to be initialized and configured upon

+	 * creation during the call to

+	 * {@link HostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference, String[], String[], String[])}

+	 * . The type of the value may be String, ID, or Object[]. The

+	 * IContainerFactory.createContainer method is then selected based upon the

+	 * type of the value...i.e.

+	 * {@link IContainerFactory#createContainer(org.eclipse.ecf.core.ContainerTypeDescription, String)}

+	 * ,

+	 * {@link IContainerFactory#createContainer(org.eclipse.ecf.core.identity.ID)}

+	 * , or {@link IContainerFactory#createContainer(String, Object[])}, and the

+	 * value is passed in for container creation.

+	 */

+	public static final String SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS = "ecf.exported.containerfactoryargs"; //$NON-NLS-1$

+	/**

+	 * Container connect context for exported remote service hosts. If specified

+	 * as a service property for remote service export, this property allows ECF

+	 * containers to have given a connect context for authentication upon

+	 * container connection by

+	 * {@link HostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference, String[], String[], String[])}

+	 * . The type of the value is {@link IConnectContext}.

+	 */

+	public static final String SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT = "ecf.exported.containerconnectcontext"; //$NON-NLS-1$

+	/**

+	 * Container ID of the target host container for remote service export. If

+	 * specified as a service property for remote service export, this property

+	 * is used to match against the set of available containers in

+	 * {@link HostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference, String[], String[], String[])}

+	 * . The type of the value is {@link ID}.

+	 */

+	public static final String SERVICE_EXPORTED_CONTAINER_ID = "ecf.exported.containerid"; //$NON-NLS-1$

+

+	/**

+	 * Allows exporting ECF containers to determine the type of value associated

+	 * with the

+	 * {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_IMPORTED}

+	 * property on the OSGi remote service consumer. For ECF, the default value

+	 * type is {@link IRemoteService}. If set to some other value (e.g.

+	 * {@link Boolean} by the exporting host container, then consumers can use

+	 * 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
new file mode 100644
index 0000000..e8a68f4
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteReferenceNotFoundException.java
@@ -0,0 +1,68 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.util.Arrays;

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

+

+	private ID targetID;

+	private ID[] idFilter;

+	private Collection<String> interfaces;

+	private String rsFilter;

+

+	public RemoteReferenceNotFoundException(ID targetID, ID[] idFilter,

+			Collection<String> interfaces, String rsFilter) {

+		this.targetID = targetID;

+		this.idFilter = idFilter;

+		this.interfaces = interfaces;

+		this.rsFilter = rsFilter;

+	}

+

+	public ID getTargetID() {

+		return targetID;

+	}

+

+	public ID[] getIdFilter() {

+		return idFilter;

+	}

+

+	public Collection<String> getInterfaces() {

+		return interfaces;

+	}

+

+	public String getRsFilter() {

+		return rsFilter;

+	}

+

+	public String toString() {

+		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
new file mode 100644
index 0000000..49673bc
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
@@ -0,0 +1,2177 @@
+/*******************************************************************************

+ * Copyright (c) 2010-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 java.util.ArrayList;

+import java.util.Arrays;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Date;

+import java.util.Dictionary;

+import java.util.HashMap;

+import java.util.HashSet;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+import java.util.Properties;

+import java.util.Set;

+import java.util.TreeMap;

+

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

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

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

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

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

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

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;

+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;

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

+import org.eclipse.ecf.remoteservice.IOSGiRemoteServiceContainerAdapter;

+import org.eclipse.ecf.remoteservice.IRemoteService;

+import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;

+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.events.IRemoteServiceUnregisteredEvent;

+import org.osgi.framework.Bundle;

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.BundleException;

+import org.osgi.framework.Constants;

+import org.osgi.framework.FrameworkUtil;

+import org.osgi.framework.InvalidSyntaxException;

+import org.osgi.framework.ServiceException;

+import org.osgi.framework.ServiceFactory;

+import org.osgi.framework.ServiceReference;

+import org.osgi.framework.ServiceRegistration;

+import org.osgi.framework.Version;

+import org.osgi.framework.wiring.BundleCapability;

+import org.osgi.framework.wiring.BundleRevision;

+import org.osgi.framework.wiring.BundleWire;

+import org.osgi.framework.wiring.BundleWiring;

+import org.osgi.service.event.Event;

+import org.osgi.service.event.EventAdmin;

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

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

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

+

+/**

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

+

+	public static final String SERVICE_PROP = "org.eclipse.ecf.rsa"; //$NON-NLS-1$

+

+	private Bundle clientBundle;

+

+	private boolean hostAutoCreateContainer = new Boolean(

+			System.getProperty(

+					"org.eclipse.ecf.osgi.services.remoteserviceadmin.hostAutoCreateContainer", //$NON-NLS-1$

+					"true")).booleanValue(); //$NON-NLS-1$

+	private String[] hostDefaultConfigTypes = new String[] { System

+			.getProperty(

+					"org.eclipse.ecf.osgi.services.remoteserviceadmin.hostDefaultConfigType", //$NON-NLS-1$

+					"ecf.generic.server") }; //$NON-NLS-1$

+

+	private boolean consumerAutoCreateContainer = new Boolean(

+			System.getProperty(

+					"org.eclipse.ecf.osgi.services.remoteserviceadmin.consumerAutoCreateContainer", //$NON-NLS-1$

+					"true")).booleanValue(); //$NON-NLS-1$

+

+	private ServiceTracker packageAdminTracker;

+	private Object packageAdminTrackerLock = new Object();

+

+	private Object eventAdminTrackerLock = new Object();

+	private ServiceTracker eventAdminTracker;

+

+	private Object remoteServiceAdminListenerTrackerLock = new Object();

+	private ServiceTracker remoteServiceAdminListenerTracker;

+

+	private HostContainerSelector defaultHostContainerSelector;

+	private ServiceRegistration defaultHostContainerSelectorRegistration;

+

+	private ConsumerContainerSelector defaultConsumerContainerSelector;

+	private ServiceRegistration defaultConsumerContainerSelectorRegistration;

+

+	private Collection<ExportRegistration> exportedRegistrations = new ArrayList<ExportRegistration>();

+	private Collection<ImportRegistration> importedRegistrations = new ArrayList<ImportRegistration>();

+

+	public RemoteServiceAdmin(Bundle clientBundle) {

+		this.clientBundle = clientBundle;

+		Assert.isNotNull(this.clientBundle);

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

+		props.put(org.osgi.framework.Constants.SERVICE_RANKING, new Integer(

+				Integer.MIN_VALUE));

+		// host container selector

+		ServiceReference[] hostContainerSelectorRefs = null;

+		try {

+			hostContainerSelectorRefs = getClientBundleContext()

+					.getServiceReferences(

+							IHostContainerSelector.class.getName(), null);

+		} catch (InvalidSyntaxException e) {

+			// will not happen

+		}

+		// register a default only if no others already exist

+		if (hostContainerSelectorRefs == null

+				|| hostContainerSelectorRefs.length == 0) {

+			defaultHostContainerSelector = new HostContainerSelector(

+					hostDefaultConfigTypes, hostAutoCreateContainer);

+			defaultHostContainerSelectorRegistration = getClientBundleContext()

+					.registerService(IHostContainerSelector.class.getName(),

+							defaultHostContainerSelector, (Dictionary) props);

+		}

+		// consumer container selector

+		ServiceReference[] consumerContainerSelectorRefs = null;

+		try {

+			consumerContainerSelectorRefs = getClientBundleContext()

+					.getServiceReferences(

+							IConsumerContainerSelector.class.getName(), null);

+		} catch (InvalidSyntaxException e) {

+			// will not happen

+		}

+		// register a default only if no others already exist

+		if (consumerContainerSelectorRefs == null

+				|| consumerContainerSelectorRefs.length == 0) {

+			defaultConsumerContainerSelector = new ConsumerContainerSelector(

+					consumerAutoCreateContainer);

+			defaultConsumerContainerSelectorRegistration = getClientBundleContext()

+					.registerService(

+							IConsumerContainerSelector.class.getName(),

+							defaultConsumerContainerSelector,

+							(Dictionary) props);

+		}

+	}

+

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

+			Map<String, ?> overridingProperties) {

+

+		trace("exportService", "serviceReference=" + serviceReference //$NON-NLS-1$ //$NON-NLS-2$

+				+ ",properties=" + overridingProperties); //$NON-NLS-1$

+

+		overridingProperties = PropertiesUtil.mergeProperties(serviceReference,

+				overridingProperties == null ? Collections.EMPTY_MAP

+						: overridingProperties);

+

+		// First get exported interfaces

+		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

+				.getStringArrayFromPropertyValue(overridingProperties

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

+		if (exportedConfigs == null) {

+			exportedConfigs = PropertiesUtil

+					.getStringArrayFromPropertyValue(serviceReference

+							.getProperty(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_EXPORTED_CONFIGS));

+		}

+		// Get all intents (service.intents, service.exported.intents,

+		// service.exported.intents.extra)

+		String[] serviceIntents = PropertiesUtil.getServiceIntents(

+				serviceReference, overridingProperties);

+

+		// Get a host container selector, and use it to

+		IHostContainerSelector hostContainerSelector = getHostContainerSelector();

+		// select ECF remote service containers that match given exported

+		// interfaces, configs, and intents

+		IRemoteServiceContainer[] rsContainers = null;

+		try {

+			rsContainers = hostContainerSelector.selectHostContainers(

+					serviceReference, (Map<String,Object>) overridingProperties, exportedInterfaces,

+					exportedConfigs, serviceIntents);

+		} catch (SelectContainerException e) {

+			ExportRegistration errorRegistration = createErrorExportRegistration(

+					serviceReference, (Map<String,Object>) 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) {

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

+		synchronized (exportedRegistrations) {

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

+				ExportRegistration exportRegistration = null;

+				// If we've already got an export endpoint

+				// for this service reference/containerID combination,

+				// then create an ExportRegistration that uses the endpoint

+				ExportEndpoint exportEndpoint = findExistingExportEndpoint(

+						serviceReference, rsContainers[i].getContainer()

+								.getID());

+				// If we've already got one, then create a new

+				// ExportRegistration for it and we're done

+				if (exportEndpoint != null)

+					exportRegistration = new ExportRegistration(exportEndpoint);

+				else {

+					Map endpointDescriptionProperties = createExportEndpointDescriptionProperties(

+							serviceReference, (Map<String,Object>) overridingProperties,

+							exportedInterfaces, serviceIntents, rsContainers[i]);

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

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

+		for (ExportRegistration exportReg : exportRegistrations)

+			publishExportEvent(exportReg);

+		// and return

+		return new ArrayList<org.osgi.service.remoteserviceadmin.ExportRegistration>(

+				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) {

+

+		trace("importService", "endpointDescription=" + endpointDescription); //$NON-NLS-1$ //$NON-NLS-2$

+		// First, make sure that the client bundle has the IMPORT endpoint

+		// permission

+		checkEndpointPermission(endpointDescription, EndpointPermission.IMPORT);

+

+		EndpointDescription ed = null;

+		if (endpointDescription instanceof EndpointDescription)

+			ed = (EndpointDescription) endpointDescription;

+		else

+			ed = new EndpointDescription(endpointDescription.getProperties());

+

+		// Now get IConsumerContainerSelector, to select the ECF container

+		// for the given endpointDescription

+		IConsumerContainerSelector consumerContainerSelector = getConsumerContainerSelector();

+		// If there is none, then we can go no further

+		if (consumerContainerSelector == null) {

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

+					"No defaultConsumerContainerSelector available"); //$NON-NLS-1$

+			return null;

+		}

+		// Select the rsContainer to handle the endpoint description

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

+					"importService", "No remote service container selected for endpoint=" //$NON-NLS-1$ //$NON-NLS-2$

+							+ endpointDescription

+							+ ". Remote service NOT IMPORTED"); //$NON-NLS-1$

+			return null;

+		}

+		// If one selected then import the service to create an import

+		// registration

+		ImportRegistration importRegistration = null;

+		synchronized (importedRegistrations) {

+			ImportEndpoint importEndpoint = findImportEndpoint(ed);

+			if (importEndpoint != null)

+				importRegistration = new ImportRegistration(importEndpoint);

+			else {

+				importRegistration = importService(ed, rsContainer);

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

+					addImportRegistration(importRegistration);

+			}

+		}

+		// publish import event

+		publishImportEvent(importRegistration);

+		// Finally, return the importRegistration. It may be null or not.

+		return importRegistration;

+	}

+

+	public Collection<org.osgi.service.remoteserviceadmin.ExportReference> getExportedServices() {

+		Collection<org.osgi.service.remoteserviceadmin.ExportReference> results = new ArrayList<org.osgi.service.remoteserviceadmin.ExportReference>();

+		synchronized (exportedRegistrations) {

+			for (ExportRegistration reg : exportedRegistrations) {

+				org.osgi.service.remoteserviceadmin.ExportReference eRef = reg

+						.getExportReference();

+				if (eRef != null

+						&& checkEndpointPermissionRead("getExportedServices", //$NON-NLS-1$

+								eRef.getExportedEndpoint()))

+					results.add(eRef);

+			}

+		}

+		return results;

+	}

+

+	public Collection<org.osgi.service.remoteserviceadmin.ImportReference> getImportedEndpoints() {

+		Collection<org.osgi.service.remoteserviceadmin.ImportReference> results = new ArrayList<org.osgi.service.remoteserviceadmin.ImportReference>();

+		synchronized (importedRegistrations) {

+			for (ImportRegistration reg : importedRegistrations) {

+				org.osgi.service.remoteserviceadmin.ImportReference iRef = reg

+						.getImportReference();

+				if (iRef != null

+						&& checkEndpointPermissionRead("getImportedEndpoints", //$NON-NLS-1$

+								iRef.getImportedEndpoint()))

+					results.add(iRef);

+			}

+		}

+		return results;

+	}

+

+	// end RemoteServiceAdmin service interface impl methods

+

+	private boolean checkEndpointPermissionRead(

+			String methodName,

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

+		try {

+			checkEndpointPermission(endpointDescription,

+					EndpointPermission.READ);

+			return true;

+		} catch (SecurityException e) {

+			logError(methodName,

+					"permission check failed for read access to endpointDescription=" //$NON-NLS-1$

+							+ endpointDescription, e);

+			return false;

+		}

+	}

+

+	private BundleContext getClientBundleContext() {

+		return clientBundle.getBundleContext();

+	}

+

+	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=" //$NON-NLS-1$ //$NON-NLS-2$

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

+					+ importedRegistrations);

+		}

+	}

+

+	private void addExportRegistration(ExportRegistration exportRegistration) {

+		synchronized (exportedRegistrations) {

+			exportedRegistrations.add(exportRegistration);

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

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

+					+ exportedRegistrations);

+		}

+	}

+

+	private boolean removeExportRegistration(

+			ExportRegistration exportRegistration) {

+		synchronized (exportedRegistrations) {

+			boolean removed = exportedRegistrations.remove(exportRegistration);

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

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

+					+ exportedRegistrations + " removed=" + removed); //$NON-NLS-1$

+			return removed;

+		}

+	}

+

+	private boolean removeImportRegistration(

+			ImportRegistration importRegistration) {

+		synchronized (importedRegistrations) {

+			boolean removed = importedRegistrations.remove(importRegistration);

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

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

+					+ importedRegistrations + " removed=" + removed); //$NON-NLS-1$

+			return removed;

+		}

+	}

+

+	private void closeDefaultContainerSelectors() {

+		if (defaultHostContainerSelectorRegistration != null) {

+			defaultHostContainerSelectorRegistration.unregister();

+			defaultHostContainerSelectorRegistration = null;

+		}

+		if (defaultHostContainerSelector != null) {

+			defaultHostContainerSelector.close();

+			defaultHostContainerSelector = null;

+		}

+		if (defaultConsumerContainerSelectorRegistration != null) {

+			defaultConsumerContainerSelectorRegistration.unregister();

+			defaultConsumerContainerSelectorRegistration = null;

+		}

+		if (defaultConsumerContainerSelector != null) {

+			defaultConsumerContainerSelector.close();

+			defaultConsumerContainerSelector = null;

+		}

+	}

+

+	private void checkEndpointPermission(

+			org.osgi.service.remoteserviceadmin.EndpointDescription endpointDescription,

+			String permissionType) throws SecurityException {

+		SecurityManager sm = System.getSecurityManager();

+		if (sm == null)

+			return;

+		sm.checkPermission(new EndpointPermission(endpointDescription,

+				Activator.getDefault().getFrameworkUUID(), permissionType));

+	}

+

+	class ExportEndpoint {

+

+		private ServiceReference serviceReference;

+		private EndpointDescription endpointDescription;

+

+		private IRemoteServiceRegistration rsRegistration;

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

+

+		ExportEndpoint(ServiceReference serviceReference,

+				EndpointDescription endpointDescription,

+				IRemoteServiceRegistration reg) {

+			Assert.isNotNull(serviceReference);

+			this.serviceReference = serviceReference;

+			Assert.isNotNull(endpointDescription);

+			this.endpointDescription = endpointDescription;

+			Assert.isNotNull(reg);

+			this.rsRegistration = reg;

+		}

+

+		synchronized ID getContainerID() {

+			return endpointDescription.getContainerID();

+		}

+

+		synchronized ServiceReference getServiceReference() {

+			return serviceReference;

+		}

+

+		synchronized EndpointDescription getEndpointDescription() {

+			return endpointDescription;

+		}

+

+		synchronized IRemoteServiceRegistration getRemoteServiceRegistration() {

+			return rsRegistration;

+		}

+

+		synchronized boolean addExportRegistration(

+				ExportRegistration exportRegistration) {

+			return this.activeExportRegistrations.add(exportRegistration);

+		}

+

+		synchronized boolean close(ExportRegistration exportRegistration) {

+			boolean removed = this.activeExportRegistrations

+					.remove(exportRegistration);

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

+				if (rsRegistration != null) {

+					rsRegistration.unregister();

+					rsRegistration = null;

+				}

+				serviceReference = null;

+				endpointDescription = null;

+			}

+			return removed;

+		}

+	}

+

+	class ExportRegistration implements

+			org.osgi.service.remoteserviceadmin.ExportRegistration {

+

+		private ExportReference exportReference;

+

+		private boolean closed = false;

+

+		ExportRegistration(ExportEndpoint exportEndpoint) {

+			Assert.isNotNull(exportEndpoint);

+			exportEndpoint.addExportRegistration(this);

+			this.exportReference = new ExportReference(exportEndpoint);

+		}

+

+		ExportRegistration(Throwable exception,

+				EndpointDescription errorEndpointDescription) {

+			Assert.isNotNull(exception);

+			this.exportReference = new ExportReference(exception,

+					errorEndpointDescription);

+			this.closed = true;

+		}

+

+		ID getContainerID() {

+			return exportReference.getContainerID();

+		}

+

+		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 exportReference;

+		}

+

+		boolean match(ServiceReference serviceReference) {

+			return match(serviceReference, null);

+		}

+

+		boolean match(ServiceReference serviceReference,

+				ID containerID) {

+			ServiceReference ourServiceReference = getServiceReference();

+			if (ourServiceReference == null)

+				return false;

+			boolean serviceReferenceCompare = ourServiceReference

+					.equals(serviceReference);

+			// If the second parameter is null, then we compare only on service

+			// references

+			if (containerID == null)

+				return serviceReferenceCompare;

+			ID ourContainerID = getContainerID();

+			if (ourContainerID == null)

+				return false;

+			return serviceReferenceCompare

+					&& ourContainerID.equals(containerID);

+		}

+

+		synchronized ExportEndpoint getExportEndpoint(

+				ServiceReference serviceReference, ID containerID) {

+			return match(serviceReference, containerID) ? exportReference

+					.getExportEndpoint() : null;

+		}

+

+		IRemoteServiceRegistration getRemoteServiceRegistration() {

+			return exportReference.getRemoteServiceRegistration();

+		}

+

+		EndpointDescription getEndpointDescription() {

+			return exportReference.getEndpointDescription();

+		}

+

+		public void close() {

+			boolean publish = false;

+			ID containerID = null;

+			Throwable exception = null;

+			EndpointDescription endpointDescription = null;

+			synchronized (this) {

+				// Only do this once

+				if (!closed) {

+					containerID = getContainerID();

+					exception = getException();

+					endpointDescription = getEndpointDescription();

+					publish = exportReference.close(this);

+					closed = true;

+				}

+			}

+			removeExportRegistration(this);

+			Bundle rsaBundle = getRSABundle();

+			// Only publish events

+			if (publish && rsaBundle != null)

+				publishEvent(new RemoteServiceAdminEvent(containerID,

+						RemoteServiceAdminEvent.EXPORT_UNREGISTRATION,

+						rsaBundle, exportReference, exception),

+						endpointDescription);

+		}

+

+		public Throwable getException() {

+			return exportReference.getException();

+		}

+

+	}

+

+	class ExportReference implements

+			org.osgi.service.remoteserviceadmin.ExportReference {

+

+		private ExportEndpoint exportEndpoint;

+

+		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 (exportEndpoint == null) ? null : exportEndpoint

+					.getServiceReference();

+		}

+

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

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

+					.getEndpointDescription();

+		}

+

+		synchronized EndpointDescription getEndpointDescription() {

+			return (exportEndpoint == null) ? errorEndpointDescription

+					: exportEndpoint.getEndpointDescription();

+		}

+

+	}

+

+	class ImportEndpoint {

+

+		private IRemoteServiceContainerAdapter rsContainerAdapter;

+		private EndpointDescription endpointDescription;

+		private IRemoteServiceListener rsListener;

+		private IRemoteServiceReference rsReference;

+		private ServiceRegistration proxyRegistration;

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

+

+		ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,

+				IRemoteServiceReference rsReference,

+				IRemoteServiceListener rsListener,

+				ServiceRegistration proxyRegistration,

+				EndpointDescription endpointDescription) {

+			this.rsContainerAdapter = rsContainerAdapter;

+			this.endpointDescription = endpointDescription;

+			this.rsReference = rsReference;

+			this.rsListener = rsListener;

+			this.proxyRegistration = proxyRegistration;

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

+			this.rsContainerAdapter.addRemoteServiceListener(this.rsListener);

+		}

+

+		synchronized EndpointDescription getEndpointDescription() {

+			return endpointDescription;

+		}

+

+		synchronized ServiceRegistration getProxyRegistration() {

+			return proxyRegistration;

+		}

+

+		synchronized ID getContainerID() {

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

+		}

+

+		synchronized boolean addImportRegistration(

+				ImportRegistration importRegistration) {

+			return this.activeImportRegistrations.add(importRegistration);

+		}

+

+		synchronized boolean close(ImportRegistration importRegistration) {

+			boolean removed = this.activeImportRegistrations

+					.remove(importRegistration);

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

+				if (proxyRegistration != null) {

+					proxyRegistration.unregister();

+					proxyRegistration = null;

+				}

+				if (rsContainerAdapter != null) {

+					if (rsReference != null) {

+						rsContainerAdapter.ungetRemoteService(rsReference);

+						rsReference = null;

+					}

+					// remove remote service listener

+					if (rsListener != null) {

+						rsContainerAdapter

+								.removeRemoteServiceListener(rsListener);

+						rsListener = null;

+					}

+					rsContainerAdapter = null;

+				}

+				endpointDescription = null;

+			}

+			return removed;

+		}

+

+		synchronized boolean match(IRemoteServiceID remoteServiceID) {

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

+				return false;

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

+		}

+

+		synchronized boolean match(EndpointDescription ed) {

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

+				return false;

+			return this.endpointDescription.isSameService(ed);

+		}

+

+	}

+

+	class ImportRegistration implements

+			org.osgi.service.remoteserviceadmin.ImportRegistration {

+

+		private ImportReference importReference;

+

+		private boolean closed = false;

+

+		ImportRegistration(ImportEndpoint importEndpoint) {

+			Assert.isNotNull(importEndpoint);

+			importEndpoint.addImportRegistration(this);

+			this.importReference = new ImportReference(importEndpoint);

+		}

+

+		ImportRegistration(EndpointDescription errorEndpointDescription,

+				Throwable exception) {

+			this.importReference = new ImportReference(

+					errorEndpointDescription, exception);

+		}

+

+		ID getContainerID() {

+			return importReference.getContainerID();

+		}

+

+		EndpointDescription getEndpointDescription() {

+			return importReference.getEndpointDescription();

+		}

+

+		boolean match(IRemoteServiceID remoteServiceID) {

+			return importReference.match(remoteServiceID);

+		}

+

+		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 importReference;

+		}

+

+		public void close() {

+			boolean publish = false;

+			ID containerID = null;

+			Throwable exception = null;

+			EndpointDescription endpointDescription = null;

+			synchronized (this) {

+				// only do this once

+				if (!closed) {

+					containerID = getContainerID();

+					exception = getException();

+					endpointDescription = getEndpointDescription();

+					publish = importReference.close(this);

+					closed = true;

+				}

+			}

+			removeImportRegistration(this);

+			Bundle rsaBundle = getRSABundle();

+			if (publish && rsaBundle != null)

+				publishEvent(

+						new RemoteServiceAdminEvent(

+								containerID,

+								RemoteServiceAdminEvent.IMPORT_UNREGISTRATION,

+								rsaBundle, importReference, exception),

+						endpointDescription);

+

+		}

+

+		public Throwable getException() {

+			return importReference.getException();

+		}

+

+	}

+

+	class ImportReference implements

+			org.osgi.service.remoteserviceadmin.ImportReference {

+

+		private ImportEndpoint importEndpoint;

+

+		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 (importEndpoint == null) ? null : importEndpoint

+					.getProxyRegistration().getReference();

+		}

+

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

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

+					.getEndpointDescription();

+		}

+

+		synchronized boolean close(ImportRegistration importRegistration) {

+			if (importEndpoint == null)

+				return false;

+			boolean result = importEndpoint.close(importRegistration);

+			importEndpoint = null;

+			return result;

+		}

+

+	}

+

+	private void publishEvent(RemoteServiceAdminEvent event,

+			EndpointDescription endpointDescription) {

+		// send event synchronously to RemoteServiceAdminListeners

+		EndpointPermission perm = new EndpointPermission(endpointDescription,

+				Activator.getDefault().getFrameworkUUID(),

+				EndpointPermission.READ);

+		// notify synchronously all appropriate listeners (those with READ

+		// permission)

+		RemoteServiceAdminListener[] listeners = getListeners(perm);

+		if (listeners != null)

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

+				listeners[i].remoteAdminEvent(event);

+		// Now also post the event asynchronously to EventAdmin

+		postEvent(event, endpointDescription);

+	}

+

+	private void postEvent(RemoteServiceAdminEvent event,

+			EndpointDescription endpointDescription) {

+		EventAdmin eventAdmin = getEventAdmin();

+		if (eventAdmin == null) {

+			//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) {

+			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 = 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("bundle", rsaBundle); //$NON-NLS-1$

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

+				new Long(rsaBundle.getBundleId()));

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

+				rsaBundle.getSymbolicName());

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

+		String[] signers = getSignersForBundle(clientBundle);

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

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

+		Throwable t = event.getException();

+		if (t != null)

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

+		long serviceId = endpointDescription.getServiceId();

+		if (serviceId != 0)

+			eventProperties

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

+							new Long(serviceId));

+		String frameworkUUID = endpointDescription.getFrameworkUUID();

+		if (frameworkUUID != null)

+			eventProperties

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

+							frameworkUUID);

+		String endpointId = endpointDescription.getId();

+		if (endpointId != null)

+			eventProperties

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

+							endpointId);

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

+		if (interfaces != null && interfaces.size() > 0)

+			eventProperties.put(org.osgi.framework.Constants.OBJECTCLASS,

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

+		List<String> importedConfigs = endpointDescription

+				.getConfigurationTypes();

+		if (importedConfigs != null && importedConfigs.size() > 0)

+			eventProperties

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

+							importedConfigs.toArray(new String[importedConfigs

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

+

+	}

+

+	private String[] getSignersForBundle(Bundle bundle) {

+		List<String> result = new ArrayList<String>();

+		Map signers = bundle.getSignerCertificates(Bundle.SIGNERS_ALL);

+		for (Iterator i = signers.keySet().iterator(); i.hasNext();)

+			result.add(i.next().toString());

+		return (String[]) result.toArray(new String[result.size()]);

+	}

+

+	private void publishExportEvent(ExportRegistration exportRegistration) {

+		Throwable exception = exportRegistration.getException();

+		org.osgi.service.remoteserviceadmin.ExportReference exportReference = (exception == null) ? exportRegistration

+				.getExportReference() : null;

+		RemoteServiceAdminEvent rsaEvent = new RemoteServiceAdminEvent(

+				exportRegistration.getContainerID(),

+				(exception == null) ? RemoteServiceAdminEvent.EXPORT_REGISTRATION

+						: RemoteServiceAdminEvent.EXPORT_ERROR, getRSABundle(),

+				exportReference, exception);

+		publishEvent(rsaEvent, exportRegistration.getEndpointDescription());

+	}

+

+	private void publishImportEvent(ImportRegistration importRegistration) {

+		Throwable exception = importRegistration.getException();

+		org.osgi.service.remoteserviceadmin.ImportReference importReference = (exception == null) ? importRegistration

+				.getImportReference() : null;

+		RemoteServiceAdminEvent rsaEvent = new RemoteServiceAdminEvent(

+				importRegistration.getContainerID(),

+				(exception == null) ? RemoteServiceAdminEvent.IMPORT_REGISTRATION

+						: RemoteServiceAdminEvent.IMPORT_ERROR, getRSABundle(),

+				importReference, exception);

+		publishEvent(rsaEvent, importRegistration.getEndpointDescription());

+	}

+

+	private void closeRemoteServiceAdminListenerTracker() {

+		synchronized (remoteServiceAdminListenerTrackerLock) {

+			if (remoteServiceAdminListenerTracker != null) {

+				remoteServiceAdminListenerTracker.close();

+				remoteServiceAdminListenerTracker = null;

+			}

+		}

+	}

+

+	private RemoteServiceAdminListener[] getListeners(EndpointPermission perm) {

+		synchronized (remoteServiceAdminListenerTrackerLock) {

+			if (remoteServiceAdminListenerTracker == null) {

+				remoteServiceAdminListenerTracker = new ServiceTracker(

+						getClientBundleContext(),

+						RemoteServiceAdminListener.class.getName(), null);

+				remoteServiceAdminListenerTracker.open();

+			}

+		}

+		ServiceReference[] unfilteredRefs = remoteServiceAdminListenerTracker

+				.getServiceReferences();

+		if (unfilteredRefs == null)

+			return null;

+		// Filter by Bundle.hasPermission

+		List<ServiceReference> filteredRefs = new ArrayList<ServiceReference>();

+		for (ServiceReference ref : unfilteredRefs)

+			if (perm == null || ref.getBundle().hasPermission(perm))

+				filteredRefs.add(ref);

+		List<RemoteServiceAdminListener> results = new ArrayList<RemoteServiceAdminListener>();

+		for (ServiceReference ref : filteredRefs) {

+			RemoteServiceAdminListener l = (RemoteServiceAdminListener) remoteServiceAdminListenerTracker

+					.getService(ref);

+			if (l != null)

+				results.add(l);

+		}

+		return results.toArray(new RemoteServiceAdminListener[results.size()]);

+	}

+

+	private ExportEndpoint findExistingExportEndpoint(

+			ServiceReference serviceReference, ID containerID) {

+		for (ExportRegistration eReg : exportedRegistrations) {

+			ExportEndpoint exportEndpoint = eReg.getExportEndpoint(

+					serviceReference, containerID);

+			if (exportEndpoint != null)

+				return exportEndpoint;

+		}

+		return null;

+	}

+

+	private EventAdmin getEventAdmin() {

+		synchronized (eventAdminTrackerLock) {

+			eventAdminTracker = new ServiceTracker(getClientBundleContext(),

+					EventAdmin.class.getName(), null);

+			eventAdminTracker.open();

+		}

+		return (EventAdmin) eventAdminTracker.getService();

+	}

+

+	private void postRemoteServiceAdminEvent(String topic,

+			Dictionary eventProperties) {

+		EventAdmin eventAdmin = getEventAdmin();

+		if (eventAdmin == null) {

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

+					"No EventAdmin service available to send eventTopic=" //$NON-NLS-1$

+							+ topic + " eventProperties=" + eventProperties); //$NON-NLS-1$

+			return;

+		}

+		eventAdmin.postEvent(new Event(topic, eventProperties));

+	}

+

+	private void closeEventAdminTracker() {

+		synchronized (eventAdminTrackerLock) {

+			if (eventAdminTracker != null) {

+				eventAdminTracker.close();

+				eventAdminTracker = null;

+			}

+		}

+	}

+

+	private void closePackageAdminTracker() {

+		synchronized (packageAdminTrackerLock) {

+			if (packageAdminTracker != null) {

+				packageAdminTracker.close();

+				packageAdminTracker = null;

+			}

+		}

+	}

+

+	private Object consumerContainerSelectorTrackerLock = new Object();

+	private ServiceTracker consumerContainerSelectorTracker;

+

+	private void closeConsumerContainerSelectorTracker() {

+		synchronized (consumerContainerSelectorTrackerLock) {

+			if (consumerContainerSelectorTracker != null) {

+				consumerContainerSelectorTracker.close();

+				consumerContainerSelectorTracker = null;

+			}

+		}

+		if (defaultConsumerContainerSelector != null) {

+			defaultConsumerContainerSelector.close();

+			defaultConsumerContainerSelector = null;

+		}

+	}

+

+	private Object hostContainerSelectorTrackerLock = new Object();

+	private ServiceTracker hostContainerSelectorTracker;

+

+	private void closeHostContainerSelectorTracker() {

+		synchronized (hostContainerSelectorTrackerLock) {

+			if (hostContainerSelectorTracker != null) {

+				hostContainerSelectorTracker.close();

+				hostContainerSelectorTracker = null;

+			}

+		}

+		if (defaultHostContainerSelector != null) {

+			defaultHostContainerSelector.close();

+			defaultHostContainerSelector = null;

+		}

+	}

+

+	protected IHostContainerSelector getHostContainerSelector() {

+		synchronized (hostContainerSelectorTrackerLock) {

+			if (hostContainerSelectorTracker == null) {

+				hostContainerSelectorTracker = new ServiceTracker(

+						getClientBundleContext(),

+						IHostContainerSelector.class.getName(), null);

+				hostContainerSelectorTracker.open();

+			}

+		}

+		return (IHostContainerSelector) hostContainerSelectorTracker

+				.getService();

+	}

+

+	protected IConsumerContainerSelector getConsumerContainerSelector() {

+		synchronized (consumerContainerSelectorTrackerLock) {

+			if (consumerContainerSelectorTracker == null) {

+				consumerContainerSelectorTracker = new ServiceTracker(

+						getClientBundleContext(),

+						IConsumerContainerSelector.class.getName(), null);

+				consumerContainerSelectorTracker.open();

+			}

+		}

+		return (IConsumerContainerSelector) consumerContainerSelectorTracker

+				.getService();

+	}

+

+	private Version getPackageVersion(ServiceReference serviceReference,

+			String serviceInterface, String packageName) {

+		Object service = getClientBundleContext().getService(serviceReference);

+		if (service == null)

+			return null;

+		Class[] interfaceClasses = service.getClass().getInterfaces();

+		if (interfaceClasses == null)

+			return null;

+		Class interfaceClass = null;

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

+			if (interfaceClasses[i].getName().equals(serviceInterface))

+				interfaceClass = interfaceClasses[i];

+		if (interfaceClass == null)

+			return null;

+		Bundle providingBundle = FrameworkUtil.getBundle(interfaceClass);

+		if (providingBundle == null) return null;

+		return getVersionForPackage(providingBundle, packageName);

+	}

+

+	private Map<String, Object> createExportEndpointDescriptionProperties(

+			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties,

+			String[] exportedInterfaces, String[] serviceIntents,

+			IRemoteServiceContainer rsContainer) {

+		IContainer container = rsContainer.getContainer();

+		ID containerID = container.getID();

+

+		Map<String, Object> endpointDescriptionProperties = new TreeMap<String, Object>(

+				String.CASE_INSENSITIVE_ORDER);

+

+		// OSGi properties

+		// OBJECTCLASS set to exportedInterfaces

+		endpointDescriptionProperties.put(

+				org.osgi.framework.Constants.OBJECTCLASS, exportedInterfaces);

+

+		// Service interface versions

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

+			String packageName = getPackageName(exportedInterfaces[i]);

+			String packageVersionKey = org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_PACKAGE_VERSION_

+					+ packageName;

+			// If it's pre-set...by registration or by overridingProperties,

+			// then use that value

+			String packageVersion = (String) PropertiesUtil.getPropertyValue(

+					serviceReference, overridingProperties, packageVersionKey);

+			if (packageVersion == null) {

+				Version version = getPackageVersion(serviceReference,

+						exportedInterfaces[i], packageName);

+				if (version != null && !version.equals(Version.emptyVersion))

+					packageVersion = version.toString();

+			}

+			// Only set the package version if we have a non-null value

+			if (packageVersion != null)

+				endpointDescriptionProperties.put(packageVersionKey,

+						packageVersion);

+		}

+

+		// ENDPOINT_ID

+		String endpointId = (String) PropertiesUtil

+				.getPropertyValue(

+						serviceReference,

+						overridingProperties,

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

+		if (endpointId == null)

+			endpointId = containerID.getName();

+		endpointDescriptionProperties

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

+						endpointId);

+

+		// ENDPOINT_SERVICE_ID

+		// This is always set to the value from serviceReference as per 122.5.1

+		Long serviceId = (Long) serviceReference

+				.getProperty(org.osgi.framework.Constants.SERVICE_ID);

+		endpointDescriptionProperties.put(

+				org.osgi.framework.Constants.SERVICE_ID, serviceId);

+

+		// ENDPOINT_FRAMEWORK_ID

+		String frameworkId = (String) PropertiesUtil

+				.getPropertyValue(

+						serviceReference,

+						overridingProperties,

+						org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID);

+		if (frameworkId == null)

+			frameworkId = Activator.getDefault().getFrameworkUUID();

+		endpointDescriptionProperties

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

+						frameworkId);

+

+		// REMOTE_CONFIGS_SUPPORTED

+		String[] remoteConfigsSupported = getSupportedConfigs(container);

+		if (remoteConfigsSupported != null)

+			endpointDescriptionProperties

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

+							remoteConfigsSupported);

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

+		// providers

+		// supported (which is computed

+		// for the exporting ECF container

+		endpointDescriptionProperties

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

+						remoteConfigsSupported);

+

+		// SERVICE_INTENTS

+		Object intents = PropertiesUtil

+				.getPropertyValue(

+						null,

+						overridingProperties,

+						org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS);

+		if (intents == null)

+			intents = serviceIntents;

+		if (intents != null)

+			endpointDescriptionProperties

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

+							intents);

+

+		// REMOTE_INTENTS_SUPPORTED

+		String[] remoteIntentsSupported = getSupportedIntents(container);

+		if (remoteIntentsSupported != null)

+			endpointDescriptionProperties

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

+							remoteIntentsSupported);

+

+		// ECF properties

+		// ID namespace

+		String idNamespace = containerID.getNamespace().getName();

+		endpointDescriptionProperties.put(

+				RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE, idNamespace);

+

+		// ENDPOINT_CONNECTTARGET_ID

+		String connectTarget = (String) PropertiesUtil.getPropertyValue(

+				serviceReference, overridingProperties,

+				RemoteConstants.ENDPOINT_CONNECTTARGET_ID);

+		if (connectTarget == null) {

+			ID connectedID = rsContainer.getContainer().getConnectedID();

+			if (connectedID != null && !connectedID.equals(containerID))

+				connectTarget = connectedID.getName();

+		}

+		if (connectTarget != null)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_CONNECTTARGET_ID, connectTarget);

+

+		// ENDPOINT_IDFILTER_IDS

+		String[] idFilter = (String[]) PropertiesUtil.getPropertyValue(

+				serviceReference, overridingProperties,

+				RemoteConstants.ENDPOINT_IDFILTER_IDS);

+		if (idFilter != null && idFilter.length > 0)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_IDFILTER_IDS, idFilter);

+

+		// ENDPOINT_REMOTESERVICE_FILTER

+		String rsFilter = (String) PropertiesUtil.getPropertyValue(

+				serviceReference, overridingProperties,

+				RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER);

+		if (rsFilter != null)

+			endpointDescriptionProperties.put(

+					RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER, rsFilter);

+

+		// Finally, copy all non-reserved properties

+		return PropertiesUtil.copyNonReservedProperties(overridingProperties,

+				endpointDescriptionProperties);

+	}

+

+	private Map<String, Object> copyNonReservedProperties(

+			ServiceReference serviceReference,

+			Map<String, Object> overridingProperties, Map<String, Object> target) {

+		// copy all other properties...from service reference

+		PropertiesUtil.copyNonReservedProperties(serviceReference, target);

+		// And override with overridingProperties

+		PropertiesUtil.copyNonReservedProperties(overridingProperties, target);

+		return target;

+	}

+

+	private ContainerTypeDescription getContainerTypeDescription(

+			IContainer container) {

+		IContainerManager containerManager = Activator.getDefault()

+				.getContainerManager();

+		if (containerManager == null)

+			return null;

+		return containerManager.getContainerTypeDescription(container.getID());

+	}

+

+	private String[] getSupportedConfigs(IContainer container) {

+		ContainerTypeDescription ctd = getContainerTypeDescription(container);

+		return (ctd == null) ? null : ctd.getSupportedConfigs();

+	}

+

+	private String[] getImportedConfigs(IContainer container,

+			String[] exporterSupportedConfigs) {

+		ContainerTypeDescription ctd = getContainerTypeDescription(container);

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

+				.getImportedConfigs(exporterSupportedConfigs);

+	}

+

+	private String[] getSupportedIntents(IContainer container) {

+		ContainerTypeDescription ctd = getContainerTypeDescription(container);

+		return (ctd == null) ? null : ctd.getSupportedIntents();

+	}

+

+	private ID[] getIDFilter(EndpointDescription endpointDescription,

+			ID endpointID) {

+		ID[] idFilter = endpointDescription.getIDFilter();

+		// If it is null,

+		return (idFilter == null) ? new ID[] { endpointID } : idFilter;

+	}

+

+	private String getRemoteServiceFilter(

+			EndpointDescription endpointDescription) {

+

+		long rsId = 0;

+		// if the ECF remote service id is present in properties, allow it to

+		// override

+		Long l = (Long) endpointDescription.getProperties().get(

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

+		if (l != null)

+			rsId = l.longValue();

+		// if rsId is still zero, use the endpoint.service.id from

+		// endpoint description

+		if (rsId == 0)

+			rsId = endpointDescription.getServiceId();

+		// If it's *still* zero, then just use the raw filter

+		if (rsId == 0) {

+			// It's not known...so we just return the 'raw' remote service

+			// filter

+			return endpointDescription.getRemoteServiceFilter();

+		} else {

+			String edRsFilter = endpointDescription.getRemoteServiceFilter();

+			// It's a real remote service id...so we return

+			StringBuffer result = new StringBuffer("(&(") //$NON-NLS-1$

+					.append(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID)

+					.append("=").append(rsId).append(")"); //$NON-NLS-1$ //$NON-NLS-2$

+			if (edRsFilter != null)

+				result.append(edRsFilter);

+			result.append(")"); //$NON-NLS-1$

+			return result.toString();

+		}

+	}

+

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

+		// First get IRemoteService for selectedRsReference

+		IRemoteService rs = containerAdapter

+				.getRemoteService(selectedRsReference);

+		if (rs == null)

+			throw new NullPointerException(

+					"getRemoteService returned null for selectedRsReference=" //$NON-NLS-1$

+							+ selectedRsReference + ",rsContainerID=" //$NON-NLS-1$

+							+ rsContainerID);

+

+		Map proxyProperties = createProxyProperties(endpointDescription,

+				rsContainer, selectedRsReference, rs);

+

+		// sync sref props with endpoint props

+		endpointDescription.setPropertiesOverrides(proxyProperties);

+

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

+

+		ServiceRegistration proxyRegistration = proxyServiceFactoryContext

+				.registerService((String[]) serviceTypes

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

+						createProxyServiceFactory(endpointDescription, rs),

+						(Dictionary) PropertiesUtil

+								.createDictionaryFromMap(proxyProperties));

+

+		return new ImportEndpoint(containerAdapter, selectedRsReference,

+				new RemoteServiceListener(), proxyRegistration,

+				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()) {

+			// 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 = FrameworkUtil.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) {

+		return new ProxyServiceFactory(

+				endpointDescription.getInterfaceVersions(), remoteService);

+	}

+

+	private Collection<Class> loadServiceInterfacesViaBundle(Bundle bundle,

+			String[] interfaces) {

+		List<Class> result = new ArrayList<Class>();

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

+			try {

+				result.add(bundle.loadClass(interfaces[i]));

+			} catch (ClassNotFoundException e) {

+				logError("loadInterfacesViaBundle", "interface=" //$NON-NLS-1$ //$NON-NLS-2$

+						+ interfaces[i] + " cannot be loaded by clientBundle=" //$NON-NLS-1$

+						+ bundle.getSymbolicName(), e);

+				continue;

+			} catch (IllegalStateException e) {

+				logError(

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

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

+								+ interfaces[i]

+								+ " cannot be loaded since clientBundle is in illegal state", //$NON-NLS-1$

+						e);

+				continue;

+			}

+		}

+		return result;

+	}

+

+	class ProxyServiceFactory implements ServiceFactory {

+		private IRemoteService remoteService;

+		private Map<String, Version> interfaceVersions;

+

+		public ProxyServiceFactory(Map<String, Version> interfaceVersions,

+				IRemoteService remoteService) {

+			this.interfaceVersions = interfaceVersions;

+			this.remoteService = remoteService;

+		}

+

+		public Object getService(Bundle bundle, ServiceRegistration registration) {

+			return createProxy(bundle, registration.getReference(),

+					remoteService, interfaceVersions);

+		}

+

+		public void ungetService(Bundle bundle,

+				ServiceRegistration registration, Object service) {

+			ungetProxyClassLoader(bundle);

+		}

+	}

+

+	private Object createProxy(Bundle requestingBundle,

+			ServiceReference serviceReference, IRemoteService remoteService,

+			Map<String, Version> interfaceVersions) {

+		// Get symbolicName once for possible use below

+		String bundleSymbolicName = requestingBundle.getSymbolicName();

+		// Get String[] via OBJECTCLASS constant property

+		String[] serviceClassnames = (String[]) serviceReference

+				.getProperty(org.osgi.framework.Constants.OBJECTCLASS);

+		// Load as many of the serviceInterface classes as possible

+		Collection<Class> serviceInterfaceClasses = loadServiceInterfacesViaBundle(

+				requestingBundle, serviceClassnames);

+		// There has to be at least one serviceInterface that the clientBundle

+		// can

+		// load...otherwise the service can't be accessed

+		if (serviceInterfaceClasses.size() < 1)

+			throw new RuntimeException(

+					"ProxyServiceFactory cannot load any serviceInterfaces=" //$NON-NLS-1$

+							+ serviceInterfaceClasses

+							+ " for serviceReference=" + serviceReference //$NON-NLS-1$

+							+ " via clientBundle=" + bundleSymbolicName); //$NON-NLS-1$

+

+		// Now verify that the classes are of valid versions

+		if (!verifyServiceInterfaceVersionsForProxy(requestingBundle,

+				serviceInterfaceClasses, interfaceVersions))

+			return null;

+

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

+		// be an instance of ProxyClassLoader

+		ClassLoader cl = getProxyClassLoader(requestingBundle);

+		try {

+			return remoteService.getProxy(cl, (Class[]) serviceInterfaceClasses

+					.toArray(new Class[serviceInterfaceClasses.size()]));

+		} catch (ECFException e) {

+			throw new ServiceException(

+					"ProxyServiceFactory cannot create proxy for clientBundle=" //$NON-NLS-1$

+							+ bundleSymbolicName + " from serviceReference=" //$NON-NLS-1$

+							+ serviceReference, e);

+		}

+

+	}

+

+	private Map<Bundle, ProxyClassLoader> proxyClassLoaders = new HashMap<Bundle, ProxyClassLoader>();

+

+	private void closeProxyClassLoaderCache() {

+		synchronized (proxyClassLoaders) {

+			proxyClassLoaders.clear();

+		}

+	}

+

+	private ClassLoader getProxyClassLoader(Bundle bundle) {

+		ProxyClassLoader proxyClassLoaderForBundle = null;

+		synchronized (proxyClassLoaders) {

+			proxyClassLoaderForBundle = proxyClassLoaders.get(bundle);

+			if (proxyClassLoaderForBundle == null) {

+				proxyClassLoaderForBundle = new ProxyClassLoader(bundle);

+				proxyClassLoaders.put(bundle, proxyClassLoaderForBundle);

+			} else

+				proxyClassLoaderForBundle.addServiceUseCount();

+		}

+		return proxyClassLoaderForBundle;

+	}

+

+	private void ungetProxyClassLoader(Bundle bundle) {

+		synchronized (proxyClassLoaders) {

+			ProxyClassLoader proxyClassLoaderForBundle = proxyClassLoaders

+					.get(bundle);

+			if (proxyClassLoaderForBundle != null) {

+				int useCount = proxyClassLoaderForBundle.getServiceUseCount();

+				if (useCount == 0)

+					proxyClassLoaders.remove(bundle);

+				else

+					proxyClassLoaderForBundle.removeServiceUseCount();

+			}

+		}

+	}

+

+	protected class ProxyClassLoader extends ClassLoader {

+		private Bundle loadingBundle;

+		private int serviceUseCount = 0;

+

+		public ProxyClassLoader(Bundle loadingBundle) {

+			this.loadingBundle = loadingBundle;

+		}

+

+		public Class loadClass(String name) throws ClassNotFoundException {

+			return loadingBundle.loadClass(name);

+		}

+

+		public int getServiceUseCount() {

+			return serviceUseCount;

+		}

+

+		public void addServiceUseCount() {

+			serviceUseCount++;

+		}

+

+		public void removeServiceUseCount() {

+			serviceUseCount--;

+		}

+	}

+

+	private String getPackageName(String className) {

+		int lastDotIndex = className.lastIndexOf("."); //$NON-NLS-1$

+		if (lastDotIndex == -1)

+			return ""; //$NON-NLS-1$

+		return className.substring(0, lastDotIndex);

+	}

+

+	private boolean comparePackageVersions(String packageName,

+			Version remoteVersion, Version localVersion)

+			throws RuntimeException {

+

+		LogUtility.trace(

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

+				DebugOptions.PACKAGE_VERSION_COMPARATOR, this.getClass(),

+				"packageName=" + packageName + ",remoteVersion=" //$NON-NLS-1$ //$NON-NLS-2$

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

+

+		// If no remote version info, then set it to empty

+		if (remoteVersion == null) remoteVersion = Version.emptyVersion;

+		if (localVersion == null) localVersion = Version.emptyVersion;

+

+		// By default we do strict comparison of remote with local...they must

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

+		return (compareResult != 0);

+	}

+

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

+			// Now get remoteVersion, localVersion and do compare via package

+			// version comparator service

+			Version remoteVersion = interfaceVersions.get(className);

+			Version localVersion = getPackageVersionViaRequestingBundle(

+					packageName, bundle);

+			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 Version getVersionForMatchingCapability(String packageName,

+			BundleCapability capability) {

+		// If it's a package namespace (Import-Package)

+		Map<String, Object> attributes = capability.getAttributes();

+		// Then we get the package attribute

+		String p = (String) attributes.get(BundleRevision.PACKAGE_NAMESPACE);

+		// And compare it to the package name

+		if (p != null && packageName.equals(p))

+			return (Version) attributes.get(Constants.VERSION_ATTRIBUTE);

+		return null;

+	}

+

+	private Version getPackageVersionForMatchingWire(String packageName,

+			List<BundleWire> bundleWires, String namespace) {

+		Version result = null;

+		for (BundleWire wire : bundleWires) {

+			if (namespace.equals(BundleRevision.PACKAGE_NAMESPACE))

+				result = getVersionForMatchingCapability(packageName,

+						wire.getCapability());

+			else if (namespace.equals(BundleRevision.BUNDLE_NAMESPACE))

+				// If it's a bundle namespace (Require-Bundle), then we get the

+				// version for package

+				// of the providing bundle

+				result = getVersionForPackage(wire.getProvider().getBundle(),

+						packageName);

+

+			if (result != null)

+				return result;

+

+		}

+		return result;

+	}

+

+	private Version getVersionForPackage(Bundle providingBundle,

+			String packageName) {

+		Version result = null;

+		BundleRevision providingBundleRevision = providingBundle

+				.adapt(BundleRevision.class);

+		if (providingBundleRevision == null)

+			return null;

+		List<BundleCapability> providerCapabilities = providingBundleRevision

+				.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE);

+		for (BundleCapability c : providerCapabilities) {

+			result = getVersionForMatchingCapability(packageName, c);

+			if (result != null)

+				return result;

+		}

+		return result;

+	}

+	

+	private Version getPackageVersionViaRequestingBundle(String packageName,

+			Bundle requestingBundle) {

+		Version result = null;

+		// First check the requesting bundle for the desired export package

+		// capability

+		BundleRevision requestingBundleRevision = (BundleRevision) requestingBundle

+				.adapt(BundleRevision.class);

+		if (requestingBundleRevision != null) {

+			List<BundleCapability> requestingBundleCapabilities = requestingBundleRevision

+					.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE);

+			for (BundleCapability requestingBundleCapability : requestingBundleCapabilities) {

+				Version version = getVersionForMatchingCapability(packageName,

+						requestingBundleCapability);

+				// If found, set our result

+				if (version != null)

+					result = version;

+			}

+		}

+		// If not found in requestingBundle export package, then

+		// look in exported package that are wired to the requesting bundle

+		if (result == null) {

+			// look for wired exported packages

+			BundleWiring requestingBundleWiring = requestingBundle

+					.adapt(BundleWiring.class);

+			if (requestingBundleWiring != null) {

+				result = getPackageVersionForMatchingWire(

+						packageName,

+						requestingBundleWiring

+								.getRequiredWires(BundleRevision.PACKAGE_NAMESPACE),

+						BundleRevision.PACKAGE_NAMESPACE);

+				// If not found in wired exported packages, then look

+				// in wired require bundles

+				if (result == null)

+					result = getPackageVersionForMatchingWire(

+							packageName,

+							requestingBundleWiring

+									.getRequiredWires(BundleRevision.BUNDLE_NAMESPACE),

+							BundleRevision.BUNDLE_NAMESPACE);

+			}

+		}

+		return result;

+	}

+	

+	private IRemoteServiceReference selectRemoteServiceReference(

+			Collection<IRemoteServiceReference> rsRefs, ID targetID,

+			ID[] idFilter, Collection<String> interfaces, String rsFilter,

+			IRemoteServiceContainer rsContainer) {

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

+			return null;

+		if (rsRefs.size() > 1) {

+			logWarning("selectRemoteServiceReference", "rsRefs=" + rsRefs //$NON-NLS-1$ //$NON-NLS-2$

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

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

+					+ ",rsContainer=" + rsContainer.getContainer().getID() //$NON-NLS-1$

+					+ " has " + rsRefs.size() //$NON-NLS-1$

+					+ " values.  Selecting the first element"); //$NON-NLS-1$

+		}

+		return rsRefs.iterator().next();

+	}

+

+	private Map createProxyProperties(EndpointDescription endpointDescription,

+			IRemoteServiceContainer rsContainer,

+			IRemoteServiceReference rsReference, IRemoteService remoteService) {

+

+		Map resultProperties = new TreeMap<String, Object>(

+				String.CASE_INSENSITIVE_ORDER);

+		PropertiesUtil.copyNonReservedProperties(rsReference, resultProperties);

+		// remove OBJECTCLASS

+		resultProperties

+				.remove(org.eclipse.ecf.remoteservice.Constants.OBJECTCLASS);

+		// remove remote service id

+		resultProperties

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

+		// Set intents if there are intents

+		Object intentsValue = PropertiesUtil

+				.convertToStringPlusValue(endpointDescription.getIntents());

+		if (intentsValue != null)

+			resultProperties

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

+							intentsValue);

+

+		// Set service.imported to IRemoteService unless

+		// SERVICE_IMPORTED_VALUETYPE is

+		// set

+		String serviceImportedType = (String) endpointDescription

+				.getProperties()

+				.get(org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_VALUETYPE);

+		if (serviceImportedType == null

+				|| serviceImportedType.equals(IRemoteService.class.getName()))

+			resultProperties

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

+							remoteService);

+		else

+			resultProperties

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

+							new Boolean(true));

+

+		String[] exporterSupportedConfigs = (String[]) endpointDescription

+				.getProperties()

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

+		String[] importedConfigs = getImportedConfigs(

+				rsContainer.getContainer(), exporterSupportedConfigs);

+		// Set service.imported.configs

+		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 ExportRegistration exportService(ServiceReference serviceReference,

+			Map<String, ?> overridingProperties,

+			String[] exportedInterfaces, IRemoteServiceContainer rsContainer,

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

+

+		// Create remote service properties

+		Map remoteServiceProperties = copyNonReservedProperties(

+				serviceReference, (Map<String,Object>) overridingProperties,

+				new TreeMap<String, Object>(String.CASE_INSENSITIVE_ORDER));

+

+		IRemoteServiceContainerAdapter containerAdapter = rsContainer

+				.getContainerAdapter();

+

+		// Register remote service via ECF container adapter to create

+		// remote service registration

+		IRemoteServiceRegistration remoteRegistration = null;

+		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 new ExportRegistration(new ExportEndpoint(serviceReference,

+				endpointDescription, remoteRegistration));

+	}

+

+	private ImportRegistration importService(

+			EndpointDescription endpointDescription,

+			IRemoteServiceContainer rsContainer) {

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

+				+ ",rsContainerID=" + rsContainer.getContainer().getID()); //$NON-NLS-1$

+		// Get interfaces from endpoint description

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

+		Assert.isNotNull(interfaces);

+		Assert.isTrue(interfaces.size() > 0);

+		// Get ECF endpoint ID...if this throws IDCreateException (because the

+		// local system does not have

+		// namespace for creating ID, or no namespace is present in

+		// endpointDescription or endpoint id,

+		// then it will be caught by the caller

+		ID endpointContainerID = endpointDescription.getContainerID();

+		Assert.isNotNull(endpointContainerID);

+		// Get connect target ID. May be null

+		ID targetID = endpointDescription.getConnectTargetID();

+		if (targetID == null)

+			targetID = endpointContainerID;

+		// Get idFilter...also may be null

+		ID[] idFilter = getIDFilter(endpointDescription, endpointContainerID);

+		// Get remote service filter

+		String rsFilter = getRemoteServiceFilter(endpointDescription);

+		// IRemoteServiceReferences from query

+		Collection<IRemoteServiceReference> rsRefs = new ArrayList<IRemoteServiceReference>();

+		// Get IRemoteServiceContainerAdapter

+		IRemoteServiceContainerAdapter containerAdapter = rsContainer

+				.getContainerAdapter();

+		// rsContainerID

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

+		try {

+			// Get first interface name for service reference

+			// lookup

+			String intf = interfaces.iterator().next();

+			// Get/lookup remote service references

+			IRemoteServiceReference[] refs = containerAdapter

+					.getRemoteServiceReferences(targetID, idFilter, intf,

+							rsFilter);

+			if (refs == null) {

+				logWarning("doImportService", //$NON-NLS-1$

+						"getRemoteServiceReferences return null for targetID=" //$NON-NLS-1$

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

+								+ ",intf=" + intf + ",rsFilter=" + rsFilter //$NON-NLS-1$ //$NON-NLS-2$

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

+			} else

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

+					rsRefs.add(refs[i]);

+			// If there are several refs resulting (should not be)

+			// we select the one to use

+			IRemoteServiceReference selectedRsReference = selectRemoteServiceReference(

+					rsRefs, targetID, idFilter, interfaces, rsFilter,

+					rsContainer);

+			// If none found, we obviously can't continue

+			if (selectedRsReference == null)

+				throw new RemoteReferenceNotFoundException(targetID, idFilter,

+						interfaces, rsFilter);

+

+			return new ImportRegistration(createAndRegisterProxy(

+					endpointDescription, rsContainer, selectedRsReference));

+		} catch (Exception e) {

+			logError(

+					"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); //$NON-NLS-1$

+			return new ImportRegistration(endpointDescription, e);

+		}

+	}

+

+	private void closeExportRegistrations() {

+		List<ExportRegistration> toClose = null;

+		synchronized (exportedRegistrations) {

+			toClose = new ArrayList<ExportRegistration>(exportedRegistrations);

+			exportedRegistrations.clear();

+		}

+		for (ExportRegistration reg : toClose)

+			reg.close();

+	}

+

+	private void closeImportRegistrations() {

+		List<ImportRegistration> toClose = null;

+		synchronized (importedRegistrations) {

+			toClose = new ArrayList<ImportRegistration>(importedRegistrations);

+			importedRegistrations.clear();

+		}

+		for (ImportRegistration reg : toClose)

+			reg.close();

+	}

+

+	public void close() {

+		trace("close", "closing importedRegistrations=" + importedRegistrations //$NON-NLS-1$ //$NON-NLS-2$

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

+		closeRemoteServiceAdminListenerTracker();

+		closeEventAdminTracker();

+		closePackageAdminTracker();

+		closeProxyClassLoaderCache();

+		closeConsumerContainerSelectorTracker();

+		closeHostContainerSelectorTracker();

+		closeDefaultContainerSelectors();

+		closeImportRegistrations();

+		closeExportRegistrations();

+		this.clientBundle = null;

+	}

+

+	private ImportEndpoint findImportEndpoint(EndpointDescription ed) {

+		for (ImportRegistration reg : importedRegistrations) {

+			ImportEndpoint endpoint = reg.getImportEndpoint(ed);

+			if (endpoint != null)

+				return endpoint;

+		}

+		return null;

+	}

+

+	private void unimportService(IRemoteServiceID remoteServiceID) {

+		List<ImportRegistration> removedRegistrations = new ArrayList<ImportRegistration>();

+		synchronized (importedRegistrations) {

+			for (Iterator<ImportRegistration> i = importedRegistrations

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

+				ImportRegistration importRegistration = i.next();

+				if (importRegistration != null

+						&& importRegistration.match(remoteServiceID))

+					removedRegistrations.add(importRegistration);

+			}

+		}

+		// Now close all of them

+		for (ImportRegistration removedReg : removedRegistrations) {

+			trace("unimportService", "closing importRegistration=" + removedReg); //$NON-NLS-1$ //$NON-NLS-2$

+			removedReg.close();

+		}

+	}

+

+	class RemoteServiceListener implements IRemoteServiceListener {

+		public void handleServiceEvent(IRemoteServiceEvent event) {

+			if (event instanceof IRemoteServiceUnregisteredEvent)

+				unimportService(event.getReference().getID());

+		}

+	}

+

+	private void trace(String methodName, String message) {

+		LogUtility.trace(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

+				this.getClass(), message);

+	}

+

+	private void logWarning(String methodName, String message) {

+		LogUtility.logWarning(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

+				this.getClass(), message);

+	}

+

+	private void logError(String methodName, String message, Throwable t) {

+		LogUtility.logError(methodName, DebugOptions.REMOTE_SERVICE_ADMIN,

+				this.getClass(), message, t);

+	}

+

+	private void logError(String methodName, String message) {

+		logError(methodName, message, (Throwable) null);

+	}

+

+	public class RemoteServiceAdminEvent extends

+			org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent {

+

+		private ID containerID;

+

+		public RemoteServiceAdminEvent(

+				ID containerID,

+				int type,

+				Bundle source,

+				org.osgi.service.remoteserviceadmin.ExportReference exportReference,

+				Throwable exception) {

+			super(type, source, exportReference, exception);

+			this.containerID = containerID;

+		}

+

+		public RemoteServiceAdminEvent(

+				ID containerID,

+				int type,

+				Bundle source,

+				org.osgi.service.remoteserviceadmin.ImportReference importReference,

+				Throwable exception) {

+			super(type, source, importReference, exception);

+			this.containerID = containerID;

+		}

+

+		public ID getContainerID() {

+			return containerID;

+		}

+

+		public String toString() {

+			return "RemoteServiceAdminEvent[containerID=" + containerID //$NON-NLS-1$

+					+ ", getType()=" + getType() + ", getSource()=" + getSource() //$NON-NLS-1$ //$NON-NLS-2$

+					+ ", getException()=" + getException() //$NON-NLS-1$

+					+ ", getImportReference()=" + getImportReference() //$NON-NLS-1$

+					+ ", getExportReference()=" + getExportReference() + "]"; //$NON-NLS-1$ //$NON-NLS-2$

+		}

+

+	}

+

+}

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
new file mode 100644
index 0000000..6466654
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdminEvent.java
@@ -0,0 +1,46 @@
+package org.eclipse.ecf.osgi.services.remoteserviceadmin;

+

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

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

+

+	private ID containerID;

+

+	public RemoteServiceAdminEvent(ID containerID, int type, Bundle source,

+			ExportReference exportReference, Throwable exception) {

+		super(type, source, exportReference, exception);

+		this.containerID = containerID;

+	}

+

+	public RemoteServiceAdminEvent(ID containerID, int type, Bundle source,

+			ImportReference importReference, Throwable exception) {

+		super(type, source, importReference, exception);

+		this.containerID = containerID;

+	}

+

+	public ID getContainerID() {

+		return containerID;

+	}

+

+	public String toString() {

+		return "RemoteServiceAdminEvent[containerID=" + containerID //$NON-NLS-1$

+				+ ", getType()=" + getType() + ", getSource()=" + getSource() //$NON-NLS-1$ //$NON-NLS-2$

+				+ ", getException()=" + getException() //$NON-NLS-1$

+				+ ", getImportReference()=" + getImportReference() //$NON-NLS-1$

+				+ ", getExportReference()=" + getExportReference() + "]"; //$NON-NLS-1$ //$NON-NLS-2$

+	}

+

+}

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..39fbe80
--- /dev/null
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/SelectContainerException.java
@@ -0,0 +1,32 @@
+/*******************************************************************************

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

+

+/**

+ * @since 2.0

+ */

+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/incubation/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
similarity index 90%
rename from incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
rename to osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
index 03700ab..0b14c51 100644
--- a/incubation/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 createServiceInfoForDiscovery(

-			IDiscoveryAdvertiser advertiser,

+	public IServiceInfo createServiceInfo(IDiscoveryAdvertiser advertiser,

 			EndpointDescription endpointDescription) {

 		try {

 			Namespace advertiserNamespace = advertiser.getServicesNamespace();

@@ -90,9 +93,9 @@
 			}

 		} catch (Exception e) {

 			logError(

-					"createServiceInfoForDiscovery",

-					"Exception creating service info for endpointDescription="

-							+ endpointDescription + ",advertiser=" + advertiser,

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

+					"Exception creating service info for endpointDescription=" //$NON-NLS-1$

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

 					e);

 			return null;

 		}

@@ -116,7 +119,7 @@
 	protected URI createURI(EndpointDescription endpointDescription,

 			IDiscoveryAdvertiser advertiser, IServiceTypeID serviceTypeID,

 			String serviceName) throws URISyntaxException {

-		String path = "/" + serviceName;

+		String path = "/" + serviceName; //$NON-NLS-1$

 		String str = endpointDescription.getId();

 		URI uri = null;

 		while (true) {

@@ -140,7 +143,7 @@
 				break;

 			}

 		}

-		String scheme = RemoteConstants.SERVICE_TYPE;

+		String scheme = RemoteConstants.DISCOVERY_SERVICE_TYPE;

 		int port = 32565;

 		if (uri != null) {

 			port = uri.getPort();

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

 		return ServiceIDFactory.getDefault().createServiceTypeID(

 				advertiser.getServicesNamespace(),

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

-				protocols, namingAuthority);

+				new String[] { RemoteConstants.DISCOVERY_SERVICE_TYPE },

+				scopes, protocols, namingAuthority);

 	}

 

-	public IServiceInfo removeServiceInfoForUndiscovery(

-			IDiscoveryAdvertiser advertiser,

+	public IServiceInfo removeServiceInfo(IDiscoveryAdvertiser advertiser,

 			EndpointDescription endpointDescription) {

 		Namespace advertiserNamespace = advertiser.getServicesNamespace();

 		ServiceInfoKey key = new ServiceInfoKey(endpointDescription,

@@ -216,12 +218,7 @@
 		super.close();

 	}

 

-	public boolean removeServiceInfo(IDiscoveryAdvertiser advertiser,

-			EndpointDescription endpointDescription) {

-		return removeServiceInfoForUndiscovery(advertiser, endpointDescription) != null;

-	}

-

-	public void removeAllServiceInfos() {

+	private void removeAllServiceInfos() {

 		synchronized (serviceInfos) {

 			serviceInfos.clear();

 		}

diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath
index 6b1debc..14619a2 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry path="" kind="lib" exported="true" sourcepath="src.zip"/>
-	<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2" kind="con"/>
-	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con"/>
-	<classpathentry path="bin" kind="output"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry path="" kind="lib" exported="true" sourcepath="src.zip"/>

+	<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/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
index 910b494..8c13cf4 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
@@ -1,83 +1,83 @@
-#Fri Sep 24 10:56:01 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.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-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=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-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
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+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.5

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

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

+org.eclipse.jdt.core.incompatibleJDKLevel=ignore

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

diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index c80684a..677a627 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -2,13 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.osgi.services.remoteserviceadmin
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.5.0.qualifier
 Bundle-Vendor: %bundle.provider
-Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.2,
- CDC-1.1/Foundation-1.1,
- J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Localization: bundle
 Bundle-Description: %bundle.description
 Bundle-Copyright: %bundle.copyright
-Export-Package: org.osgi.service.remoteserviceadmin; version="1.0"
+Export-Package: org.osgi.service.remoteserviceadmin;version="5.0.0"
 Import-Package: org.osgi.framework
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties
index 3cb8119..038305b 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/build.properties
@@ -1,4 +1,3 @@
-output.. = .
 bin.includes = bundle.properties,\
                about.html,\
                META-INF/,\
@@ -6,5 +5,8 @@
                about_files/
 src.includes = src.zip,\
                about.html,\
-               about_files/
+               about_files/,\
+               org/,\
+               bundle.properties
+output.. = /
                
\ No newline at end of file
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
index 84ffa4e..0fbbb64 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-bundle.name=OSGi Release 4.2.0 Remote Service Admin
+bundle.name=OSGi Release 5.0 Remote Service Admin
 bundle.provider=Eclipse.org - ECF
-bundle.description=OSGi Service Platform Release 4.2.0 Remote Service Admin Service Interfaces and Classes
+bundle.description=OSGi Service Platform Release 5.0 Remote Service Admin Service Interfaces and Classes
 bundle.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
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class
index a934e06..ef52905 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$1.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class
index 0bd6db8..49d3542 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription$UnmodifiableDictionary.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class
index e3adffc..569c4f9 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointDescription.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class
index 6853b31..7384a57 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermission.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class
index f6e4e56..7e52243 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/EndpointPermissionCollection.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class
index a31f0c9..7248b89 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteConstants.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class
index 402b73c..b5d804f 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.class
Binary files differ
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src.zip b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src.zip
index 98967e7..761ab25 100644
--- a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src.zip
+++ b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/src.zip
Binary files differ
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
index 5dd3433..bf8119b 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
@@ -68,15 +68,15 @@
 import ch.ethz.iks.r_osgi.channels.NetworkChannelFactory;
 import ch.ethz.iks.r_osgi.messages.DeliverBundlesMessage;
 import ch.ethz.iks.r_osgi.messages.DeliverServiceMessage;
-import ch.ethz.iks.r_osgi.messages.RequestBundleMessage;
-import ch.ethz.iks.r_osgi.messages.RequestDependenciesMessage;
-import ch.ethz.iks.r_osgi.messages.RequestServiceMessage;
-import ch.ethz.iks.r_osgi.messages.RemoteCallMessage;
 import ch.ethz.iks.r_osgi.messages.LeaseMessage;
 import ch.ethz.iks.r_osgi.messages.LeaseUpdateMessage;
+import ch.ethz.iks.r_osgi.messages.RemoteCallMessage;
 import ch.ethz.iks.r_osgi.messages.RemoteCallResultMessage;
 import ch.ethz.iks.r_osgi.messages.RemoteEventMessage;
 import ch.ethz.iks.r_osgi.messages.RemoteOSGiMessage;
+import ch.ethz.iks.r_osgi.messages.RequestBundleMessage;
+import ch.ethz.iks.r_osgi.messages.RequestDependenciesMessage;
+import ch.ethz.iks.r_osgi.messages.RequestServiceMessage;
 import ch.ethz.iks.r_osgi.messages.StreamRequestMessage;
 import ch.ethz.iks.r_osgi.messages.StreamResultMessage;
 import ch.ethz.iks.r_osgi.messages.TimeOffsetMessage;
@@ -1043,6 +1043,9 @@
 			final String serviceID = suMsg.getServiceID();
 			final short stateUpdate = suMsg.getType();
 
+			final String serviceURI = getRemoteAddress()
+					.resolve("#" + serviceID).toString();
+
 			switch (stateUpdate) {
 			case LeaseUpdateMessage.TOPIC_UPDATE: {
 				updateTopics((String[]) suMsg.getPayload()[0], (String[]) suMsg
@@ -1050,12 +1053,13 @@
 				return null;
 			}
 			case LeaseUpdateMessage.SERVICE_ADDED: {
+				final Dictionary properties = (Dictionary) suMsg.getPayload()[1];
+				sanitizeServiceProperties(properties, serviceURI);
 				final RemoteServiceReferenceImpl ref = new RemoteServiceReferenceImpl(
 						(String[]) suMsg.getPayload()[0], serviceID,
-						(Dictionary) suMsg.getPayload()[1], this);
+						properties, this);
 
-				remoteServices.put(getRemoteAddress().resolve("#" + serviceID) //$NON-NLS-1$
-						.toString(), ref);
+				remoteServices.put(serviceURI, ref);
 
 				RemoteOSGiServiceImpl
 						.notifyRemoteServiceListeners(new RemoteServiceEvent(
@@ -1064,16 +1068,16 @@
 				return null;
 			}
 			case LeaseUpdateMessage.SERVICE_MODIFIED: {
-				final Dictionary newProps = (Dictionary) suMsg.getPayload()[1];
+				final Dictionary properties = (Dictionary) suMsg.getPayload()[1];
+				sanitizeServiceProperties(properties, serviceURI);
 				final ServiceRegistration reg = (ServiceRegistration) proxiedServices
 						.get(serviceID);
 				if (reg != null) {
-					reg.setProperties(newProps);
+					reg.setProperties(properties);
 				}
 
-				final RemoteServiceReferenceImpl ref = getRemoteReference(getRemoteAddress()
-						.resolve("#" + serviceID).toString()); //$NON-NLS-1$
-				ref.setProperties(newProps);
+				final RemoteServiceReferenceImpl ref = getRemoteReference(serviceURI); //$NON-NLS-1$
+				ref.setProperties(properties);
 				RemoteOSGiServiceImpl
 						.notifyRemoteServiceListeners(new RemoteServiceEvent(
 								RemoteServiceEvent.MODIFIED, ref));
@@ -1084,8 +1088,7 @@
 					return null;
 				}
 				final RemoteServiceReference ref = (RemoteServiceReference) remoteServices
-						.remove(getRemoteAddress().resolve("#" + serviceID) //$NON-NLS-1$
-								.toString());
+						.remove(serviceURI);
 				if (ref != null) {
 					RemoteOSGiServiceImpl
 							.notifyRemoteServiceListeners(new RemoteServiceEvent(
@@ -1100,8 +1103,7 @@
 						be.printStackTrace();
 					}
 					proxiedServices.remove(serviceID);
-					remoteServices.remove(getRemoteAddress().resolve(
-							"#" + serviceID).toString()); //$NON-NLS-1$
+					remoteServices.remove(serviceURI); //$NON-NLS-1$
 				}
 				return null;
 			}
@@ -1393,11 +1395,16 @@
 		final String[] serviceIDs = lease.getServiceIDs();
 		final String[][] serviceInterfaces = lease.getServiceInterfaces();
 		final Dictionary[] serviceProperties = lease.getServiceProperties();
+		
 
 		final RemoteServiceReferenceImpl[] refs = new RemoteServiceReferenceImpl[serviceIDs.length];
 		for (short i = 0; i < serviceIDs.length; i++) {
+			final String serviceID = serviceIDs[i];
+			final String serviceURI = getRemoteAddress().resolve("#" + serviceID).toString();
+			final Dictionary properties = serviceProperties[i];
+			sanitizeServiceProperties(properties, serviceURI);
 			refs[i] = new RemoteServiceReferenceImpl(serviceInterfaces[i],
-					serviceIDs[i], serviceProperties[i], this);
+					serviceID, properties, this);
 
 			remoteServices.put(refs[i].getURI().toString(), refs[i]);
 			RemoteOSGiServiceImpl
@@ -1408,6 +1415,18 @@
 		return refs;
 	}
 
+	private void sanitizeServiceProperties(
+			final Dictionary properties, final String serviceURI) {
+		// adjust the properties
+		properties.put(RemoteOSGiService.SERVICE_URI, serviceURI);
+		// remove the service PID, if set
+		properties.remove(Constants.SERVICE_PID);
+		// remove the R-OSGi registration property
+		properties.remove(RemoteOSGiService.R_OSGi_REGISTRATION);
+		// also remote the ECF registration property
+		properties.remove("org.eclipse.ecf.serviceRegistrationRemote"); //$NON-NLS-1$
+	}
+
 	/**
 	 * perform a stream operation.
 	 * 
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/RemoteServiceReferenceImpl.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/RemoteServiceReferenceImpl.java
index a97695f..e0e0184 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/RemoteServiceReferenceImpl.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/RemoteServiceReferenceImpl.java
@@ -33,9 +33,6 @@
 import java.util.Dictionary;
 import java.util.Enumeration;
 
-import org.osgi.framework.Constants;
-
-import ch.ethz.iks.r_osgi.RemoteOSGiService;
 import ch.ethz.iks.r_osgi.RemoteServiceReference;
 import ch.ethz.iks.r_osgi.URI;
 
@@ -88,16 +85,9 @@
 			final String serviceID, final Dictionary properties,
 			final ChannelEndpointImpl channel) {
 		this.serviceInterfaces = serviceInterfaces;
-		uri = channel.getRemoteAddress().resolve("#" + serviceID); //$NON-NLS-1$
+		this.properties =  properties;
+		this.uri = channel.getRemoteAddress().resolve("#" + serviceID); //$NON-NLS-1$
 		this.properties = properties;
-		// adjust the properties
-		this.properties.put(RemoteOSGiService.SERVICE_URI, uri.toString());
-		// remove the service PID, if set
-		this.properties.remove(Constants.SERVICE_PID);
-		// remove the R-OSGi registration property
-		this.properties.remove(RemoteOSGiService.R_OSGi_REGISTRATION);
-		// also remote the ECF registration property
-		this.properties.remove("org.eclipse.ecf.serviceRegistrationRemote"); //$NON-NLS-1$
 		this.channel = channel;
 	}
 
diff --git a/protocols/bundles/org.apache.zookeeper/.classpath b/protocols/bundles/org.apache.zookeeper/.classpath
deleted file mode 100644
index 3bda1e6..0000000
--- a/protocols/bundles/org.apache.zookeeper/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry exported="true" kind="lib" path="zookeeper-3.3.0.jar"/>
-	<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/protocols/bundles/org.apache.zookeeper/.project b/protocols/bundles/org.apache.zookeeper/.project
deleted file mode 100644
index 8178239..0000000
--- a/protocols/bundles/org.apache.zookeeper/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.apache.zookeeper</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/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.pde.core.prefs b/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 7125ce4..0000000
--- a/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Tue Dec 01 09:42:12 CET 2009
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/protocols/bundles/org.apache.zookeeper/META-INF/MANIFEST.MF b/protocols/bundles/org.apache.zookeeper/META-INF/MANIFEST.MF
deleted file mode 100644
index 6c00c79..0000000
--- a/protocols/bundles/org.apache.zookeeper/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,28 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Apache Zookeeper
-Bundle-SymbolicName: org.apache.zookeeper
-Bundle-Version: 3.3.0.qualifier
-Bundle-ClassPath: conf/,
- zookeeper-3.3.0.jar
-Export-Package: org.apache.jute,
- org.apache.jute.compiler,
- org.apache.jute.compiler.generated, 
- org.apache.zookeeper,
- org.apache.zookeeper.common,
- org.apache.zookeeper.data,
- org.apache.zookeeper.jmx,
- org.apache.zookeeper.proto,
- org.apache.zookeeper.server,
- org.apache.zookeeper.server.auth,
- org.apache.zookeeper.server.persistence,
- org.apache.zookeeper.server.quorum,
- org.apache.zookeeper.server.upgrade,
- org.apache.zookeeper.server.util,
- org.apache.zookeeper.txn,
- org.apache.zookeeper.version,
- org.apache.zookeeper.version.util
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.apache.log4j
-Eclipse-RegisterBuddy: org.apache.log4j
-Bundle-Vendor: Eclipse.org - ECF
diff --git a/protocols/bundles/org.apache.zookeeper/build.properties b/protocols/bundles/org.apache.zookeeper/build.properties
deleted file mode 100644
index a964cb9..0000000
--- a/protocols/bundles/org.apache.zookeeper/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               overview.html,\
-               conf/,\
-               zookeeper-3.3.0.jar,\
-               asl-v20.txt,\
-               about.html
diff --git a/protocols/bundles/org.apache.zookeeper/conf/log4j.properties b/protocols/bundles/org.apache.zookeeper/conf/log4j.properties
deleted file mode 100644
index 9bccd39..0000000
--- a/protocols/bundles/org.apache.zookeeper/conf/log4j.properties
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# ZooKeeper Logging Configuration
-#
-
-# Format is "<default threshold> (, <appender>)+
-
-# DEFAULT: console appender only
-log4j.rootLogger=INFO, CONSOLE
-
-# Example with rolling log file
-#log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE
-
-# Example with rolling log file and tracing
-#log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE
-
-#
-# Log Error level and above messages to the console
-#
-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.Threshold=ERROR
-log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n
-
-#
-# Add ROLLINGFILE to rootLogger to get log file output
-#    Log DEBUG level and above messages to a log file
-log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
-log4j.appender.ROLLINGFILE.Threshold=ERROR
-log4j.appender.ROLLINGFILE.File=zookeeper.log
-
-# Max log file size of 10MB
-log4j.appender.ROLLINGFILE.MaxFileSize=10MB
-# uncomment the next line to limit number of backup files
-log4j.appender.ROLLINGFILE.MaxBackupIndex=1
-
-log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
-log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n
-
-
-#
-# Add TRACEFILE to rootLogger to get log file output
-#    Log DEBUG level and above messages to a log file
-log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
-log4j.appender.TRACEFILE.Threshold=TRACE
-log4j.appender.TRACEFILE.File=zookeeper_trace.log
-
-log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
-### Notice we are including log4j's NDC here (%x)
-log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n
diff --git a/protocols/bundles/org.apache.zookeeper/overview.html b/protocols/bundles/org.apache.zookeeper/overview.html
deleted file mode 100644
index fac050f..0000000
--- a/protocols/bundles/org.apache.zookeeper/overview.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-   <title>ZooKeeper</title>
-</head>
-<body>
-ZooKeeper is a service for coordinating processes of distributed applications.
-</body>
-</html>
diff --git a/protocols/bundles/org.apache.zookeeper/zookeeper-3.3.0.jar b/protocols/bundles/org.apache.zookeeper/zookeeper-3.3.0.jar
deleted file mode 100644
index 6920450..0000000
--- a/protocols/bundles/org.apache.zookeeper/zookeeper-3.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/NotificationSession.java b/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/NotificationSession.java
index 49c4b5a..9e7a573 100644
--- a/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/NotificationSession.java
+++ b/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/NotificationSession.java
@@ -274,7 +274,9 @@
 			}
 		} else if (input.indexOf("CHL") != -1) { //$NON-NLS-1$
 			// the read input is a challenge string
-			String query = Challenge.createQuery(StringUtils.splitSubstring(input, " ", 2)); //$NON-NLS-1$
+			//			String query = Challenge.createQuery(StringUtils.splitSubstring(input, " ", 2)); //$NON-NLS-1$
+			String query = MD5HashImpl.getMD5(StringUtils.splitSubstring(input, " ", 2)); //$NON-NLS-1$
+			//			Even this is wrong. we need to create a 64bit hash out of 128bit hash according to http://bit.ly/wdzdkd
 			write("QRY", Challenge.PRODUCT_ID + ' ' + query.length() + "\r\n" //$NON-NLS-1$ //$NON-NLS-2$
 					+ query, false);
 		} else if (input.indexOf("RNG") != -1) { //$NON-NLS-1$
diff --git a/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/internal/encode/MD5HashImpl.java b/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/internal/encode/MD5HashImpl.java
new file mode 100644
index 0000000..0be5e3f
--- /dev/null
+++ b/protocols/bundles/org.eclipse.ecf.protocol.msn/src/org/eclipse/ecf/protocol/msn/internal/encode/MD5HashImpl.java
@@ -0,0 +1,30 @@
+package org.eclipse.ecf.protocol.msn.internal.encode;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class MD5HashImpl {
+	public static String getMD5(String input) {
+		try {
+			MessageDigest md = MessageDigest.getInstance("MD5"); //$NON-NLS-1$
+			byte[] messageDigest = md.digest(input.getBytes());
+			BigInteger number = new BigInteger(1, messageDigest);
+			String hashtext = number.toString(16);
+			// Now we need to zero pad it if you actually want the full 32 chars.
+			while (hashtext.length() < 32) {
+				hashtext = "0" + hashtext; //$NON-NLS-1$
+			}
+			return hashtext;
+		} catch (NoSuchAlgorithmException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	/**
+	 * @throws NoSuchAlgorithmException  
+	 */
+	public static void main(String[] args) throws NoSuchAlgorithmException {
+		System.out.println(getMD5("22210219642164014968YMM8C_H7KCQ2S_KL")); //$NON-NLS-1$
+	}
+}
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/protocols/bundles/org.jivesoftware.smack/META-INF/eclipse.inf b/protocols/bundles/org.jivesoftware.smack/META-INF/eclipse.inf
new file mode 100644
index 0000000..0d4f4da
--- /dev/null
+++ b/protocols/bundles/org.jivesoftware.smack/META-INF/eclipse.inf
@@ -0,0 +1 @@
+jarprocessor.exclude.children=true
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/BitTorrentContainer.java b/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/BitTorrentContainer.java
index dc86af6..6b6ac8f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/BitTorrentContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/BitTorrentContainer.java
@@ -113,8 +113,6 @@
 
 		transferListener.handleTransferEvent(new IIncomingFileTransferReceiveStartEvent() {
 
-			private static final long serialVersionUID = 5195806924769910246L;
-
 			private IIncomingFileTransfer transfer;
 
 			private boolean cancelled = false;
diff --git a/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/TorrentFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/TorrentFileTransfer.java
index 56dca77..0bb9025 100644
--- a/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/TorrentFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.bittorrent/src/org/eclipse/ecf/internal/provider/bittorrent/TorrentFileTransfer.java
@@ -55,8 +55,6 @@
 			public void blockDownloaded(int piece, int index, int blockLength) {
 				TorrentFileTransfer.this.listener.handleTransferEvent(new IIncomingFileTransferReceiveDataEvent() {
 
-					private static final long serialVersionUID = -7666111308704272599L;
-
 					public IIncomingFileTransfer getSource() {
 						return TorrentFileTransfer.this;
 					}
@@ -90,8 +88,6 @@
 
 		listener.handleTransferEvent(new IIncomingFileTransferReceiveDoneEvent() {
 
-			private static final long serialVersionUID = -6685158329789351560L;
-
 			public Exception getException() {
 				return TorrentFileTransfer.this.exception;
 			}
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/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java
index e3c8df6..c3918b3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/provider/datashare/BaseChannel.java
@@ -129,8 +129,6 @@
 
 	IChannelConnectEvent createChannelGroupJoinEvent(final boolean hasJoined, final ID targetID) {
 		return new IChannelConnectEvent() {
-			private static final long serialVersionUID = -1085237280463725283L;
-
 			public ID getTargetID() {
 				return targetID;
 			}
@@ -149,8 +147,6 @@
 
 	IChannelDisconnectEvent createChannelGroupDepartEvent(final boolean hasJoined, final ID targetID) {
 		return new IChannelDisconnectEvent() {
-			private static final long serialVersionUID = -1085237280463725283L;
-
 			public ID getTargetID() {
 				return targetID;
 			}
@@ -178,8 +174,6 @@
 				if (l == null)
 					return event;
 				listener.handleChannelEvent(new IChannelMessageEvent() {
-					private static final long serialVersionUID = -2270885918818160970L;
-
 					public ID getFromContainerID() {
 						return event.getRemoteContainerID();
 					}
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF
index d9cc875..82bffec 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF
@@ -23,3 +23,4 @@
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.ecf.provider.dnssd;version="1.0.0"
 Require-Bundle: org.xbill.dns;bundle-version="2.0.8"
+Bundle-Localization: plugin
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 e9863e2..5f1cc8e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/build.properties
@@ -2,4 +2,8 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               plugin.xml
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+additional.bundles = org.eclipse.equinox.concurrent
+src.includes = about.html
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.properties
similarity index 74%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
copy to providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.properties
index e649bf6..045d27c 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.properties
@@ -1,11 +1,10 @@
-############################################################################
-# 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., 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

+#

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

+pluginName=ECF Discovery DNSSD Provider

+pluginProvider=Eclipse.org - ECF

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.efs/src/org/eclipse/ecf/internal/provider/filetransfer/efs/RetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.efs/src/org/eclipse/ecf/internal/provider/filetransfer/efs/RetrieveFileTransfer.java
index 9e363ce..f102804 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.efs/src/org/eclipse/ecf/internal/provider/filetransfer/efs/RetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.efs/src/org/eclipse/ecf/internal/provider/filetransfer/efs/RetrieveFileTransfer.java
@@ -78,8 +78,6 @@
 			setLastModifiedTime(info.getLastModified());
 			fileName = info.getName();
 			listener.handleTransferEvent(new IIncomingFileTransferReceiveStartEvent() {
-				private static final long serialVersionUID = 590077256618427122L;
-
 				public IIncomingFileTransfer getSource() {
 					return RetrieveFileTransfer.this;
 				}
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.api.tools.prefs
index dba04af..ab93531 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.api.tools.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient.ssl/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:16:56 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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.filetransfer.httpclient/.classpath b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.classpath
index 6f3b481..731ea5f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.classpath
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.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/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>
+<?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/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs
index e0cf154..02e9654 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:16:36 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=Error
-LEAK_EXTEND=Warning
-LEAK_FIELD_DECL=Warning
-LEAK_IMPLEMENT=Ignore
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+LEAK_EXTEND=Warning

+LEAK_FIELD_DECL=Warning

+LEAK_IMPLEMENT=Ignore

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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.filetransfer.httpclient/.settings/org.eclipse.pde.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs
index 05ef9da..5560427 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/.settings/org.eclipse.pde.prefs
@@ -1,9 +1,15 @@
-#Fri Jan 29 14:33:19 PST 2010
 compilers.f.unresolved-features=1
 compilers.f.unresolved-plugins=1
-compilers.incompatible-environment=1
+compilers.incompatible-environment=2
 compilers.p.build=2
+compilers.p.build.bin.includes=1
+compilers.p.build.encodings=2
+compilers.p.build.java.compiler=2
+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=0
 compilers.p.internal=1
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..e734c27 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.300.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..70b7686
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectionManagerHelper.java
@@ -0,0 +1,172 @@
+/*******************************************************************************

+* 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() {

+		// Nothing

+	}

+

+	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..a58b6cb 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,9 +9,11 @@
  *  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;
 
+import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
@@ -69,6 +71,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 +273,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 +318,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() {
@@ -393,13 +395,30 @@
 	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#hardClose()
 	 */
 	protected void hardClose() {
-		super.hardClose();
+		// changed for addressing bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=370801
 		if (getMethod != null) {
+			// First, if !isDone and paused
+			if (!isDone() && isPaused())
+				getMethod.abort();
+			// release in any case
 			getMethod.releaseConnection();
+			// and set to null
 			getMethod = null;
 		}
+		// Close output stream...if we're supposed to
+		try {
+			if (localFileContents != null && closeOutputStream)
+				localFileContents.close();
+		} catch (final IOException e) {
+			Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, "hardClose", e)); //$NON-NLS-1$
+		}
+		// clear input and output streams
+		remoteFileContents = null;
+		localFileContents = null;
+		// reset response code
 		responseCode = -1;
-		if (proxyHelper != null) {
+		// If we're done and proxy helper still exists, then dispose
+		if (proxyHelper != null && isDone()) {
 			proxyHelper.dispose();
 			proxyHelper = null;
 		}
@@ -593,7 +612,20 @@
 	}
 
 	protected InputStream wrapTransferReadInputStream(InputStream inputStream, IProgressMonitor monitor) {
-		return inputStream;
+		// Added to address bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=370801
+		return new NoCloseWrapperInputStream(inputStream);
+	}
+
+	// Added to address bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=370801
+	class NoCloseWrapperInputStream extends FilterInputStream {
+
+		protected NoCloseWrapperInputStream(InputStream in) {
+			super(in);
+		}
+
+		public void close() {
+			// do nothing
+		}
 	}
 
 	protected boolean hasForceNTLMProxyOption() {
@@ -604,58 +636,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 +662,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.
@@ -836,13 +825,19 @@
 			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;
 		// This is wrong as if the url has no colonPort before '?' then it should return the default
 
-		final int colonPort = url.indexOf(':', colonSlashSlash + 1);
+		int colonPort = url.indexOf(':', colonSlashSlash + 1);
 		if (colonPort < 0)
 			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;
 		// Make sure that the colonPort is not from some part of the rest of the URL
 		int nextSlash = url.indexOf('/', colonSlashSlash + 3);
 		if (nextSlash != -1 && colonPort > nextSlash)
 			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;
+		// Make sure the colonPort is not part of the credentials in URI
+		final int atServer = url.indexOf('@', colonSlashSlash + 1);
+		if (atServer != -1 && colonPort < atServer && atServer < nextSlash)
+			colonPort = url.indexOf(':', atServer + 1);
+		if (colonPort < 0)
+			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;
 
 		final int requestPath = url.indexOf('/', colonPort + 1);
 
@@ -917,10 +912,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 +920,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/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.classpath
similarity index 99%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.classpath
index 64c5e31..2d1a430 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.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/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.gitignore
similarity index 100%
rename from providers/bundles/org.eclipse.ecf.provider.localdiscovery/.gitignore
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.gitignore
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.project
similarity index 89%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.project
index 1acd148..18e8c76 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.project
@@ -1,28 +1,28 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.provider.filetransfer.httpclient4.ssl</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.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
copy from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.settings/org.eclipse.jdt.core.prefs
index 122a97b..44217f8 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,7 @@
-#Mon Oct 11 08:19:28 MSD 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+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/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.settings/org.eclipse.pde.core.prefs
similarity index 74%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..b7e72d0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,3 @@
-#Tue May 04 19:23:54 PDT 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
+eclipse.preferences.version=1

+pluginProject.extensions=false

+resolve.requirebundle=false

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8f701b2
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %plugin.name
+Bundle-Vendor: %plugin.provider
+Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient4.ssl
+Bundle-Version: 1.0.0.qualifier
+Fragment-Host: org.eclipse.ecf.provider.filetransfer.httpclient4;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
diff --git a/protocols/bundles/org.apache.zookeeper/about.html b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/about.html
similarity index 89%
copy from protocols/bundles/org.apache.zookeeper/about.html
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/about.html
index e805216..616d35c 100644
--- a/protocols/bundles/org.apache.zookeeper/about.html
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/about.html
@@ -8,7 +8,7 @@
 <body lang="EN-US">
 	<h3>About This Content</h3>
 
-		<p>June 15, 2010</p>	
+		<p>June 25, 2008</p>	
 		<h3>License</h3>
 
 		<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
@@ -30,16 +30,36 @@
 		for informational purposes only, and you should look to the Redistributor's license for 
 		terms and conditions of use.</p>
 
-<h4>Apache Zookeeper v3.3.0</h4>
+<h4>Apache HttpClient v3.1.0</h4>
 
-<p>This plugin is based on software developed by the <a href="http://hadoop.apache.org/zookeeper/">Apache Zookeeper</a> project team at 
-<a href="http://hadoop.apache.org/zookeeper/">http://hadoop.apache.org/zookeeper/</a>.
+<p>This plugin is based on software developed by the Apache Httpclient project at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.
 A copy of this library is distributed within this plugin and
 therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
 in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
 at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
 </p>
 
+<h4>Apache Commons Codec v1.3</h4>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/codec/">http://jakarta.apache.org/commons/codec/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h4>Apache Commons Logging v1.0.4</h4>
+
+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
 <p>
 More specifically:</p>
 
diff --git a/protocols/bundles/org.apache.zookeeper/asl-v20.txt b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/asl-v20.txt
similarity index 100%
rename from protocols/bundles/org.apache.zookeeper/asl-v20.txt
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/asl-v20.txt
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/build.properties
similarity index 68%
rename from tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/build.properties
index 3f4964b..41eb6ad 100644
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/build.properties
@@ -1,5 +1,4 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
-jre.compilation.profile = J2SE-1.4
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/plugin.properties
similarity index 78%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/plugin.properties
index e649bf6..b2e4eef 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/plugin.properties
@@ -1,11 +1,11 @@
 ############################################################################
-# Copyright (c) 2010 Composent and others.
+# Copyright (c) 2007 Composent Inc., 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
 #
 ############################################################################
-plugin.name=ECF Distribution Tests LocalDiscovery
+plugin.name=ECF Filetransfer HttpComponents SSL Fragment
 plugin.provider=Eclipse.org - ECF
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ssl/SSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ssl/SSLSocketFactoryModifier.java
new file mode 100644
index 0000000..d887bb9
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ssl/SSLSocketFactoryModifier.java
@@ -0,0 +1,50 @@
+/****************************************************************************
+ * Copyright (c) 2008, 2009 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Composent, Inc. - initial API and implementation
+ *    Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy
+ *****************************************************************************/
+
+package org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ssl;
+
+import java.io.IOException;
+import java.net.Socket;
+import javax.net.ssl.SSLSocketFactory;
+import org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator;
+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier;
+
+public class SSLSocketFactoryModifier implements ISSLSocketFactoryModifier, INonconnectedSocketFactory {
+
+	public void dispose() {
+		// nothing to do
+	}
+
+	public SSLSocketFactory getSSLSocketFactory() throws IOException {
+		final SSLSocketFactory factory = Activator.getDefault().getSSLSocketFactory();
+		if (factory == null)
+			throw new IOException("Cannot get socket factory"); //$NON-NLS-1$
+		return factory;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.internal.provider.filetransfer.httpclient.ISSLSocketFactoryModifier#getNonconnnectedSocketFactory()
+	 */
+	public INonconnectedSocketFactory getNonconnnectedSocketFactory() {
+		return this;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory#createSocket()
+	 */
+	public Socket createSocket() throws IOException {
+		final SSLSocketFactory factory = getSSLSocketFactory();
+		return factory.createSocket();
+	}
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.classpath
similarity index 99%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.classpath
index 64c5e31..2d1a430 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.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/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.gitignore b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.gitignore
new file mode 100644
index 0000000..092357e
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.gitignore
@@ -0,0 +1 @@
+bin

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.options b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.options
new file mode 100644
index 0000000..367808d
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.options
@@ -0,0 +1,16 @@
+# Debugging options for the org.eclipse.ecf.provider.filetransfer.httpclient4 plug-in

+

+# Turn on general debugging for the org.eclipse.ecf.provider.filetransfer.httpclient4 plug-in

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug=false

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug/filter = *

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug/flag = false

+

+# Trace when exceptions are caught

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug/exceptions/catching=false

+# Trace when exceptions are thrown

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug/exceptions/throwing=false

+

+# Trace when methods are entered

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug/methods/entering=false

+# Trace when methods are exited

+org.eclipse.ecf.provider.filetransfer.httpclient4/debug/methods/exiting=false

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.project
similarity index 92%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.project
index fbb61be..7e8e9ff 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/.project
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.project
@@ -1,34 +1,34 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.provider.filetransfer.httpclient4</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/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
rename from protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.jdt.core.prefs
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.core.prefs
index 6c9cf76..57766aa 100644
--- a/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.core.prefs
@@ -1,344 +1,350 @@
-#Tue May 18 21:50:05 CEST 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.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=warning
-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.unsafeTypeOperation=warning
-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_annotation=0
-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_method_declaration=0
-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.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-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.disabling_tag=
-org.eclipse.jdt.core.formatter.enabling_tag=
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-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_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-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.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-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
+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=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.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=ignore

+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=ignore

+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.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.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.5

+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/.settings/org.eclipse.jdt.launching.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.launching.prefs
similarity index 77%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.launching.prefs
index 03423ff..4249b08 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.jdt.launching.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.launching.prefs
@@ -1,3 +1,3 @@
-#Tue Feb 03 16:43:43 PST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore
+#Tue Feb 03 16:03:47 PST 2009

+eclipse.preferences.version=1

+org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore

diff --git a/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.jdt.ui.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.ui.prefs
similarity index 93%
rename from protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.jdt.ui.prefs
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.ui.prefs
index f7d8259..8af7540 100644
--- a/protocols/bundles/org.apache.zookeeper/.settings/org.eclipse.jdt.ui.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.jdt.ui.prefs
@@ -1,62 +1,61 @@
-#Tue May 18 21:50:05 CEST 2010
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-internal.default.compliance=user
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-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_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=false
-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.format_source_code_changes_only=false
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-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
+#Thu Mar 12 11:02:43 PDT 2009

+eclipse.preferences.version=1

+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true

+formatter_profile=_core

+formatter_settings_version=11

+internal.default.compliance=user

+org.eclipse.jdt.ui.ignorelowercasenames=true

+org.eclipse.jdt.ui.importorder=

+org.eclipse.jdt.ui.ondemandthreshold=100

+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_methods=false

+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.format_source_code_changes_only=false

+sp_cleanup.make_local_variable_final=false

+sp_cleanup.make_parameters_final=false

+sp_cleanup.make_private_fields_final=true

+sp_cleanup.make_type_abstract_if_missing_method=false

+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/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.pde.api.tools.prefs
similarity index 96%
rename from providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.pde.api.tools.prefs
index 7ba0fd8..9cff9c9 100644
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/.settings/org.eclipse.pde.api.tools.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Ignore

+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

+MISSING_EE_DESCRIPTIONS=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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.pde.prefs
similarity index 89%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.pde.prefs
index b015a19..6d29c5f 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/.settings/org.eclipse.pde.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/.settings/org.eclipse.pde.prefs
@@ -1,26 +1,27 @@
-#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
+#Fri Jan 29 14:33:19 PST 2010

+compilers.f.unresolved-features=1

+compilers.f.unresolved-plugins=1

+compilers.incompatible-environment=1

+compilers.p.build=2

+compilers.p.build.missing.output=2

+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/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a82e219
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF
@@ -0,0 +1,36 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: %plugin.name

+Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient4;singleton:=true

+Bundle-Version: 1.0.200.qualifier

+Bundle-Localization: plugin

+Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator

+Require-Bundle: org.eclipse.equinox.common,

+ org.eclipse.ecf.provider.filetransfer,

+ org.eclipse.ecf,

+ org.eclipse.ecf.filetransfer,

+ org.apache.httpcomponents.httpclient;bundle-version="4.1.0",

+ org.eclipse.osgi,

+ org.apache.commons.logging;bundle-version="1.1.1"

+Eclipse-LazyStart: true

+Import-Package: org.apache.http;version="4.1.0",

+ org.apache.http.entity;version="4.1.0",

+ org.apache.http.impl;version="4.1.0",

+ org.apache.http.impl.entity;version="4.1.0",

+ org.apache.http.impl.io;version="4.1.0",

+ org.apache.http.io;version="4.1.0",

+ org.apache.http.message;version="4.1.0",

+ org.apache.http.params;version="4.1.0",

+ org.apache.http.protocol;version="4.1.0",

+ org.apache.http.util;version="4.1.0",

+ org.eclipse.core.runtime.jobs,

+ org.eclipse.osgi.util;version="1.0.0",

+ org.osgi.framework;version="1.3.0",

+ org.osgi.service.log;version="1.3.0",

+ org.osgi.service.url;version="1.0.0",

+ org.osgi.util.tracker;version="1.3.2"

+Export-Package: org.eclipse.ecf.internal.provider.filetransfer.httpclient4;x-internal:=true,

+ org.eclipse.ecf.provider.filetransfer.httpclient4

+Bundle-Vendor: %plugin.provider

+Bundle-RequiredExecutionEnvironment: J2SE-1.5

+Bundle-ActivationPolicy: lazy

diff --git a/protocols/bundles/org.apache.zookeeper/about.html b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/about.html
similarity index 92%
rename from protocols/bundles/org.apache.zookeeper/about.html
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/about.html
index e805216..f965889 100644
--- a/protocols/bundles/org.apache.zookeeper/about.html
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/about.html
@@ -1,254 +1,265 @@
-<!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">
-	<h3>About This Content</h3>
-
-		<p>June 15, 2010</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/org/documents/epl-v10.php">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's license for 
-		terms and conditions of use.</p>
-
-<h4>Apache Zookeeper v3.3.0</h4>
-
-<p>This plugin is based on software developed by the <a href="http://hadoop.apache.org/zookeeper/">Apache Zookeeper</a> project team at 
-<a href="http://hadoop.apache.org/zookeeper/">http://hadoop.apache.org/zookeeper/</a>.
-A copy of this library is distributed within this plugin and
-therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
-in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
-at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
-</p>
-
-<p>
-More specifically:</p>
-
-<p></p>
-
-<pre>
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-</pre>
-
-</body>
+<!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">

+	<h3>About This Content</h3>

+

+		<p>May 4, 2012</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/org/documents/epl-v10.php">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's license for 

+		terms and conditions of use.</p>

+

+<h4>Apache HttpComponents v4.1.2</h4>

+

+<p>This plugin is based on software developed by the Apache HttpComponents project at <a href="http://hc.apache.org/">http://hc.apache.org/</a>.

+A copy of this library is distributed within this plugin and

+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained

+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 

+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.

+</p>

+

+<h4>Apache Commons Logging v1.1.1</h4>

+

+<p>This plugin is based on software developed by the Apache Commons Codec project at <a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a>.

+A copy of this library is distributed within this plugin and

+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained

+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 

+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.

+</p>

+

+<p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0

+which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.

+</p>

+<p>

+More specifically:</p>

+

+<p></p>

+

+<pre>

+

+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   Licensed under the Apache License, Version 2.0 (the "License");

+   you may not use this file except in compliance with the License.

+   You may obtain a copy of the License at

+

+       http://www.apache.org/licenses/LICENSE-2.0

+

+   Unless required by applicable law or agreed to in writing, software

+   distributed under the License is distributed on an "AS IS" BASIS,

+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+   See the License for the specific language governing permissions and

+   limitations under the License.

+</pre>

+

+</body>

 </html>
\ No newline at end of file
diff --git a/protocols/bundles/org.apache.zookeeper/about.html b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/asl-v20.txt
similarity index 81%
copy from protocols/bundles/org.apache.zookeeper/about.html
copy to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/asl-v20.txt
index e805216..75b5248 100644
--- a/protocols/bundles/org.apache.zookeeper/about.html
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/asl-v20.txt
@@ -1,254 +1,202 @@
-<!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">
-	<h3>About This Content</h3>
-
-		<p>June 15, 2010</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/org/documents/epl-v10.php">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's license for 
-		terms and conditions of use.</p>
-
-<h4>Apache Zookeeper v3.3.0</h4>
-
-<p>This plugin is based on software developed by the <a href="http://hadoop.apache.org/zookeeper/">Apache Zookeeper</a> project team at 
-<a href="http://hadoop.apache.org/zookeeper/">http://hadoop.apache.org/zookeeper/</a>.
-A copy of this library is distributed within this plugin and
-therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
-in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
-at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
-</p>
-
-<p>
-More specifically:</p>
-
-<p></p>
-
-<pre>
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-</pre>
-
-</body>
-</html>
\ No newline at end of file
+

+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   Licensed under the Apache License, Version 2.0 (the "License");

+   you may not use this file except in compliance with the License.

+   You may obtain a copy of the License at

+

+       http://www.apache.org/licenses/LICENSE-2.0

+

+   Unless required by applicable law or agreed to in writing, software

+   distributed under the License is distributed on an "AS IS" BASIS,

+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+   See the License for the specific language governing permissions and

+   limitations under the License.

diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/build.properties
similarity index 61%
rename from compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/build.properties
index 361c078..00bfa90 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/build.properties
@@ -1,10 +1,11 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               about.html,\
-               .options
-src.includes = about.html
-jre.compilation.profile = J2SE-1.4
-javacErrors.. = -assertIdentifier,-enumIdentifier
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .,\

+               plugin.xml,\

+               about.html,\

+               plugin.properties,\

+               asl-v20.txt

+src.includes = about.html,\

+               asl-v20.txt

+jre.compilation.profile = J2SE-1.4

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/plugin.properties
similarity index 79%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
rename to providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/plugin.properties
index e649bf6..c7379d0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/plugin.properties
@@ -1,11 +1,11 @@
-############################################################################
-# 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) 2007 Composent Inc., 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

+#

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

+plugin.name=ECF HttpComponents Filetransfer Provider

+plugin.provider=Eclipse.org - ECF

+

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/plugin.xml
new file mode 100644
index 0000000..a526ace
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/plugin.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.2"?>

+<plugin>

+   <extension

+         point="org.eclipse.ecf.provider.filetransfer.retrieveFileTransferProtocolFactory">

+      <retrieveFileTransferProtocolFactory

+            class="org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransferFactory"

+            protocol="http"

+            priority="45">

+      </retrieveFileTransferProtocolFactory>

+      <retrieveFileTransferProtocolFactory

+            class="org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransferFactory"

+            protocol="https"

+            priority="45">

+      </retrieveFileTransferProtocolFactory>

+   </extension>

+

+   <extension

+         point="org.eclipse.ecf.provider.filetransfer.browseFileTransferProtocolFactory">

+      <browseFileTransferProtocolFactory

+            class="org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientBrowseFileTransferFactory"

+            protocol="http"

+            priority="45">

+      </browseFileTransferProtocolFactory>

+      <browseFileTransferProtocolFactory

+            class="org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientBrowseFileTransferFactory"

+            protocol="https"

+            priority="45">

+      </browseFileTransferProtocolFactory>

+    </extension>

+

+</plugin>

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java
new file mode 100644
index 0000000..496bc8a
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java
@@ -0,0 +1,130 @@
+/****************************************************************************

+ * Copyright (c) 2007 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

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

+ *

+ * Contributors:

+ *    Chris Aniszczyk - initial API and implementation

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

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

+

+import javax.net.ssl.SSLSocketFactory;

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

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

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

+import org.osgi.framework.BundleActivator;

+import org.osgi.framework.BundleContext;

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

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

+

+/**

+ * 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.provider.filetransfer.httpclient4"; //$NON-NLS-1$

+

+	// The shared instance

+	private static Activator plugin;

+	private BundleContext context = null;

+

+	private ServiceTracker logServiceTracker = null;

+

+	private ServiceTracker sslSocketFactoryTracker;

+

+	private ISSLSocketFactoryModifier sslSocketFactoryModifier;

+

+	/**

+	 * The constructor

+	 */

+	public Activator() {

+		//

+	}

+

+	public BundleContext getContext() {

+		return context;

+	}

+

+	public void start(BundleContext ctxt) throws Exception {

+		plugin = this;

+		this.context = ctxt;

+		// initialize the default sslSocketFactoryModifier.  This instance is then used within HttpClientRetrieveFileTransfer.setupHostAndPort

+		// to set the socket factory for the specific proxy and httpclient instance

+		try {

+			Class socketFactoryModifierClass = Class.forName("org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ssl.SSLSocketFactoryModifier"); //$NON-NLS-1$

+			sslSocketFactoryModifier = (ISSLSocketFactoryModifier) socketFactoryModifierClass.newInstance();

+		} catch (ClassNotFoundException e) {

+			// will occur if fragment is not installed or not on proper execution environment

+		} catch (Throwable t) {

+			log(new Status(IStatus.ERROR, PLUGIN_ID, "Unexpected Error in Activator.start", t)); //$NON-NLS-1$

+		}

+

+	}

+

+	public ISSLSocketFactoryModifier getSSLSocketFactoryModifier() {

+		return sslSocketFactoryModifier;

+	}

+

+	public void stop(BundleContext ctxt) throws Exception {

+		if (sslSocketFactoryModifier != null) {

+			sslSocketFactoryModifier.dispose();

+			sslSocketFactoryModifier = null;

+		}

+

+		if (sslSocketFactoryTracker != null) {

+			sslSocketFactoryTracker.close();

+		}

+

+		if (logServiceTracker != null) {

+			logServiceTracker.close();

+		}

+		this.context = null;

+		plugin = null;

+	}

+

+	/**

+	 * Returns the shared instance

+	 *

+	 * @return the shared instance

+	 */

+	public synchronized static Activator getDefault() {

+		if (plugin == null) {

+			plugin = new Activator();

+		}

+		return plugin;

+	}

+

+	protected LogService getLogService() {

+		if (logServiceTracker == null) {

+			logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null);

+			logServiceTracker.open();

+		}

+		return (LogService) logServiceTracker.getService();

+	}

+

+	public void log(IStatus status) {

+		LogService logService = getLogService();

+		if (logService != null) {

+			logService.log(LogHelper.getLogCode(status), LogHelper.getLogMessage(status), status.getException());

+		}

+	}

+

+	public SSLSocketFactory getSSLSocketFactory() {

+		if (sslSocketFactoryTracker == null) {

+			sslSocketFactoryTracker = new ServiceTracker(this.context, SSLSocketFactory.class.getName(), null);

+			sslSocketFactoryTracker.open();

+		}

+		return (SSLSocketFactory) sslSocketFactoryTracker.getService();

+	}

+

+	public static void logNoProxyWarning(Throwable e) {

+		Activator a = getDefault();

+		if (a != null) {

+			a.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, IStatus.ERROR, "Warning: Platform proxy API not available", e)); //$NON-NLS-1$

+		}

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/CloseMonitoringSocket.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/CloseMonitoringSocket.java
new file mode 100644
index 0000000..f455935
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/CloseMonitoringSocket.java
@@ -0,0 +1,69 @@
+/*******************************************************************************

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

+*   Thomas Joiner - extracted implementation from the Socket factories

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

+

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

+

+import java.io.IOException;

+import java.net.Socket;

+import javax.net.ssl.SSLSocket;

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

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEventSource;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;

+import org.eclipse.ecf.provider.filetransfer.events.socket.AbstractSocketWrapper;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketClosedEvent;

+

+class CloseMonitoringSocket extends AbstractSocketWrapper {

+

+	private boolean closed = false;

+	private final ISocketListener spyListener;

+	private final ISocketEventSource source;

+	private Socket wrappedSocket;

+

+	public CloseMonitoringSocket(Socket toWrap, ISocketListener spyListener, ISocketEventSource source) {

+		super(toWrap);

+		this.spyListener = spyListener;

+		this.source = source;

+	}

+

+	public synchronized void close() throws IOException {

+		if (!closed) {

+			closed = true;

+

+			try {

+				Trace.trace(Activator.PLUGIN_ID, "closing socket " + this.toString()); //$NON-NLS-1$

+				super.close();

+			} finally {

+				fireEvent(new SocketClosedEvent(source, getSocket(), (wrappedSocket != null ? wrappedSocket : this)));

+			}

+		}

+	}

+

+	private void fireEvent(ISocketEvent event) {

+		if (spyListener != null) {

+			spyListener.handleSocketEvent(event);

+		}

+		event.getSource().fireEvent(event);

+	}

+

+	public boolean isSecure() {

+		return getSocket() instanceof SSLSocket;

+	}

+

+	Socket getWrappedSocket() {

+		return wrappedSocket;

+	}

+

+	void setWrappedSocket(Socket wrappedSocket) {

+		this.wrappedSocket = wrappedSocket;

+	}

+

+}
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java
new file mode 100644
index 0000000..d3db774
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java
@@ -0,0 +1,46 @@
+/*******************************************************************************

+* Copyright (c) 2009 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.httpclient4;

+

+import java.util.*;

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

+

+public class ConnectingSocketMonitor implements ISocketListener {

+

+	private Map connectingSockets;

+

+	public ConnectingSocketMonitor(int initialCapacity) {

+		connectingSockets = Collections.synchronizedMap(new HashMap(initialCapacity));

+	}

+

+	public ConnectingSocketMonitor() {

+		connectingSockets = Collections.synchronizedMap(new HashMap());

+	}

+

+	public Collection getConnectingSockets() {

+		return Collections.unmodifiableCollection(connectingSockets.keySet());

+	}

+

+	public void clear() {

+		connectingSockets.clear();

+	}

+

+	public void handleSocketEvent(ISocketEvent event) {

+		if (event instanceof ISocketCreatedEvent) {

+			connectingSockets.put(event.getFactorySocket(), event);

+		} else if (event instanceof ISocketConnectedEvent) {

+			connectingSockets.remove(event.getFactorySocket());

+		} else if (event instanceof ISocketClosedEvent) {

+			connectingSockets.remove(event.getFactorySocket());

+		}

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/DebugOptions.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/DebugOptions.java
new file mode 100644
index 0000000..0834c04
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/DebugOptions.java
@@ -0,0 +1,23 @@
+/*******************************************************************************

+ * 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.filetransfer.httpclient4;

+

+public interface DebugOptions {

+

+	public static final String DEBUG = Activator.PLUGIN_ID + "/debug"; //$NON-NLS-1$

+

+	public static final String EXCEPTIONS_CATCHING = DEBUG + "/exceptions/catching"; //$NON-NLS-1$

+

+	public static final String EXCEPTIONS_THROWING = DEBUG + "/exceptions/throwing"; //$NON-NLS-1$

+

+	public static final String METHODS_ENTERING = DEBUG + "/methods/entering"; //$NON-NLS-1$

+

+	public static final String METHODS_EXITING = DEBUG + "/methods/exiting"; //$NON-NLS-1$

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ECFHttpClientProtocolSocketFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ECFHttpClientProtocolSocketFactory.java
new file mode 100644
index 0000000..ac5a32b
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ECFHttpClientProtocolSocketFactory.java
@@ -0,0 +1,132 @@
+/*******************************************************************************

+ * Copyright (c) 2009 IBM Corporation 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

+ *     Thomas Joiner - HttpClient 4 implementation

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

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

+

+import java.io.IOException;

+import java.net.InetSocketAddress;

+import java.net.Socket;

+import java.net.UnknownHostException;

+import javax.net.SocketFactory;

+import javax.net.ssl.SSLSocket;

+import org.apache.http.conn.ConnectTimeoutException;

+import org.apache.http.conn.scheme.SchemeSocketFactory;

+import org.apache.http.params.CoreConnectionPNames;

+import org.apache.http.params.HttpParams;

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

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

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEventSource;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;

+import org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketClosedEvent;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketConnectedEvent;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketCreatedEvent;

+

+public class ECFHttpClientProtocolSocketFactory implements SchemeSocketFactory {

+

+	protected ISocketEventSource source;

+	private INonconnectedSocketFactory unconnectedFactory;

+	private ISocketListener socketConnectListener;

+

+	private static final ISocketListener NULL_SOCKET_EVENT_LISTENER = new ISocketListener() {

+		public void handleSocketEvent(ISocketEvent event) {

+			//empty

+		}

+	};

+

+	public ECFHttpClientProtocolSocketFactory(INonconnectedSocketFactory unconnectedFactory, ISocketEventSource source, ISocketListener socketConnectListener) {

+		super();

+		Assert.isNotNull(unconnectedFactory);

+		Assert.isNotNull(source);

+		this.unconnectedFactory = unconnectedFactory;

+		this.source = source;

+		this.socketConnectListener = socketConnectListener != null ? socketConnectListener : NULL_SOCKET_EVENT_LISTENER;

+	}

+

+	public ECFHttpClientProtocolSocketFactory(final SocketFactory socketFactory, ISocketEventSource source, ISocketListener socketConnectListener) {

+		this(new INonconnectedSocketFactory() {

+			public Socket createSocket() throws IOException {

+				return socketFactory.createSocket();

+			}

+		}, source, socketConnectListener);

+	}

+

+	public Socket createSocket(HttpParams params) throws IOException {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, ECFHttpClientProtocolSocketFactory.class, "createSocket"); //$NON-NLS-1$

+

+		final Socket factorySocket = unconnectedFactory.createSocket();

+		fireEvent(socketConnectListener, new SocketCreatedEvent(source, factorySocket));

+

+		Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, ECFHttpClientProtocolSocketFactory.class, "socketCreated " + factorySocket); //$NON-NLS-1$

+

+		return factorySocket;

+	}

+

+	public Socket connectSocket(final Socket sock, InetSocketAddress remoteAddress, InetSocketAddress localAddress, HttpParams params) throws IOException, UnknownHostException, ConnectTimeoutException {

+		int timeout = params.getIntParameter(CoreConnectionPNames.SO_TIMEOUT, 0);

+

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, ECFHttpClientProtocolSocketFactory.class, "connectSocket " + remoteAddress.toString() + " timeout=" + timeout); //$NON-NLS-1$ //$NON-NLS-2$

+

+		try {

+			// Use String.valueOf to protect against null

+			Trace.trace(Activator.PLUGIN_ID, "bind(" + String.valueOf(localAddress) + ")"); //$NON-NLS-1$//$NON-NLS-2$

+			sock.bind(localAddress);

+			Trace.trace(Activator.PLUGIN_ID, "connect(" + remoteAddress.toString() + ", " + timeout + ")"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$

+			sock.connect(remoteAddress, timeout);

+			Trace.trace(Activator.PLUGIN_ID, "connected"); //$NON-NLS-1$

+		} catch (IOException e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, ECFHttpClientProtocolSocketFactory.class, "createSocket", e); //$NON-NLS-1$

+			fireEvent(socketConnectListener, new SocketClosedEvent(source, sock, sock));

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, ECFHttpClientProtocolSocketFactory.class, "createSocket", e); //$NON-NLS-1$

+			throw e;

+		}

+

+		Socket toReturn;

+		Socket wrapped = new CloseMonitoringSocket(sock, socketConnectListener, source);

+

+		SocketConnectedEvent connectedEvent = new SocketConnectedEvent(source, sock, wrapped);

+		fireEvent(socketConnectListener, connectedEvent);

+

+		// Change the wrapped socket if one of the receivers of the SocketConnectedEvent changed it

+		if (connectedEvent.getSocket() != wrapped) {

+			toReturn = connectedEvent.getSocket();

+			((CloseMonitoringSocket) wrapped).setWrappedSocket(toReturn);

+		} else {

+			toReturn = wrapped;

+		}

+

+		return toReturn;

+	}

+

+	private static void fireEvent(final ISocketListener spyListener, ISocketEvent event) {

+		if (spyListener != null) {

+			spyListener.handleSocketEvent(event);

+		}

+		event.getSource().fireEvent(event);

+	}

+

+	public boolean isSecure(Socket sock) throws IllegalArgumentException {

+		if (sock instanceof SSLSocket) {

+			throw new IllegalArgumentException("Socket not created by this factory."); //$NON-NLS-1$

+		}

+

+		return false;

+	}

+

+	public boolean equals(Object obj) {

+		return (obj instanceof ECFHttpClientProtocolSocketFactory);

+	}

+

+	public int hashCode() {

+		return ECFHttpClientProtocolSocketFactory.class.hashCode();

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ECFHttpClientSecureProtocolSocketFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ECFHttpClientSecureProtocolSocketFactory.java
new file mode 100644
index 0000000..d6c746e
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ECFHttpClientSecureProtocolSocketFactory.java
@@ -0,0 +1,176 @@
+/*******************************************************************************

+ * Copyright (c) 2009 IBM Corporation 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

+ *     Thomas Joiner - HttpClient 4 implementation

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

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

+

+import java.io.IOException;

+import java.net.InetSocketAddress;

+import java.net.Socket;

+import java.net.SocketException;

+import java.net.UnknownHostException;

+import javax.net.ssl.SSLSocket;

+import javax.net.ssl.SSLSocketFactory;

+import org.apache.http.conn.ConnectTimeoutException;

+import org.apache.http.conn.scheme.LayeredSchemeSocketFactory;

+import org.apache.http.params.HttpConnectionParams;

+import org.apache.http.params.HttpParams;

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

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEventSource;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketClosedEvent;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketConnectedEvent;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketCreatedEvent;

+

+public final class ECFHttpClientSecureProtocolSocketFactory implements LayeredSchemeSocketFactory {

+

+	private final SSLSocketFactory sslSocketFactory;

+	private final ISocketEventSource source;

+	private final ISocketListener socketConnectListener;

+

+	public ECFHttpClientSecureProtocolSocketFactory(final SSLSocketFactory sslSocketFactory, ISocketEventSource source, ISocketListener socketConnectListener) {

+		this.sslSocketFactory = sslSocketFactory;

+		this.source = source;

+		this.socketConnectListener = socketConnectListener;

+	}

+

+	public Socket createSocket(final HttpParams params) {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, ECFHttpClientSecureProtocolSocketFactory.class, "createSocket"); //$NON-NLS-1$

+

+		Socket socket = new Socket();

+		fireEvent(socketConnectListener, new SocketCreatedEvent(source, socket));

+

+		Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, ECFHttpClientSecureProtocolSocketFactory.class, "socketCreated " + socket); //$NON-NLS-1$

+		return socket;

+	}

+

+	public Socket connectSocket(final Socket socket, final InetSocketAddress remoteAddress, final InetSocketAddress localAddress, final HttpParams params) throws IOException, UnknownHostException, ConnectTimeoutException {

+		if (remoteAddress == null) {

+			throw new IllegalArgumentException("Remote address must not be null"); //$NON-NLS-1$

+		}

+		if (params == null) {

+			throw new IllegalArgumentException("HTTP parameters must not be null"); //$NON-NLS-1$

+		}

+

+		if (socket == null) {

+			SSLSocket sslSocket = (SSLSocket) this.sslSocketFactory.createSocket();

+

+			performConnection(sslSocket, remoteAddress, localAddress, params);

+

+			return wrapSocket(sslSocket);

+		} else if (socket instanceof SSLSocket) {

+			performConnection(socket, remoteAddress, localAddress, params);

+

+			return wrapSocket(socket);

+		}

+

+		// If we were given a unconnected socket, we need to connect it first

+		if (!socket.isConnected()) {

+			performConnection(socket, remoteAddress, localAddress, params);

+		}

+

+		Socket layeredSocket = this.sslSocketFactory.createSocket(socket, remoteAddress.getHostName(), remoteAddress.getPort(), true);

+

+		return wrapSocket(layeredSocket);

+	}

+

+	private void performConnection(final Socket socket, final InetSocketAddress remoteAddress, final InetSocketAddress localAddress, final HttpParams params) throws SocketException, IOException {

+		try {

+			socket.setReuseAddress(HttpConnectionParams.getSoReuseaddr(params));

+			socket.bind(localAddress);

+

+			int connectionTimeout = HttpConnectionParams.getConnectionTimeout(params);

+			int socketTimeout = HttpConnectionParams.getSoTimeout(params);

+

+			socket.connect(remoteAddress, connectionTimeout);

+			socket.setSoTimeout(socketTimeout);

+		} catch (SocketException e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, ECFHttpClientSecureProtocolSocketFactory.class, "performConnection", e); //$NON-NLS-1$

+			fireEvent(this.socketConnectListener, new SocketClosedEvent(source, socket, socket));

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, ECFHttpClientSecureProtocolSocketFactory.class, "performConnection", e); //$NON-NLS-1$

+			throw e;

+		} catch (IOException e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, ECFHttpClientSecureProtocolSocketFactory.class, "performConnection", e); //$NON-NLS-1$

+			fireEvent(this.socketConnectListener, new SocketClosedEvent(source, socket, socket));

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, ECFHttpClientSecureProtocolSocketFactory.class, "performConnection", e); //$NON-NLS-1$

+			throw e;

+		}

+	}

+

+	public boolean isSecure(final Socket sock) throws IllegalArgumentException {

+		if (sock == null) {

+			throw new IllegalArgumentException("Socket must not be null"); //$NON-NLS-1$

+		}

+

+		if (sock instanceof CloseMonitoringSocket) {

+			return ((CloseMonitoringSocket) sock).isSecure();

+		}

+

+		if (!(sock instanceof SSLSocket)) {

+			throw new IllegalArgumentException("Socket not created by this factory"); //$NON-NLS-1$

+		}

+

+		if (sock.isClosed()) {

+			throw new IllegalArgumentException("Socket is closed"); //$NON-NLS-1$

+		}

+

+		return true;

+	}

+

+	public Socket createLayeredSocket(final Socket socket, final String host, final int port, final boolean autoClose) throws IOException {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, ECFHttpClientSecureProtocolSocketFactory.class, "createLayeredSocket " + host + ":" + port + ",socket=" + socket); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

+		SSLSocket sslSocket = null;

+		try {

+			Trace.trace(Activator.PLUGIN_ID, "connectingLayeredSocket(original=" + socket + ",dest=" + host + ":" + port + ")"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$

+			sslSocket = (SSLSocket) this.sslSocketFactory.createSocket(socket, host, port, autoClose);

+			Trace.trace(Activator.PLUGIN_ID, "connected"); //$NON-NLS-1$

+		} catch (IOException e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, ECFHttpClientSecureProtocolSocketFactory.class, "createLayeredSocket", e); //$NON-NLS-1$

+			fireEvent(this.socketConnectListener, new SocketClosedEvent(source, sslSocket, sslSocket));

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, ECFHttpClientSecureProtocolSocketFactory.class, "createSocket", e); //$NON-NLS-1$

+			throw e;

+		}

+

+		return wrapSocket(sslSocket);

+	}

+

+	private Socket wrapSocket(Socket toWrap) {

+		CloseMonitoringSocket wrappedSocket = new CloseMonitoringSocket(toWrap, socketConnectListener, source);

+

+		SocketConnectedEvent connectedEvent = new SocketConnectedEvent(source, toWrap, wrappedSocket);

+		fireEvent(socketConnectListener, connectedEvent);

+

+		// Change the wrapped socket if one of the receivers of the SocketConnectedEvent changed it

+		Socket connectedEventSocket = connectedEvent.getSocket();

+		if (connectedEventSocket != wrappedSocket) {

+			wrappedSocket.setWrappedSocket(connectedEventSocket);

+			return connectedEventSocket;

+		}

+

+		return wrappedSocket;

+	}

+

+	static void fireEvent(final ISocketListener spyListener, ISocketEvent event) {

+		if (spyListener != null) {

+			spyListener.handleSocketEvent(event);

+		}

+		event.getSource().fireEvent(event);

+	}

+

+	public boolean equals(Object obj) {

+		return ((obj != null) && obj.getClass().equals(ECFHttpClientSecureProtocolSocketFactory.class));

+	}

+

+	public int hashCode() {

+		return ECFHttpClientSecureProtocolSocketFactory.class.hashCode();

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/HttpClientProxyCredentialProvider.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/HttpClientProxyCredentialProvider.java
new file mode 100644
index 0000000..d136697
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/HttpClientProxyCredentialProvider.java
@@ -0,0 +1,77 @@
+/*******************************************************************************

+ * Copyright (c) 2009 IBM Corporation 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

+ *     Thomas Joiner - HttpClient 4 implementation

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

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

+

+import java.util.HashMap;

+import java.util.Map;

+import org.apache.http.auth.AuthScope;

+import org.apache.http.auth.Credentials;

+import org.apache.http.auth.UsernamePasswordCredentials;

+import org.apache.http.client.CredentialsProvider;

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

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

+

+public abstract class HttpClientProxyCredentialProvider implements CredentialsProvider {

+

+	abstract protected Proxy getECFProxy();

+

+	abstract protected Credentials getNTLMCredentials(Proxy proxy);

+

+	private Map cachedCredentials;

+

+	public HttpClientProxyCredentialProvider() {

+		cachedCredentials = new HashMap();

+	}

+

+	public void setCredentials(AuthScope authscope, Credentials credentials) {

+		this.cachedCredentials.put(authscope, credentials);

+	}

+

+	public Credentials getCredentials(AuthScope authscope) {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, HttpClientProxyCredentialProvider.class, "getCredentials " + authscope); //$NON-NLS-1$

+

+		if (this.cachedCredentials.containsKey(authscope)) {

+			return (Credentials) this.cachedCredentials.get(authscope);

+		}

+

+		Proxy proxy = getECFProxy();

+		if (proxy == null) {

+			return null;

+		}

+

+		Credentials credentials = null;

+		if ("ntlm".equalsIgnoreCase(authscope.getScheme())) { //$NON-NLS-1$

+			credentials = getNTLMCredentials(proxy);

+		} else if ("basic".equalsIgnoreCase(authscope.getScheme()) || //$NON-NLS-1$

+				"digest".equalsIgnoreCase(authscope.getScheme())) { //$NON-NLS-1$

+			final String proxyUsername = proxy.getUsername();

+			final String proxyPassword = proxy.getPassword();

+			if (proxyUsername != null) {

+				credentials = new UsernamePasswordCredentials(proxyUsername, proxyPassword);

+			}

+		} else if ("negotiate".equalsIgnoreCase(authscope.getScheme())) { //$NON-NLS-1$

+			Trace.trace(Activator.PLUGIN_ID, "SPNEGO is not supported, if you can contribute support, please do so."); //$NON-NLS-1$

+		} else {

+			Trace.trace(Activator.PLUGIN_ID, "Unrecognized authentication scheme."); //$NON-NLS-1$

+		}

+

+		if (credentials != null) {

+			cachedCredentials.put(authscope, credentials);

+		}

+

+		return credentials;

+	}

+

+	public void clear() {

+		this.cachedCredentials.clear();

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ISSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ISSLSocketFactoryModifier.java
new file mode 100644
index 0000000..a1b5250
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ISSLSocketFactoryModifier.java
@@ -0,0 +1,30 @@
+/****************************************************************************

+ * Copyright (c) 2008, 2009 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

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

+ *

+ * Contributors:

+ *    Composent, Inc. - initial API and implementation

+ *    Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy

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

+

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

+

+import java.io.IOException;

+import javax.net.ssl.SSLSocketFactory;

+import org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory;

+

+/**

+ * Internal interface to allow for use of httpclient.ssl provided socket factory

+ */

+public interface ISSLSocketFactoryModifier {

+

+	public SSLSocketFactory getSSLSocketFactory() throws IOException;

+

+	public INonconnectedSocketFactory getNonconnnectedSocketFactory();

+

+	public void dispose();

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ISocketConnectionCallback.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ISocketConnectionCallback.java
new file mode 100644
index 0000000..77d4f4f
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ISocketConnectionCallback.java
@@ -0,0 +1,24 @@
+/*******************************************************************************

+* Copyright (c) 2009 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.httpclient4;

+

+import java.io.IOException;

+import java.net.Socket;

+

+public interface ISocketConnectionCallback {

+	void onSocketCreated(Socket socket);

+

+	void onSocketConnected(Socket socket);

+

+	void onSocketConnectionFailed(Socket socket, IOException e);

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Messages.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Messages.java
new file mode 100644
index 0000000..d0d54a6
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Messages.java
@@ -0,0 +1,46 @@
+/****************************************************************************

+ * Copyright (c) 2007 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

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

+ *

+ * Contributors:

+ *    Composent, Inc. - initial API and implementation

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

+

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

+

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

+

+/**

+ * 

+ */

+public class Messages extends NLS {

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

+	public static String FileTransferNamespace_Http_Protocol;

+	public static String FileTransferNamespace_Https_Protocol;

+	public static String HttpClientRetrieveFileTransfer_CONNECTING_JOB_NAME;

+	public static String HttpClientRetrieveFileTransfer_CONNECTING_TASK_NAME;

+	public static String HttpClientRetrieveFileTransfer_Proxy_Auth_Required;

+	public static String HttpClientRetrieveFileTransfer_Unauthorized;

+	public static String HttpClientRetrieveFileTransfer_Username_Prefix;

+	public static String HttpClientRetrieveFileTransfer_RESUME_START_POSITION_LESS_THAN_ZERO;

+	public static String HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE;

+	public static String HttpClientRetrieveFileTransfer_EXCEPITION_INVALID_LAST_MODIFIED_FROM_SERVER;

+	public static String HttpClientRetrieveFileTransfer_EXCEPTION_FILE_MODIFIED_SINCE_LAST_ACCESS;

+	public static String HttpClientRetrieveFileTransfer_RESUME_ERROR_END_POSITION_LESS_THAN_START;

+	public static String HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT;

+	public static String HttpClientRetrieveFileTransfer_INVALID_LAST_MODIFIED_TIME;

+	public static String HttpClientRetrieveFileTransfer_INVALID_SERVER_RESPONSE_TO_PARTIAL_RANGE_REQUEST;

+	public static String HttpClientRetrieveFileTransfer_RESUME_START_ERROR;

+

+	static {

+		// initialize resource bundle

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

+	}

+

+	private Messages() {

+		// Generated

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/messages.properties b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/messages.properties
new file mode 100644
index 0000000..76b4976
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/messages.properties
@@ -0,0 +1,16 @@
+HttpClientRetrieveFileTransfer_CONNECTING_JOB_NAME=: connecting.

+HttpClientRetrieveFileTransfer_CONNECTING_TASK_NAME=\ Connecting

+HttpClientRetrieveFileTransfer_Username_Prefix=Username:

+HttpClientRetrieveFileTransfer_Unauthorized=Unauthorized

+HttpClientRetrieveFileTransfer_Proxy_Auth_Required=Proxy Authentication Required

+FileTransferNamespace_Http_Protocol=http

+FileTransferNamespace_Https_Protocol=https

+HttpClientRetrieveFileTransfer_RESUME_START_POSITION_LESS_THAN_ZERO=start position cannot be less then 0

+HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE=HttpComponents connection error response code {0}.

+HttpClientRetrieveFileTransfer_EXCEPITION_INVALID_LAST_MODIFIED_FROM_SERVER=Invalid last modified value

+HttpClientRetrieveFileTransfer_EXCEPTION_FILE_MODIFIED_SINCE_LAST_ACCESS=file modified since last access

+HttpClientRetrieveFileTransfer_RESUME_ERROR_END_POSITION_LESS_THAN_START=end position cannot be less than or equal to start position

+HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT=Could not connect to {0}

+HttpClientRetrieveFileTransfer_INVALID_LAST_MODIFIED_TIME=Invalid last modified time from response header

+HttpClientRetrieveFileTransfer_INVALID_SERVER_RESPONSE_TO_PARTIAL_RANGE_REQUEST=invalid server response to partial range request

+HttpClientRetrieveFileTransfer_RESUME_START_ERROR=resume start error
\ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientBrowseFileTransferFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientBrowseFileTransferFactory.java
new file mode 100644
index 0000000..b315ba9
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientBrowseFileTransferFactory.java
@@ -0,0 +1,72 @@
+/****************************************************************************

+ * Copyright (c) 2007 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

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

+ *

+ * Contributors:

+ *    Composent, Inc. - initial API and implementation

+ *    Thomas Joiner - HttpClient 4 implementation

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

+package org.eclipse.ecf.provider.filetransfer.httpclient4;

+

+import java.net.MalformedURLException;

+import java.net.URL;

+import org.apache.http.impl.client.DefaultHttpClient;

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

+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.core.util.Proxy;

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

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

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

+import org.eclipse.ecf.filetransfer.identity.IFileID;

+import org.eclipse.ecf.filetransfer.service.IRemoteFileSystemBrowser;

+import org.eclipse.ecf.filetransfer.service.IRemoteFileSystemBrowserFactory;

+import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace;

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

+

+public class HttpClientBrowseFileTransferFactory implements IRemoteFileSystemBrowserFactory {

+

+	public IRemoteFileSystemBrowser newInstance() {

+		return new IRemoteFileSystemBrowser() {

+

+			private Proxy proxy;

+			private IConnectContext connectContext;

+

+			public Namespace getBrowseNamespace() {

+				return IDFactory.getDefault().getNamespaceByName(FileTransferNamespace.PROTOCOL);

+			}

+

+			public IRemoteFileSystemRequest sendBrowseRequest(IFileID directoryOrFileId, IRemoteFileSystemListener listener) throws RemoteFileSystemException {

+				Assert.isNotNull(directoryOrFileId);

+				Assert.isNotNull(listener);

+				URL url;

+				try {

+					url = directoryOrFileId.getURL();

+				} catch (final MalformedURLException e) {

+					throw new RemoteFileSystemException(NLS.bind("Exception creating URL for {0}", directoryOrFileId)); //$NON-NLS-1$

+				}

+

+				HttpClientFileSystemBrowser browser = new HttpClientFileSystemBrowser(new DefaultHttpClient(), directoryOrFileId, listener, url, connectContext, proxy);

+				return browser.sendBrowseRequest();

+			}

+

+			public void setConnectContextForAuthentication(IConnectContext connectContext) {

+				this.connectContext = connectContext;

+			}

+

+			public void setProxy(Proxy proxy) {

+				this.proxy = proxy;

+			}

+

+			public Object getAdapter(Class adapter) {

+				return null;

+			}

+

+		};

+

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java
new file mode 100644
index 0000000..f7223ed
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java
@@ -0,0 +1,79 @@
+/****************************************************************************

+ * Copyright (c) 2004, 2009 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

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

+ *

+ * Contributors:

+ *  Composent, Inc. - initial API and implementation

+ *  Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy

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

+

+package org.eclipse.ecf.provider.filetransfer.httpclient4;

+

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier;

+

+import java.io.IOException;

+import java.net.Socket;

+import javax.net.ssl.SSLContext;

+import javax.net.ssl.SSLSocketFactory;

+import javax.net.ssl.TrustManager;

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

+import org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory;

+

+public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFactoryModifier, INonconnectedSocketFactory {

+	public static final String DEFAULT_SSL_PROTOCOL = "https.protocols"; //$NON-NLS-1$

+

+	private SSLContext sslContext = null;

+

+	private String defaultProtocolNames = System.getProperty(DEFAULT_SSL_PROTOCOL);

+

+	public HttpClientDefaultSSLSocketFactoryModifier() {

+		// empty

+	}

+

+	public SSLSocketFactory getSSLSocketFactory() throws IOException {

+		if (null == sslContext) {

+			try {

+				sslContext = getSSLContext(defaultProtocolNames);

+			} catch (Exception e) {

+				IOException ioe = new IOException();

+				ioe.initCause(e);

+				throw ioe;

+			}

+		}

+		return (sslContext == null) ? (SSLSocketFactory) SSLSocketFactory.getDefault() : sslContext.getSocketFactory();

+	}

+

+	public SSLContext getSSLContext(String protocols) {

+		SSLContext rtvContext = null;

+

+		if (protocols != null) {

+			String protocolNames[] = StringUtils.split(protocols, ","); //$NON-NLS-1$

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

+				try {

+					rtvContext = SSLContext.getInstance(protocolNames[i]);

+					sslContext.init(null, new TrustManager[] {new HttpClientSslTrustManager()}, null);

+					break;

+				} catch (Exception e) {

+					// just continue

+				}

+			}

+		}

+		return rtvContext;

+	}

+

+	public Socket createSocket() throws IOException {

+		return getSSLSocketFactory().createSocket();

+	}

+

+	public void dispose() {

+		// empty

+	}

+

+	public INonconnectedSocketFactory getNonconnnectedSocketFactory() {

+		return this;

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java
new file mode 100644
index 0000000..9ed6b8d
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java
@@ -0,0 +1,377 @@
+/****************************************************************************

+ * Copyright (c) 2008, 2010 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

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

+ *

+ * Contributors:

+ *    Composent, Inc. - initial API and implementation

+ *    Henrich Kraemer - bug 263869, testHttpsReceiveFile fails using HTTP proxy

+ *    Thomas Joiner - HttpClient 4 implementation

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

+

+package org.eclipse.ecf.provider.filetransfer.httpclient4;

+

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ConnectingSocketMonitor;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.DebugOptions;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.HttpClientProxyCredentialProvider;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Messages;

+

+import java.io.IOException;

+import java.net.HttpURLConnection;

+import java.net.Socket;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.List;

+import org.apache.http.Header;

+import org.apache.http.HttpHost;

+import org.apache.http.HttpResponse;

+import org.apache.http.auth.AuthScope;

+import org.apache.http.auth.Credentials;

+import org.apache.http.auth.UsernamePasswordCredentials;

+import org.apache.http.auth.params.AuthPNames;

+import org.apache.http.client.HttpClient;

+import org.apache.http.client.methods.HttpHead;

+import org.apache.http.client.params.AuthPolicy;

+import org.apache.http.conn.params.ConnRouteParams;

+import org.apache.http.impl.client.DefaultHttpClient;

+import org.apache.http.impl.cookie.DateUtils;

+import org.apache.http.params.CoreConnectionPNames;

+import org.apache.http.protocol.BasicHttpContext;

+import org.apache.http.protocol.HttpContext;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+import org.eclipse.ecf.filetransfer.identity.IFileID;

+import org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser;

+import org.eclipse.ecf.provider.filetransfer.browse.URLRemoteFile;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource;

+import org.eclipse.ecf.provider.filetransfer.util.JREProxyHelper;

+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;

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

+

+/**

+ *

+ */

+public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser {

+

+	private static final String CONTENT_LENGTH_HEADER = "Content-Length"; //$NON-NLS-1$

+

+	// 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.httpclient4.browse.connectTimeout

+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995

+	protected static final int DEFAULT_CONNECTION_TIMEOUT = HttpClientOptions.BROWSE_DEFAULT_CONNECTION_TIMEOUT;

+

+	private static final String USERNAME_PREFIX = "Username:"; //$NON-NLS-1$

+

+	private JREProxyHelper proxyHelper = null;

+

+	private ConnectingSocketMonitor connectingSockets;

+

+	protected String username = null;

+

+	protected String password = null;

+

+	protected DefaultHttpClient httpClient = null;

+

+	protected volatile HttpHead headMethod;

+

+	/**

+	 * This is the response returned by {@link HttpClient} when it executes

+	 * {@link #headMethod}.

+	 * @since 5.0

+	 */

+	protected volatile HttpResponse httpResponse;

+

+	/**

+	 * This is the context used to retain information about the request that

+	 * the {@link HttpClient} gathers during the request.

+	 * @since 5.0

+	 */

+	protected volatile HttpContext httpContext;

+

+	/**

+	 * @param directoryOrFileID

+	 * @param listener

+	 * @since 5.0

+	 */

+	public HttpClientFileSystemBrowser(DefaultHttpClient httpClient, IFileID directoryOrFileID, IRemoteFileSystemListener listener, URL directoryOrFileURL, IConnectContext connectContext, Proxy proxy) {

+		super(directoryOrFileID, listener, directoryOrFileURL, connectContext, proxy);

+		Assert.isNotNull(httpClient);

+		this.httpClient = httpClient;

+		this.httpClient.setCredentialsProvider(new HttpClientProxyCredentialProvider() {

+

+			protected Proxy getECFProxy() {

+				return getProxy();

+			}

+

+			protected Credentials getNTLMCredentials(Proxy lp) {

+				if (hasForceNTLMProxyOption())

+					return HttpClientRetrieveFileTransfer.createNTLMCredentials(lp);

+				return null;

+			}

+

+		});

+		this.proxyHelper = new JREProxyHelper();

+		this.connectingSockets = new ConnectingSocketMonitor(1);

+

+		prepareAuth();

+	}

+

+	private void prepareAuth() {

+		// SPNEGO is not supported, so remove it from the list

+		List authpref = new ArrayList(3);

+		authpref.add(AuthPolicy.NTLM);

+		authpref.add(AuthPolicy.DIGEST);

+		authpref.add(AuthPolicy.BASIC);

+

+		httpClient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authpref);

+		httpClient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF, authpref);

+	}

+

+	class HttpClientRemoteFileSystemRequest extends RemoteFileSystemRequest {

+		protected SocketEventSource socketEventSource;

+

+		HttpClientRemoteFileSystemRequest() {

+			this.socketEventSource = new SocketEventSource() {

+				public Object getAdapter(Class adapter) {

+					if (adapter == null) {

+						return null;

+					}

+					if (adapter.isInstance(this)) {

+						return this;

+					}

+					if (adapter.isInstance(HttpClientRemoteFileSystemRequest.this)) {

+						return HttpClientRemoteFileSystemRequest.this;

+					}

+					return null;

+				}

+			};

+		}

+

+		public Object getAdapter(Class adapter) {

+			if (adapter == null) {

+				return null;

+			}

+			return socketEventSource.getAdapter(adapter);

+		}

+

+		public void cancel() {

+			HttpClientFileSystemBrowser.this.cancel();

+		}

+	}

+

+	protected IRemoteFileSystemRequest createRemoteFileSystemRequest() {

+		return new HttpClientRemoteFileSystemRequest();

+	}

+

+	protected void cancel() {

+		if (isCanceled()) {

+			return; // break job cancel recursion

+		}

+		setCanceled(getException());

+		super.cancel();

+		if (headMethod != null) {

+			if (!headMethod.isAborted()) {

+				headMethod.abort();

+			}

+		}

+		if (connectingSockets != null) {

+			// this should unblock socket connect calls, if any

+			for (Iterator iterator = connectingSockets.getConnectingSockets().iterator(); iterator.hasNext();) {

+				Socket socket = (Socket) iterator.next();

+				try {

+					socket.close();

+				} catch (IOException e) {

+					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$

+				}

+			}

+		}

+

+	}

+

+	protected boolean hasForceNTLMProxyOption() {

+		return (System.getProperties().getProperty(HttpClientOptions.FORCE_NTLM_PROP) != null);

+	}

+

+	protected void setupProxies() {

+		// If it's been set directly (via ECF API) then this overrides platform settings

+		if (proxy == null) {

+			try {

+				// give SOCKS priority see https://bugs.eclipse.org/bugs/show_bug.cgi?id=295030#c61

+				proxy = ProxySetupHelper.getSocksProxy(directoryOrFile);

+				if (proxy == null) {

+					proxy = ProxySetupHelper.getProxy(directoryOrFile.toExternalForm());

+				}

+			} catch (NoClassDefFoundError e) {

+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.

+				// If that happens then we just want to continue on.

+				Activator.logNoProxyWarning(e);

+

+			}

+		}

+		if (proxy != null)

+			setupProxy(proxy);

+	}

+

+	protected void cleanUp() {

+		clearProxy();

+

+		super.cleanUp();

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser#runRequest()

+	 */

+	protected void runRequest() throws Exception {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "runRequest"); //$NON-NLS-1$

+		setupProxies();

+		// set timeout

+		httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT);

+		httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, DEFAULT_CONNECTION_TIMEOUT);

+

+		String urlString = directoryOrFile.toString();

+		// setup authentication

+		setupAuthentication(urlString);

+

+		headMethod = new HttpHead(urlString);

+		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990

+		headMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$

+

+		long lastModified = 0;

+		long fileLength = -1;

+		connectingSockets.clear();

+		int code = -1;

+		try {

+			Trace.trace(Activator.PLUGIN_ID, "browse=" + urlString); //$NON-NLS-1$

+

+			httpContext = new BasicHttpContext();

+			httpResponse = httpClient.execute(headMethod, httpContext);

+			code = httpResponse.getStatusLine().getStatusCode();

+

+			Trace.trace(Activator.PLUGIN_ID, "browse resp=" + code); //$NON-NLS-1$

+

+			// Check for NTLM proxy in response headers 

+			// This check is to deal with bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=252002

+			boolean ntlmProxyFound = NTLMProxyDetector.detectNTLMProxy(httpContext);

+			if (ntlmProxyFound && !hasForceNTLMProxyOption())

+				throw new BrowseFileTransferException("HttpClient Provider is not configured to support NTLM proxy authentication.", HttpClientOptions.NTLM_PROXY_RESPONSE_CODE); //$NON-NLS-1$

+

+			if (NTLMProxyDetector.detectSPNEGOProxy(httpContext))

+				throw new BrowseFileTransferException("HttpClient Provider does not support the use of SPNEGO proxy authentication."); //$NON-NLS-1$

+

+			if (code == HttpURLConnection.HTTP_OK) {

+				Header contentLength = httpResponse.getLastHeader(CONTENT_LENGTH_HEADER);

+				if (contentLength != null) {

+					fileLength = Integer.parseInt(contentLength.getValue());

+				}

+

+				lastModified = getLastModifiedTimeFromHeader();

+			} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {

+				throw new BrowseFileTransferException(NLS.bind("File not found: {0}", urlString), code); //$NON-NLS-1$

+			} else if (code == HttpURLConnection.HTTP_UNAUTHORIZED) {

+				throw new BrowseFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized, code);

+			} else if (code == HttpURLConnection.HTTP_FORBIDDEN) {

+				throw new BrowseFileTransferException("Forbidden", code); //$NON-NLS-1$

+			} else if (code == HttpURLConnection.HTTP_PROXY_AUTH) {

+				throw new BrowseFileTransferException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required, code);

+			} else {

+				throw new BrowseFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE, new Integer(code)), code);

+			}

+			remoteFiles = new IRemoteFile[1];

+			remoteFiles[0] = new URLRemoteFile(lastModified, fileLength, fileID);

+		} catch (Exception e) {

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, this.getClass(), "runRequest", e); //$NON-NLS-1$

+			BrowseFileTransferException ex = (BrowseFileTransferException) ((e instanceof BrowseFileTransferException) ? e : new BrowseFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, urlString), e, code));

+			throw ex;

+		}

+	}

+

+	private long getLastModifiedTimeFromHeader() throws IOException {

+		Header lastModifiedHeader = httpResponse.getLastHeader("Last-Modified"); //$NON-NLS-1$

+		if (lastModifiedHeader == null)

+			return 0L;

+		String lastModifiedString = lastModifiedHeader.getValue();

+		long lastModified = 0;

+		if (lastModifiedString != null) {

+			try {

+				lastModified = DateUtils.parseDate(lastModifiedString).getTime();

+			} catch (Exception e) {

+				throw new IOException(Messages.HttpClientRetrieveFileTransfer_EXCEPITION_INVALID_LAST_MODIFIED_FROM_SERVER);

+			}

+		}

+		return lastModified;

+	}

+

+	Proxy getProxy() {

+		return proxy;

+	}

+

+	/**

+	 * Retrieves the credentials for requesting the file.

+	 * @return the {@link Credentials} necessary to retrieve the file

+	 * @throws UnsupportedCallbackException if the callback fails

+	 * @throws IOException if IO fails

+	 * @since 5.0

+	 */

+	protected Credentials getFileRequestCredentials() throws UnsupportedCallbackException, IOException {

+		if (connectContext == null)

+			return null;

+		final CallbackHandler callbackHandler = connectContext.getCallbackHandler();

+		if (callbackHandler == null)

+			return null;

+		final NameCallback usernameCallback = new NameCallback(USERNAME_PREFIX);

+		final ObjectCallback passwordCallback = new ObjectCallback();

+		callbackHandler.handle(new Callback[] {usernameCallback, passwordCallback});

+		username = usernameCallback.getName();

+		password = (String) passwordCallback.getObject();

+		return new UsernamePasswordCredentials(username, password);

+	}

+

+	protected void setupAuthentication(String urlString) throws UnsupportedCallbackException, IOException {

+		Credentials credentials = null;

+		if (username == null) {

+			credentials = getFileRequestCredentials();

+		}

+

+		if (credentials != null && username != null) {

+			final AuthScope authScope = new AuthScope(HttpClientRetrieveFileTransfer.getHostFromURL(urlString), HttpClientRetrieveFileTransfer.getPortFromURL(urlString), AuthScope.ANY_REALM);

+			Trace.trace(Activator.PLUGIN_ID, "browse credentials=" + credentials); //$NON-NLS-1$

+			httpClient.getCredentialsProvider().setCredentials(authScope, credentials);

+		}

+	}

+

+	protected void setupProxy(Proxy proxy) {

+		if (proxy.getType().equals(Proxy.Type.HTTP)) {

+			final ProxyAddress address = proxy.getAddress();

+			ConnRouteParams.setDefaultProxy(httpClient.getParams(), new HttpHost(address.getHostName(), address.getPort()));

+		} else if (proxy.getType().equals(Proxy.Type.SOCKS)) {

+			Trace.trace(Activator.PLUGIN_ID, "brows socksproxy=" + proxy.getAddress()); //$NON-NLS-1$

+			proxyHelper.setupProxy(proxy);

+		}

+	}

+

+	/**

+	 * This method will clear out the proxy information (so that if this is

+	 * reused for a request without a proxy, it will work correctly).

+	 * @since 5.0

+	 */

+	protected void clearProxy() {

+		ConnRouteParams.setDefaultProxy(httpClient.getParams(), null);

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientOptions.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientOptions.java
new file mode 100644
index 0000000..6307add
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientOptions.java
@@ -0,0 +1,47 @@
+/*******************************************************************************

+* 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.provider.filetransfer.httpclient4;

+

+/**

+ * @since 4.0

+ */

+public interface HttpClientOptions {

+	// HttpClient response code that indicates that NTLM proxy is asking for authentication

+	// and httpclient cannot handle NTLMv2 proxies

+	public int NTLM_PROXY_RESPONSE_CODE = 477;

+	// System property that indicates that NTLM proxy usage should be forced (i.e. not rejected)

+	// The property key is:  org.eclipse.ecf.provider.filetransfer.httpclient4.options.ForceNTLMProxy

+	// The value of the property must be non-null, but is not otherwise used.

+	public String FORCE_NTLM_PROP = "org.eclipse.ecf.provider.filetransfer.httpclient4.options.ForceNTLMProxy"; //$NON-NLS-1$

+

+	// 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.httpclient4.retrieve.connectTimeout

+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995

+	/**

+	 * @since 4.0

+	 */

+	public static final int RETRIEVE_DEFAULT_CONNECTION_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.httpclient4.retrieve.connectTimeout", "120000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$

+	// 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.httpclient4.retrieve.readTimeout

+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995

+	/**

+	 * @since 4.0

+	 */

+	public static final int RETRIEVE_DEFAULT_READ_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.httpclient4.retrieve.readTimeout", "120000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$

+

+	// 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.httpclient4.browse.connectTimeout

+	// for https://bugs.eclipse.org/bugs/show_bug.cgi?id=292995

+	/**

+	 * @since 4.0

+	 */

+	public static final int BROWSE_DEFAULT_CONNECTION_TIMEOUT = new Integer(System.getProperty("org.eclipse.ecf.provider.filetransfer.httpclient4.browse.connectTimeout", "120000")).intValue(); //$NON-NLS-1$ //$NON-NLS-2$;

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java
new file mode 100644
index 0000000..529b059
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java
@@ -0,0 +1,1120 @@
+/*******************************************************************************

+ * Copyright (c) 2004, 2010 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

+ *

+ * Contributors: 

+ *  Composent, Inc. - initial API and implementation

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

+ *  Thomas Joiner - HttpClient 4 implementation

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

+package org.eclipse.ecf.provider.filetransfer.httpclient4;

+

+import java.io.FilterInputStream;

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.HttpURLConnection;

+import java.net.InetAddress;

+import java.net.Socket;

+import java.net.UnknownHostException;

+import java.util.ArrayList;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+import javax.net.SocketFactory;

+import javax.net.ssl.SSLSocketFactory;

+import org.apache.http.Header;

+import org.apache.http.HttpHost;

+import org.apache.http.HttpResponse;

+import org.apache.http.ProtocolVersion;

+import org.apache.http.auth.AuthScope;

+import org.apache.http.auth.Credentials;

+import org.apache.http.auth.NTCredentials;

+import org.apache.http.auth.UsernamePasswordCredentials;

+import org.apache.http.auth.params.AuthPNames;

+import org.apache.http.client.methods.HttpGet;

+import org.apache.http.client.params.AuthPolicy;

+import org.apache.http.client.protocol.RequestAcceptEncoding;

+import org.apache.http.client.protocol.ResponseContentEncoding;

+import org.apache.http.conn.params.ConnRouteParams;

+import org.apache.http.conn.scheme.Scheme;

+import org.apache.http.conn.scheme.SchemeRegistry;

+import org.apache.http.impl.client.DefaultHttpClient;

+import org.apache.http.impl.cookie.DateUtils;

+import org.apache.http.params.CoreConnectionPNames;

+import org.apache.http.protocol.BasicHttpContext;

+import org.apache.http.protocol.HttpContext;

+import org.apache.http.util.EntityUtils;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

+import org.eclipse.ecf.filetransfer.events.socket.ISocketEventSource;

+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;

+import org.eclipse.ecf.filetransfer.identity.IFileID;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ConnectingSocketMonitor;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.DebugOptions;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ECFHttpClientProtocolSocketFactory;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ECFHttpClientSecureProtocolSocketFactory;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.HttpClientProxyCredentialProvider;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier;

+import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Messages;

+import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource;

+import org.eclipse.ecf.provider.filetransfer.identity.FileTransferID;

+import org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer;

+import org.eclipse.ecf.provider.filetransfer.retrieve.HttpHelper;

+import org.eclipse.ecf.provider.filetransfer.util.JREProxyHelper;

+import org.eclipse.ecf.provider.filetransfer.util.ProxySetupHelper;

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

+

+public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer {

+

+	private static final String USERNAME_PREFIX = Messages.HttpClientRetrieveFileTransfer_Username_Prefix;

+

+	// 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.httpclient4.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;

+	// 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.httpclient4.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 HTTP_PORT = 80;

+

+	protected static final int HTTPS_PORT = 443;

+

+	protected static final int MAX_RETRY = 2;

+

+	protected static final String HTTPS = Messages.FileTransferNamespace_Https_Protocol;

+

+	protected static final String HTTP = Messages.FileTransferNamespace_Http_Protocol;

+

+	protected static final String[] supportedProtocols = {HTTP, HTTPS};

+

+	private static final String LAST_MODIFIED_HEADER = "Last-Modified"; //$NON-NLS-1$

+

+	private HttpGet getMethod = null;

+

+	private HttpResponse httpResponse = null;

+

+	private HttpContext httpContext = null;

+

+	private DefaultHttpClient httpClient = null;

+

+	private String username;

+

+	private String password;

+

+	private int responseCode = -1;

+	private volatile boolean doneFired = false;

+

+	private String remoteFileName;

+

+	protected int httpVersion = 1;

+

+	protected IFileID fileid = null;

+

+	protected JREProxyHelper proxyHelper = null;

+

+	private SocketEventSource socketEventSource;

+

+	private ConnectingSocketMonitor connectingSockets;

+	private FileTransferJob connectJob;

+

+	/**

+	 * @since 5.0

+	 */

+	public HttpClientRetrieveFileTransfer(DefaultHttpClient httpClient) {

+		this.httpClient = httpClient;

+		Assert.isNotNull(this.httpClient);

+		this.httpClient.setCredentialsProvider(new ECFCredentialsProvider());

+		proxyHelper = new JREProxyHelper();

+		connectingSockets = new ConnectingSocketMonitor(1);

+		socketEventSource = new SocketEventSource() {

+			public Object getAdapter(Class adapter) {

+				if (adapter == null) {

+					return null;

+				}

+				if (adapter.isInstance(this)) {

+					return this;

+				}

+				return HttpClientRetrieveFileTransfer.this.getAdapter(adapter);

+			}

+

+		};

+

+		registerSchemes(socketEventSource, connectingSockets);

+	}

+

+	private void registerSchemes(ISocketEventSource source, ISocketListener socketListener) {

+		SchemeRegistry schemeRegistry = this.httpClient.getConnectionManager().getSchemeRegistry();

+

+		Scheme http = new Scheme(HttpClientRetrieveFileTransfer.HTTP, HTTP_PORT, new ECFHttpClientProtocolSocketFactory(SocketFactory.getDefault(), source, socketListener));

+

+		Trace.trace(Activator.PLUGIN_ID, "registering http scheme"); //$NON-NLS-1$

+		schemeRegistry.register(http);

+

+		ISSLSocketFactoryModifier sslSocketFactoryModifier = Activator.getDefault().getSSLSocketFactoryModifier();

+

+		if (sslSocketFactoryModifier == null) {

+			sslSocketFactoryModifier = new HttpClientDefaultSSLSocketFactoryModifier();

+		}

+

+		SSLSocketFactory sslSocketFactory = null;

+		try {

+			sslSocketFactory = sslSocketFactoryModifier.getSSLSocketFactory();

+		} catch (IOException e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, ISSLSocketFactoryModifier.class, "getSSLSocketFactory()", e); //$NON-NLS-1$

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, HttpClientRetrieveFileTransfer.class, "registerSchemes()", e); //$NON-NLS-1$

+			throw new ECFRuntimeException("Unable to instantiate schemes for HttpClient.", e); //$NON-NLS-1$

+		}

+

+		Scheme https = new Scheme(HttpClientRetrieveFileTransfer.HTTPS, HTTPS_PORT, new ECFHttpClientSecureProtocolSocketFactory(sslSocketFactory, source, socketListener));

+		Trace.trace(Activator.PLUGIN_ID, "registering https scheme; modifier=" + sslSocketFactoryModifier); //$NON-NLS-1$

+		schemeRegistry.register(https);

+

+		// SPNEGO is not supported, so remove it from the list

+		List authpref = new ArrayList(3);

+		authpref.add(AuthPolicy.NTLM);

+		authpref.add(AuthPolicy.DIGEST);

+		authpref.add(AuthPolicy.BASIC);

+

+		httpClient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authpref);

+		httpClient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF, authpref);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#getRemoteFileName()

+	 */

+	public String getRemoteFileName() {

+		return remoteFileName;

+	}

+

+	public synchronized void cancel() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "cancel"); //$NON-NLS-1$

+		if (isCanceled()) {

+			return; // break job cancel recursion

+		}

+		setDoneCanceled(exception);

+		boolean fireDoneEvent = true;

+		if (connectJob != null) {

+			Trace.trace(Activator.PLUGIN_ID, "calling connectJob.cancel()"); //$NON-NLS-1$

+			connectJob.cancel();

+		}

+		synchronized (jobLock) {

+			if (job != null) {

+				// Its the transfer jobs responsibility to throw the event.

+				fireDoneEvent = false;

+				Trace.trace(Activator.PLUGIN_ID, "calling transfer job.cancel()"); //$NON-NLS-1$

+				job.cancel();

+			}

+		}

+		if (getMethod != null) {

+			if (!getMethod.isAborted()) {

+				Trace.trace(Activator.PLUGIN_ID, "calling getMethod.abort()"); //$NON-NLS-1$

+				getMethod.abort();

+			}

+		}

+		if (connectingSockets != null) {

+			// this should unblock socket connect calls, if any

+			for (Iterator iterator = connectingSockets.getConnectingSockets().iterator(); iterator.hasNext();) {

+				Socket socket = (Socket) iterator.next();

+				try {

+					Trace.trace(Activator.PLUGIN_ID, "Call socket.close() for socket=" + socket.toString()); //$NON-NLS-1$

+					socket.close();

+				} catch (IOException e) {

+					Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "cancel", e); //$NON-NLS-1$

+				}

+			}

+		}

+		hardClose();

+		if (fireDoneEvent) {

+			fireTransferReceiveDoneEvent();

+		}

+		Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "cancel");//$NON-NLS-1$

+

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#hardClose()

+	 */

+	protected void hardClose() {

+		// changed for addressing bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=389292

+		if (getMethod != null) {

+			// First, if !isDone and paused

+			if (!isDone() && isPaused())

+				getMethod.abort();

+			// release in any case

+			//getMethod.releaseConnection();

+			// and set to null

+			getMethod = null;

+		}

+		// Close output stream...if we're supposed to

+		try {

+			if (localFileContents != null && closeOutputStream)

+				localFileContents.close();

+		} catch (final IOException e) {

+			Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, "hardClose", e)); //$NON-NLS-1$

+		}

+		// clear input and output streams

+		remoteFileContents = null;

+		localFileContents = null;

+		// reset response code

+		responseCode = -1;

+		// If we're done and proxy helper still exists, then dispose

+		if (proxyHelper != null && isDone()) {

+			proxyHelper.dispose();

+			proxyHelper = null;

+		}

+	}

+

+	/**

+	 * @since 5.0

+	 */

+	protected Credentials getFileRequestCredentials() throws UnsupportedCallbackException, IOException {

+		if (connectContext == null)

+			return null;

+		final CallbackHandler callbackHandler = connectContext.getCallbackHandler();

+		if (callbackHandler == null)

+			return null;

+		final NameCallback usernameCallback = new NameCallback(USERNAME_PREFIX);

+		final ObjectCallback passwordCallback = new ObjectCallback();

+		callbackHandler.handle(new Callback[] {usernameCallback, passwordCallback});

+		username = usernameCallback.getName();

+		password = (String) passwordCallback.getObject();

+		return new UsernamePasswordCredentials(username, password);

+	}

+

+	protected void setupProxies() {

+		// If it's been set directly (via ECF API) then this overrides platform settings

+		if (proxy == null) {

+			try {

+				// give SOCKS priority see https://bugs.eclipse.org/bugs/show_bug.cgi?id=295030#c61

+				proxy = ProxySetupHelper.getSocksProxy(getRemoteFileURL());

+				if (proxy == null) {

+					proxy = ProxySetupHelper.getProxy(getRemoteFileURL().toExternalForm());

+				}

+			} catch (NoClassDefFoundError e) {

+				// If the proxy API is not available a NoClassDefFoundError will be thrown here.

+				// If that happens then we just want to continue on.

+				Activator.logNoProxyWarning(e);

+			}

+		}

+		if (proxy != null)

+			setupProxy(proxy);

+	}

+

+	protected synchronized void resetDoneAndException() {

+		// Doesn't match the description, but since it should be cleared before it is

+		// reused, this is the best place.

+		clearProxy();

+

+		super.resetDoneAndException();

+	}

+

+	protected void setupAuthentication(String urlString) throws UnsupportedCallbackException, IOException {

+		Credentials credentials = null;

+		if (username == null) {

+			credentials = getFileRequestCredentials();

+		}

+

+		if (credentials != null && username != null) {

+			final AuthScope authScope = new AuthScope(getHostFromURL(urlString), getPortFromURL(urlString), AuthScope.ANY_REALM);

+			Trace.trace(Activator.PLUGIN_ID, "retrieve credentials=" + credentials); //$NON-NLS-1$

+			httpClient.getCredentialsProvider().setCredentials(authScope, credentials);

+		}

+	}

+

+	protected void setRequestHeaderValues() throws InvalidFileRangeSpecificationException {

+		final IFileRangeSpecification rangeSpec = getFileRangeSpecification();

+		if (rangeSpec != null) {

+			final long startPosition = rangeSpec.getStartPosition();

+			final long endPosition = rangeSpec.getEndPosition();

+			if (startPosition < 0)

+				throw new InvalidFileRangeSpecificationException(Messages.HttpClientRetrieveFileTransfer_RESUME_START_POSITION_LESS_THAN_ZERO, rangeSpec);

+			if (endPosition != -1L && endPosition <= startPosition)

+				throw new InvalidFileRangeSpecificationException(Messages.HttpClientRetrieveFileTransfer_RESUME_ERROR_END_POSITION_LESS_THAN_START, rangeSpec);

+			String rangeHeader = "bytes=" + startPosition + "-" + ((endPosition == -1L) ? "" : ("" + endPosition)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$

+			Trace.trace(Activator.PLUGIN_ID, "retrieve range header=" + rangeHeader); //$NON-NLS-1$

+			setRangeHeader(rangeHeader);

+		}

+		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990

+		getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$

+		setRequestHeaderValuesFromOptions();

+	}

+

+	private void setRequestHeaderValuesFromOptions() {

+		Map localOptions = getOptions();

+		if (localOptions != null) {

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

+			if (o != null && o instanceof Map) {

+				Map requestHeaders = (Map) o;

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

+					Object n = i.next();

+					Object v = requestHeaders.get(n);

+					if (n != null && n instanceof String && v != null && v instanceof String)

+						getMethod.addHeader((String) n, (String) v);

+				}

+			}

+		}

+	}

+

+	private void setRangeHeader(String value) {

+		getMethod.addHeader("Range", value); //$NON-NLS-1$

+	}

+

+	private boolean isHTTP11() {

+		return (httpVersion >= 1);

+	}

+

+	public int getResponseCode() {

+		if (responseCode != -1)

+			return responseCode;

+		ProtocolVersion version = getMethod.getProtocolVersion();

+		if (version == null) {

+			responseCode = -1;

+			httpVersion = 1;

+			return responseCode;

+		}

+		httpVersion = version.getMinor();

+		responseCode = httpResponse.getStatusLine().getStatusCode();

+		return responseCode;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.core.identity.IIdentifiable#getID()

+	 */

+	public ID getID() {

+		return fileid;

+	}

+

+	private long getLastModifiedTimeFromHeader() throws IOException {

+		Header lastModifiedHeader = httpResponse.getLastHeader(LAST_MODIFIED_HEADER);

+		if (lastModifiedHeader == null)

+			throw new IOException(Messages.HttpClientRetrieveFileTransfer_INVALID_LAST_MODIFIED_TIME);

+

+		String lastModifiedString = lastModifiedHeader.getValue();

+		long lastModified = 0;

+		if (lastModifiedString != null) {

+			try {

+				lastModified = DateUtils.parseDate(lastModifiedString).getTime();

+			} catch (Exception e) {

+				throw new IOException(Messages.HttpClientRetrieveFileTransfer_EXCEPITION_INVALID_LAST_MODIFIED_FROM_SERVER);

+			}

+		}

+		return lastModified;

+	}

+

+	protected void getResponseHeaderValues() throws IOException {

+		if (getResponseCode() == -1)

+			throw new IOException(Messages.HttpClientRetrieveFileTransfer_INVALID_SERVER_RESPONSE_TO_PARTIAL_RANGE_REQUEST);

+		Header lastModifiedHeader = httpResponse.getLastHeader(LAST_MODIFIED_HEADER);

+		if (lastModifiedHeader != null) {

+			setLastModifiedTime(getLastModifiedTimeFromHeader());

+		}

+		setFileLength(httpResponse.getEntity().getContentLength());

+		fileid = new FileTransferID(getRetrieveNamespace(), getRemoteFileURL());

+

+		// Get content disposition header and get remote file name from it if possible.

+		Header contentDispositionHeader = httpResponse.getLastHeader(HttpHelper.CONTENT_DISPOSITION_HEADER);

+		if (contentDispositionHeader != null) {

+			remoteFileName = HttpHelper.getRemoteFileNameFromContentDispositionHeader(contentDispositionHeader.getValue());

+		}

+		// If still null, get the path from httpclient.getMethod()

+		if (remoteFileName == null) {

+			// No name could be extracted using Content-Disposition. Let's try the

+			// path from the getMethod.

+			String pathStr = getMethod.getRequestLine().getUri();

+			if (pathStr != null && pathStr.length() > 0) {

+				IPath path = Path.fromPortableString(pathStr);

+				if (path.segmentCount() > 0)

+					remoteFileName = path.lastSegment();

+			}

+			// If still null, use the input file name

+			if (remoteFileName == null)

+				// Last resort. Use the path of the initial URL request

+				remoteFileName = super.getRemoteFileName();

+		}

+	}

+

+	final class ECFCredentialsProvider extends HttpClientProxyCredentialProvider {

+

+		protected Proxy getECFProxy() {

+			return getProxy();

+		}

+

+		protected Credentials getNTLMCredentials(Proxy lp) {

+			if (hasForceNTLMProxyOption())

+				return HttpClientRetrieveFileTransfer.createNTLMCredentials(lp);

+			return null;

+		}

+

+	}

+

+	Proxy getProxy() {

+		return proxy;

+	}

+

+	protected void setInputStream(InputStream ins) {

+		remoteFileContents = ins;

+	}

+

+	protected InputStream wrapTransferReadInputStream(InputStream inputStream, IProgressMonitor monitor) {

+		// Added to address bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=389292

+		return new NoCloseWrapperInputStream(inputStream);

+	}

+

+	// Added to address bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=389292

+	class NoCloseWrapperInputStream extends FilterInputStream {

+

+		protected NoCloseWrapperInputStream(InputStream in) {

+			super(in);

+		}

+

+		public void close() {

+			// do nothing

+		}

+	}

+

+	protected boolean hasForceNTLMProxyOption() {

+		Map localOptions = getOptions();

+		if (localOptions != null && localOptions.get(HttpClientOptions.FORCE_NTLM_PROP) != null)

+			return true;

+		return (System.getProperties().getProperty(HttpClientOptions.FORCE_NTLM_PROP) != null);

+	}

+

+	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.httpclient4.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;

+	}

+

+	/**

+	 * @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.httpclient4.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;

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#openStreams()

+	 */

+	protected void openStreams() throws IncomingFileTransferException {

+

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "openStreams"); //$NON-NLS-1$

+		final String urlString = getRemoteFileURL().toString();

+		this.doneFired = false;

+

+		int code = -1;

+

+		try {

+			httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, getSocketReadTimeout());

+			int connectTimeout = getConnectTimeout();

+			httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, connectTimeout);

+

+			setupAuthentication(urlString);

+

+			getMethod = new HttpGet(urlString);

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

+			setRequestHeaderValues();

+

+			Trace.trace(Activator.PLUGIN_ID, "retrieve=" + urlString); //$NON-NLS-1$

+			// Set request header for possible gzip encoding, but only if

+			// 1) The file range specification is null (we want the whole file)

+			// 2) The target remote file does *not* end in .gz (see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=280205)

+			if (getFileRangeSpecification() == null && !targetHasGzSuffix(super.getRemoteFileName())) {

+				Trace.trace(Activator.PLUGIN_ID, "Accept-Encoding: gzip,deflate added to request header"); //$NON-NLS-1$

+

+				// Add the interceptors to provide the gzip 

+				httpClient.addRequestInterceptor(new RequestAcceptEncoding());

+				httpClient.addResponseInterceptor(new ResponseContentEncoding());

+			} else {

+				Trace.trace(Activator.PLUGIN_ID, "Accept-Encoding NOT added to header"); //$NON-NLS-1$

+			}

+

+			fireConnectStartEvent();

+			if (checkAndHandleDone()) {

+				return;

+			}

+

+			connectingSockets.clear();

+			// Actually execute get and get response code (since redirect is set to true, then

+			// redirect response code handled internally

+			if (connectJob == null) {

+				performConnect(new NullProgressMonitor());

+			} else {

+				connectJob.schedule();

+				connectJob.join();

+				connectJob = null;

+			}

+			if (checkAndHandleDone()) {

+				return;

+			}

+

+			code = responseCode;

+

+			responseHeaders = getResponseHeaders();

+

+			Trace.trace(Activator.PLUGIN_ID, "retrieve resp=" + code); //$NON-NLS-1$

+

+			// Check for NTLM proxy in response headers 

+			// This check is to deal with bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=252002

+			boolean ntlmProxyFound = NTLMProxyDetector.detectNTLMProxy(httpContext);

+			if (ntlmProxyFound && !hasForceNTLMProxyOption())

+				throw new IncomingFileTransferException("HttpClient Provider is not configured to support NTLM proxy authentication.", HttpClientOptions.NTLM_PROXY_RESPONSE_CODE); //$NON-NLS-1$

+

+			if (NTLMProxyDetector.detectSPNEGOProxy(httpContext))

+				throw new BrowseFileTransferException("HttpClient Provider does not support the use of SPNEGO proxy authentication."); //$NON-NLS-1$

+

+			if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {

+				getResponseHeaderValues();

+				setInputStream(httpResponse.getEntity().getContent());

+				fireReceiveStartEvent();

+			} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(NLS.bind("File not found: {0}", urlString), code); //$NON-NLS-1$

+			} else if (code == HttpURLConnection.HTTP_UNAUTHORIZED) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized, code);

+			} else if (code == HttpURLConnection.HTTP_FORBIDDEN) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException("Forbidden", code); //$NON-NLS-1$

+			} else if (code == HttpURLConnection.HTTP_PROXY_AUTH) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required, code);

+			} else {

+				Trace.trace(Activator.PLUGIN_ID, EntityUtils.toString(httpResponse.getEntity()));

+				//				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE, new Integer(code)), code);

+			}

+		} catch (final Exception e) {

+			Trace.throwing(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_THROWING, this.getClass(), "openStreams", e); //$NON-NLS-1$

+			if (code == -1) {

+				if (!isDone()) {

+					setDoneException(e);

+				}

+				fireTransferReceiveDoneEvent();

+			} else {

+				IncomingFileTransferException ex = (IncomingFileTransferException) ((e instanceof IncomingFileTransferException) ? e : new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, urlString), e, code));

+				throw ex;

+			}

+		}

+		Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "openStreams"); //$NON-NLS-1$

+	}

+

+	private Map getResponseHeaders() {

+		if (getMethod == null)

+			return null;

+		Header[] headers = httpResponse.getAllHeaders();

+		Map result = null;

+		if (headers != null && headers.length > 0) {

+			result = new HashMap();

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

+				String name = headers[i].getName();

+				String val = headers[i].getValue();

+				if (name != null && val != null)

+					result.put(name, val);

+			}

+		}

+		return Collections.unmodifiableMap(result);

+	}

+

+	private boolean checkAndHandleDone() {

+		if (isDone()) {

+			// for cancel the done event should have been fired always.

+			if (!doneFired) {

+				fireTransferReceiveDoneEvent();

+			}

+			return true;

+		}

+		return false;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.filetransfer.IRetrieveFileTransferContainerAdapter#setConnectContextForAuthentication(org.eclipse.ecf.core.security.IConnectContext)

+	 */

+	public void setConnectContextForAuthentication(IConnectContext connectContext) {

+		super.setConnectContextForAuthentication(connectContext);

+		this.username = null;

+		this.password = null;

+	}

+

+	protected static String getHostFromURL(String url) {

+		String result = url;

+		final int colonSlashSlash = url.indexOf("://"); //$NON-NLS-1$

+		if (colonSlashSlash < 0)

+			return ""; //$NON-NLS-1$

+		if (colonSlashSlash >= 0) {

+			result = url.substring(colonSlashSlash + 3);

+		}

+

+		final int colonPort = result.indexOf(':');

+		final int requestPath = result.indexOf('/');

+

+		int substringEnd;

+

+		if (colonPort > 0 && requestPath > 0)

+			substringEnd = Math.min(colonPort, requestPath);

+		else if (colonPort > 0)

+			substringEnd = colonPort;

+		else if (requestPath > 0)

+			substringEnd = requestPath;

+		else

+			substringEnd = result.length();

+

+		return result.substring(0, substringEnd);

+

+	}

+

+	protected static int getPortFromURL(String url) {

+		final int colonSlashSlash = url.indexOf("://"); //$NON-NLS-1$

+		if (colonSlashSlash < 0)

+			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;

+		// This is wrong as if the url has no colonPort before '?' then it should return the default

+

+		int colonPort = url.indexOf(':', colonSlashSlash + 1);

+		if (colonPort < 0)

+			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;

+		// Make sure that the colonPort is not from some part of the rest of the URL

+		int nextSlash = url.indexOf('/', colonSlashSlash + 3);

+		if (nextSlash != -1 && colonPort > nextSlash)

+			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;

+		// Make sure the colonPort is not part of the credentials in URI

+		final int atServer = url.indexOf('@', colonSlashSlash + 1);

+		if (atServer != -1 && colonPort < atServer && atServer < nextSlash)

+			colonPort = url.indexOf(':', atServer + 1);

+		if (colonPort < 0)

+			return urlUsesHttps(url) ? HTTPS_PORT : HTTP_PORT;

+

+		final int requestPath = url.indexOf('/', colonPort + 1);

+

+		int end;

+		if (requestPath < 0)

+			end = url.length();

+		else

+			end = requestPath;

+

+		return Integer.parseInt(url.substring(colonPort + 1, end));

+	}

+

+	protected static boolean urlUsesHttps(String url) {

+		url = url.trim();

+		return url.startsWith(HTTPS);

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.internal.provider.filetransfer.AbstractRetrieveFileTransfer#supportsProtocol(java.lang.String)

+	 */

+	public static boolean supportsProtocol(String protocolString) {

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

+			if (supportedProtocols[i].equalsIgnoreCase(protocolString))

+				return true;

+		return false;

+	}

+

+	protected boolean isConnected() {

+		return (getMethod != null);

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#doPause()

+	 */

+	protected boolean doPause() {

+		if (isPaused() || !isConnected() || isDone())

+			return false;

+		this.paused = true;

+		return this.paused;

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#doResume()

+	 */

+	protected boolean doResume() {

+		if (!isPaused() || isConnected())

+			return false;

+		return openStreamsForResume();

+	}

+

+	protected void setResumeRequestHeaderValues() throws IOException {

+		if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived)

+			throw new IOException(Messages.HttpClientRetrieveFileTransfer_RESUME_START_ERROR);

+		setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$

+		// set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990

+		getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$

+		setRequestHeaderValuesFromOptions();

+	}

+

+	private boolean openStreamsForResume() {

+

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "openStreamsForResume"); //$NON-NLS-1$

+		final String urlString = getRemoteFileURL().toString();

+		this.doneFired = false;

+

+		int code = -1;

+

+		try {

+			httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, getSocketReadTimeout());

+			int connectTimeout = getConnectTimeout();

+			httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, connectTimeout);

+

+			setupAuthentication(urlString);

+

+			getMethod = new HttpGet(urlString);

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

+			setResumeRequestHeaderValues();

+

+			Trace.trace(Activator.PLUGIN_ID, "resume=" + urlString); //$NON-NLS-1$

+

+			// Gzip encoding is not an option for resume

+			fireConnectStartEvent();

+			if (checkAndHandleDone()) {

+				return false;

+			}

+

+			connectingSockets.clear();

+			// Actually execute get and get response code (since redirect is set to true, then

+			// redirect response code handled internally

+			if (connectJob == null) {

+				performConnect(new NullProgressMonitor());

+			} else {

+				connectJob.schedule();

+				connectJob.join();

+				connectJob = null;

+			}

+			if (checkAndHandleDone()) {

+				return false;

+			}

+

+			code = responseCode;

+

+			responseHeaders = getResponseHeaders();

+

+			Trace.trace(Activator.PLUGIN_ID, "retrieve resp=" + code); //$NON-NLS-1$

+

+			if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {

+				getResumeResponseHeaderValues();

+				setInputStream(httpResponse.getEntity().getContent());

+				this.paused = false;

+				fireReceiveResumedEvent();

+			} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(NLS.bind("File not found: {0}", urlString), code, responseHeaders); //$NON-NLS-1$

+			} else if (code == HttpURLConnection.HTTP_UNAUTHORIZED) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized, code, responseHeaders);

+			} else if (code == HttpURLConnection.HTTP_FORBIDDEN) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException("Forbidden", code, responseHeaders); //$NON-NLS-1$

+			} else if (code == HttpURLConnection.HTTP_PROXY_AUTH) {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required, code, responseHeaders);

+			} else {

+				EntityUtils.consume(httpResponse.getEntity());

+				throw new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE, new Integer(code)), code, responseHeaders);

+			}

+			Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "openStreamsForResume", Boolean.TRUE); //$NON-NLS-1$

+			return true;

+		} catch (final Exception e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "openStreamsForResume", e); //$NON-NLS-1$

+			if (code == -1) {

+				if (!isDone()) {

+					setDoneException(e);

+				}

+			} else {

+				setDoneException((e instanceof IncomingFileTransferException) ? e : new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT, urlString), e, code, responseHeaders));

+			}

+			fireTransferReceiveDoneEvent();

+			Trace.exiting(Activator.PLUGIN_ID, DebugOptions.METHODS_EXITING, this.getClass(), "openStreamsForResume", Boolean.FALSE); //$NON-NLS-1$

+			return false;

+		}

+	}

+

+	protected void getResumeResponseHeaderValues() throws IOException {

+		if (getResponseCode() != HttpURLConnection.HTTP_PARTIAL)

+			throw new IOException();

+		if (lastModifiedTime != getLastModifiedTimeFromHeader())

+			throw new IOException(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_FILE_MODIFIED_SINCE_LAST_ACCESS);

+	}

+

+	/*

+	 * (non-Javadoc)

+	 *

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#getAdapter(java.lang.Class)

+	 */

+	public Object getAdapter(Class adapter) {

+		if (adapter == null)

+			return null;

+		if (adapter.equals(IFileTransferPausable.class) && isHTTP11())

+			return this;

+		if (adapter.equals(ISocketEventSource.class))

+			return this.socketEventSource;

+		return super.getAdapter(adapter);

+	}

+

+	/* (non-Javadoc)

+	 * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#setupProxy(org.eclipse.ecf.core.util.Proxy)

+	 */

+	protected void setupProxy(Proxy proxy) {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, HttpClientRetrieveFileTransfer.class, "setupProxy " + proxy); //$NON-NLS-1$

+		if (proxy.getType().equals(Proxy.Type.HTTP)) {

+			final ProxyAddress address = proxy.getAddress();

+			ConnRouteParams.setDefaultProxy(httpClient.getParams(), new HttpHost(address.getHostName(), address.getPort()));

+			//			getHostConfiguration().setProxy(address.getHostName(), address.getPort());

+		} else if (proxy.getType().equals(Proxy.Type.SOCKS)) {

+			Trace.trace(Activator.PLUGIN_ID, "retrieve socksproxy=" + proxy.getAddress()); //$NON-NLS-1$

+			proxyHelper.setupProxy(proxy);

+		}

+	}

+

+	/**

+	 * This method will clear out the proxy information (so that if this is

+	 * reused for a request without a proxy, it will work correctly).

+	 * @since 5.0

+	 */

+	protected void clearProxy() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, HttpClientRetrieveFileTransfer.class, "clearProxy()"); //$NON-NLS-1$

+		ConnRouteParams.setDefaultProxy(httpClient.getParams(), null);

+	}

+

+	/**

+	 * @since 5.0

+	 */

+	public static NTCredentials createNTLMCredentials(Proxy p) {

+		if (p == null) {

+			return null;

+		}

+		String un = getNTLMUserName(p);

+		String domain = getNTLMDomainName(p);

+		if (un == null || domain == null)

+			return null;

+

+		String workstation = null;

+		try {

+			workstation = InetAddress.getLocalHost().getHostName();

+		} catch (UnknownHostException e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, HttpClientRetrieveFileTransfer.class, "createNTLMCredentials", e); //$NON-NLS-1$

+		}

+

+		return new NTCredentials(un, p.getPassword(), workstation, domain);

+	}

+

+	protected static String getNTLMDomainName(Proxy p) {

+		String domainUsername = p.getUsername();

+		if (domainUsername == null)

+			return null;

+		int slashloc = domainUsername.indexOf('\\');

+		if (slashloc == -1)

+			return null;

+		return domainUsername.substring(0, slashloc);

+	}

+

+	protected static String getNTLMUserName(Proxy p) {

+		String domainUsername = p.getUsername();

+		if (domainUsername == null)

+			return null;

+		int slashloc = domainUsername.indexOf('\\');

+		if (slashloc == -1)

+			return null;

+		return domainUsername.substring(slashloc + 1);

+	}

+

+	protected void fireConnectStartEvent() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "fireConnectStartEvent"); //$NON-NLS-1$ 

+		// TODO: should the following be in super.fireReceiveStartEvent();

+		listener.handleTransferEvent(new IFileTransferConnectStartEvent() {

+			public IFileID getFileID() {

+				return remoteFileID;

+			}

+

+			public void cancel() {

+				HttpClientRetrieveFileTransfer.this.cancel();

+			}

+

+			public FileTransferJob prepareConnectJob(FileTransferJob j) {

+				return HttpClientRetrieveFileTransfer.this.prepareConnectJob(j);

+			}

+

+			public void connectUsingJob(FileTransferJob j) {

+				HttpClientRetrieveFileTransfer.this.connectUsingJob(j);

+			}

+

+			public String toString() {

+				final StringBuffer sb = new StringBuffer("IFileTransferConnectStartEvent["); //$NON-NLS-1$

+				sb.append(getFileID());

+				sb.append("]"); //$NON-NLS-1$

+				return sb.toString();

+			}

+

+			public Object getAdapter(Class adapter) {

+				return HttpClientRetrieveFileTransfer.this.getAdapter(adapter);

+			}

+		});

+	}

+

+	protected String createConnectJobName() {

+		return getRemoteFileURL().toString() + createRangeName() + Messages.HttpClientRetrieveFileTransfer_CONNECTING_JOB_NAME;

+	}

+

+	protected FileTransferJob prepareConnectJob(FileTransferJob cjob) {

+		if (cjob == null) {

+			// Create our own

+			cjob = new FileTransferJob(createJobName());

+		}

+		cjob.setFileTransfer(this);

+		cjob.setFileTransferRunnable(fileConnectRunnable);

+		return cjob;

+	}

+

+	protected void connectUsingJob(FileTransferJob cjob) {

+		Assert.isNotNull(cjob);

+		this.connectJob = cjob;

+	}

+

+	private IFileTransferRunnable fileConnectRunnable = new IFileTransferRunnable() {

+		public IStatus performFileTransfer(IProgressMonitor monitor) {

+			return performConnect(monitor);

+		}

+	};

+

+	private IStatus performConnect(IProgressMonitor monitor) {

+		// there might be more ticks in the future perhaps for 

+		// connect socket, certificate validation, send request, authenticate,

+		int ticks = 1;

+		monitor.beginTask(getRemoteFileURL().toString() + Messages.HttpClientRetrieveFileTransfer_CONNECTING_TASK_NAME, ticks);

+		try {

+			if (monitor.isCanceled())

+				throw newUserCancelledException();

+			httpContext = new BasicHttpContext();

+			httpResponse = httpClient.execute(getMethod, httpContext);

+			responseCode = httpResponse.getStatusLine().getStatusCode();

+			Trace.trace(Activator.PLUGIN_ID, "retrieve resp=" + responseCode); //$NON-NLS-1$

+		} catch (final Exception e) {

+			Trace.catching(Activator.PLUGIN_ID, DebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "performConnect", e); //$NON-NLS-1$

+			if (!isDone()) {

+				setDoneException(e);

+			}

+		} finally {

+			monitor.done();

+		}

+		return Status.OK_STATUS;

+

+	}

+

+	protected void finalize() throws Throwable {

+		try {

+			if (this.httpClient != null) {

+				this.httpClient.getConnectionManager().shutdown();

+			}

+		} finally {

+			super.finalize();

+		}

+	}

+

+	protected void fireReceiveResumedEvent() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "fireReceiveResumedEvent len=" + fileLength + ";rcvd=" + bytesReceived); //$NON-NLS-1$ //$NON-NLS-2$

+		super.fireReceiveResumedEvent();

+	}

+

+	protected void fireTransferReceiveDataEvent() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "fireTransferReceiveDataEvent len=" + fileLength + ";rcvd=" + bytesReceived); //$NON-NLS-1$ //$NON-NLS-2$

+		super.fireTransferReceiveDataEvent();

+	}

+

+	protected void fireTransferReceiveDoneEvent() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "fireTransferReceiveDoneEvent len=" + fileLength + ";rcvd=" + bytesReceived); //$NON-NLS-1$ //$NON-NLS-2$

+		this.doneFired = true;

+		super.fireTransferReceiveDoneEvent();

+	}

+

+	protected void fireTransferReceivePausedEvent() {

+		Trace.entering(Activator.PLUGIN_ID, DebugOptions.METHODS_ENTERING, this.getClass(), "fireTransferReceivePausedEvent len=" + fileLength + ";rcvd=" + bytesReceived); //$NON-NLS-1$ //$NON-NLS-2$

+		super.fireTransferReceivePausedEvent();

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransferFactory.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransferFactory.java
new file mode 100644
index 0000000..0797b6b
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransferFactory.java
@@ -0,0 +1,24 @@
+/****************************************************************************

+ * Copyright (c) 2007 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

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

+ *

+ * Contributors:

+ *    Composent, Inc. - initial API and implementation

+ *    Thomas Joiner - HttpClient 4 implementation

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

+package org.eclipse.ecf.provider.filetransfer.httpclient4;

+

+import org.apache.http.impl.client.DefaultHttpClient;

+import org.apache.http.impl.conn.SingleClientConnManager;

+import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransfer;

+import org.eclipse.ecf.filetransfer.service.IRetrieveFileTransferFactory;

+

+public class HttpClientRetrieveFileTransferFactory implements IRetrieveFileTransferFactory {

+

+	public IRetrieveFileTransfer newInstance() {

+		return new HttpClientRetrieveFileTransfer(new DefaultHttpClient(new SingleClientConnManager()));

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientSslTrustManager.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientSslTrustManager.java
new file mode 100644
index 0000000..28084d6
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientSslTrustManager.java
@@ -0,0 +1,57 @@
+/****************************************************************************

+ * 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.filetransfer.httpclient4;

+

+import javax.net.ssl.X509TrustManager;

+

+public class HttpClientSslTrustManager implements X509TrustManager {

+	// seems to be no purpose

+	public boolean checkClientTrusted(java.security.cert.X509Certificate[] chain) {

+		return true;

+	}

+

+	// seems to be no purpose

+	public boolean isServerTrusted(java.security.cert.X509Certificate[] chain) {

+		return true;

+	}

+

+	// seems to be no purpose

+	public boolean isClientTrusted(java.security.cert.X509Certificate[] chain) {

+		return true;

+	}

+

+	/**

+	 * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()

+	 */

+	public java.security.cert.X509Certificate[] getAcceptedIssuers() {

+		return null;

+	}

+

+	/**

+	 * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[],

+	 *      java.lang.String)

+	 */

+	public void checkClientTrusted(java.security.cert.X509Certificate[] chain,

+			String authType) {

+		// don't need to do any checks

+	}

+

+	/**

+	 * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[],

+	 *      java.lang.String)

+	 */

+	public void checkServerTrusted(java.security.cert.X509Certificate[] chain,

+			String authType) {

+		// don't need to do any checks

+	}

+

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/NTLMProxyDetector.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/NTLMProxyDetector.java
new file mode 100644
index 0000000..4510dd6
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/NTLMProxyDetector.java
@@ -0,0 +1,64 @@
+/*******************************************************************************

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

+*   Thomas Joiner - changed to work with HttpClient 4.1 and added SPNEGO detection

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

+package org.eclipse.ecf.provider.filetransfer.httpclient4;

+

+import org.apache.http.auth.AuthScheme;

+import org.apache.http.auth.AuthState;

+import org.apache.http.client.HttpClient;

+import org.apache.http.client.protocol.ClientContext;

+import org.apache.http.protocol.HttpContext;

+

+public class NTLMProxyDetector {

+

+	private static final String PROXY_SPNEGO_VALUE = "NEGOTIATE"; //$NON-NLS-1$

+	private static final String PROXY_NTLM_VALUE = "NTLM"; //$NON-NLS-1$

+

+	/**

+	 * This method will detect if the request connected to a NTLM proxy

+	 * given the {@link HttpContext} provided to one of the {@link HttpClient#execute()}

+	 * methods.

+	 * 

+	 * @param context the {@link HttpContext} given to the {@link HttpClient} at execution time

+	 * @return true if it connected to an NTLM proxy

+	 * @since 5.0

+	 */

+	public static boolean detectNTLMProxy(HttpContext context) {

+		return isProxyType(context, PROXY_NTLM_VALUE);

+	}

+

+	private static boolean isProxyType(HttpContext context, String scheme) {

+		if (context == null)

+			return false;

+		AuthState authState = (AuthState) context.getAttribute(ClientContext.PROXY_AUTH_STATE);

+		if (authState == null)

+			return false;

+		AuthScheme authScheme = authState.getAuthScheme();

+		if (authScheme == null)

+			return false;

+		String schemeName = authScheme.getSchemeName();

+		if (schemeName == null)

+			return false;

+		return schemeName.equalsIgnoreCase(scheme);

+	}

+

+	/**

+	 * This method will detect if the request connected to a SPNEGO proxy

+	 * given the {@link HttpContext} provided to one of the {@link HttpClient#execute()}

+	 * methods.

+	 * 

+	 * @param context the {@link HttpContext} given to the {@link HttpClient} at execution time

+	 * @return true if it connected to an SPNEGO proxy

+	 * @since 5.0

+	 */

+	public static boolean detectSPNEGOProxy(HttpContext context) {

+		return isProxyType(context, PROXY_SPNEGO_VALUE);

+	}

+}

diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.ssl/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer.ssl/.settings/org.eclipse.pde.api.tools.prefs
index 80b183d..ab93531 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.ssl/.settings/org.eclipse.pde.api.tools.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.ssl/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:17:23 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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.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/.settings/org.eclipse.pde.api.tools.prefs b/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.pde.api.tools.prefs
index b074f16..ab93531 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.pde.api.tools.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/.settings/org.eclipse.pde.api.tools.prefs
@@ -1,94 +1,97 @@
-#Wed Sep 01 15:15:43 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=Error
-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
+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

+API_USE_SCAN_FIELD_SEVERITY=Error

+API_USE_SCAN_METHOD_SEVERITY=Error

+API_USE_SCAN_TYPE_SEVERITY=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=Error

+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

+MISSING_EE_DESCRIPTIONS=Ignore

+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.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.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java
index 6e2ca6b..2acf74f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/outgoing/AbstractOutgoingFileTransfer.java
@@ -179,8 +179,6 @@
 	protected void fireTransferSendDoneEvent() {
 		listener.handleTransferEvent(new IOutgoingFileTransferSendDoneEvent() {
 
-			private static final long serialVersionUID = -2686266564645210722L;
-
 			public IOutgoingFileTransfer getSource() {
 				return AbstractOutgoingFileTransfer.this;
 			}
@@ -202,8 +200,6 @@
 	protected void fireTransferSendDataEvent() {
 		listener.handleTransferEvent(new IOutgoingFileTransferSendDataEvent() {
 
-			private static final long serialVersionUID = -2916500675859842392L;
-
 			public IOutgoingFileTransfer getSource() {
 				return AbstractOutgoingFileTransfer.this;
 			}
@@ -317,8 +313,6 @@
 	protected void fireSendStartEvent() {
 		listener.handleTransferEvent(new IOutgoingFileTransferResponseEvent() {
 
-			private static final long serialVersionUID = 2171381825030082432L;
-
 			public String toString() {
 				final StringBuffer sb = new StringBuffer("IOutgoingFileTransferResponseEvent["); //$NON-NLS-1$
 				sb.append("isdone=").append(done).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java
index 6924d3b..3ecfd66 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java
@@ -346,8 +346,6 @@
 	protected void fireTransferReceivePausedEvent() {
 		listener.handleTransferEvent(new IIncomingFileTransferReceivePausedEvent() {
 
-			private static final long serialVersionUID = -1317411290525985140L;
-
 			public IIncomingFileTransfer getSource() {
 				return AbstractRetrieveFileTransfer.this;
 			}
@@ -364,8 +362,6 @@
 	protected void fireTransferReceiveDoneEvent() {
 		listener.handleTransferEvent(new IIncomingFileTransferReceiveDoneEvent() {
 
-			private static final long serialVersionUID = 6925524078226825710L;
-
 			public IIncomingFileTransfer getSource() {
 				return AbstractRetrieveFileTransfer.this;
 			}
@@ -386,8 +382,6 @@
 
 	protected void fireTransferReceiveDataEvent() {
 		listener.handleTransferEvent(new IIncomingFileTransferReceiveDataEvent() {
-			private static final long serialVersionUID = -5656328374614130161L;
-
 			public IIncomingFileTransfer getSource() {
 				return AbstractRetrieveFileTransfer.this;
 			}
@@ -669,8 +663,6 @@
 
 	protected void fireReceiveStartEvent() {
 		listener.handleTransferEvent(new IIncomingFileTransferReceiveStartEvent() {
-			private static final long serialVersionUID = -513800598918052184L;
-
 			/*
 			 * (non-Javadoc)
 			 * 
@@ -770,8 +762,6 @@
 	protected void fireReceiveResumedEvent() {
 		listener.handleTransferEvent(new IIncomingFileTransferReceiveResumedEvent() {
 
-			private static final long serialVersionUID = 7111739642849612839L;
-
 			public IIncomingFileTransfer getSource() {
 				return AbstractRetrieveFileTransfer.this;
 			}
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..2114e97 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
@@ -23,6 +23,5 @@
  org.eclipse.osgi.util;version="1.0.0",
  org.osgi.framework;version="1.3.0",
  org.osgi.service.log;version="1.3.0",
- org.osgi.service.packageadmin;version="1.2.0",
  org.osgi.util.tracker;version="1.3.2"
 Bundle-ActivationPolicy: lazy
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/Activator.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/Activator.java
index d56dfb8..94385af 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/Activator.java
@@ -1,23 +1,21 @@
 /****************************************************************************
-* Copyright (c) 2004, 2009 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) 2004, 2009 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.irc;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.ecf.core.util.LogHelper;
 import org.eclipse.ecf.core.util.SystemLogService;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
+import org.osgi.framework.*;
 import org.osgi.service.log.LogService;
-import org.osgi.service.packageadmin.PackageAdmin;
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
@@ -27,23 +25,22 @@
 
 	public static final String PLUGIN_ID = "org.eclipse.ecf.provider.irc"; //$NON-NLS-1$
 
-	//The shared instance.
+	// The shared instance.
 	private static Activator plugin;
 
 	private BundleContext bundleContext = null;
-
 	private ServiceTracker logServiceTracker = null;
-	private ServiceTracker packageServiceTracker = null;
-
 	private LogService logService;
-	private PackageAdmin packageService;
 
 	public static void log(String message) {
-		getDefault().log(new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, null));
+		getDefault().log(
+				new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, null));
 	}
 
 	public static void log(String message, Throwable e) {
-		getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, "Caught exception", e)); //$NON-NLS-1$
+		getDefault().log(
+				new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK,
+						"Caught exception", e)); //$NON-NLS-1$
 	}
 
 	protected LogService getLogService() {
@@ -65,7 +62,8 @@
 	public void log(IStatus status) {
 		LogService logService = getLogService();
 		if (logService != null) {
-			logService.log(LogHelper.getLogCode(status), LogHelper.getLogMessage(status), status.getException());
+			logService.log(LogHelper.getLogCode(status),
+					LogHelper.getLogMessage(status), status.getException());
 		}
 	}
 
@@ -95,20 +93,6 @@
 		plugin = null;
 	}
 
-	public PackageAdmin getPackageAdmin() {
-		if (packageServiceTracker == null) {
-			packageServiceTracker = new ServiceTracker(bundleContext,
-					PackageAdmin.class.getName(), null);
-			packageServiceTracker.open();
-		}
-
-		if (packageService == null) {
-			packageService = (PackageAdmin) packageServiceTracker.getService();
-		}
-
-		return packageService;
-	}
-
 	/**
 	 * Returns the shared instance.
 	 */
@@ -119,4 +103,15 @@
 		return plugin;
 	}
 
+	public boolean hasDatashare() {
+		if (bundleContext == null)
+			return false;
+		Bundle[] bundles = bundleContext.getBundles();
+		for (int i = 0; i < bundles.length; i++)
+			if (bundles[i].getSymbolicName().equals(
+					"org.eclipse.ecf.provider.datashare.nio"))
+				return true;
+		return false;
+	}
+
 }
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..6b741e8 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,12 +27,10 @@
 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;
-import org.osgi.service.packageadmin.PackageAdmin;
 import org.schwering.irc.lib.*;
 import org.schwering.irc.lib.ssl.SSLIRCConnection;
 
@@ -49,7 +45,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 +71,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 +88,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 +99,22 @@
 	}
 
 	/**
-	 * 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$
-		return bundles != null && bundles.length != 0;
+		return Activator.getDefault().hasDatashare();
 	}
 
 	/**
-	 * 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 +187,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 +200,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 +253,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 +303,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 +364,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 +434,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 +645,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 +884,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 +898,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 +907,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 +930,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);
@@ -1075,12 +1078,10 @@
 		}
 
 		public void setActive(boolean active) {
-			// TODO Auto-generated method stub
 
 		}
 
 		public Object getAdapter(Class adapter) {
-			// TODO Auto-generated method stub
 			return null;
 		}
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.jmdns/.settings/org.eclipse.jdt.core.prefs
index ead3142..66699a9 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/.settings/org.eclipse.jdt.core.prefs
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Sun Oct 24 22:57:51 CEST 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
@@ -34,6 +33,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
@@ -54,6 +54,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=ignore
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
@@ -69,6 +70,7 @@
 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
@@ -85,11 +87,12 @@
 org.eclipse.jdt.core.compiler.problem.unusedImport=error
 org.eclipse.jdt.core.compiler.problem.unusedLabel=ignore
 org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+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=ignore
 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/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF
index f879624..4a9f2ef 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
 Export-Package: org.eclipse.ecf.internal.provider.jmdns;x-internal:=true,
  org.eclipse.ecf.provider.jmdns.container,
  org.eclipse.ecf.provider.jmdns.identity
-Import-Package: javax.jmdns;version="3.2.2",
+Import-Package: javax.jmdns;version="3.4.2",
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.3.0",
  org.osgi.service.log;version="1.3.0",
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/build.properties b/providers/bundles/org.eclipse.ecf.provider.jmdns/build.properties
index 5323b00..bef9880 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/build.properties
@@ -12,3 +12,4 @@
 output.. = bin/
 jre.compilation.profile = J2SE-1.4
 javacErrors.. = -assertIdentifier,-enumIdentifier
+additional.bundles = org.eclipse.equinox.concurrent
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
index b44de57..48c15c8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java
@@ -79,36 +79,46 @@
 		props.put(IDiscoveryService.CONTAINER_NAME, NAME);
 		props.put(Constants.SERVICE_RANKING, new Integer(750));
 		String[] clazzes = new String[] {IDiscoveryService.class.getName(), IDiscoveryLocator.class.getName(), IDiscoveryAdvertiser.class.getName()};
-		serviceRegistration = context.registerService(clazzes, new ServiceFactory() {
-			private volatile JMDNSDiscoveryContainer jdc;
+		serviceRegistration = context.registerService(clazzes, serviceFactory, props);
+	}
 
-			/* (non-Javadoc)
-			 * @see org.osgi.framework.ServiceFactory#getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration)
-			 */
-			public Object getService(final Bundle bundle, final ServiceRegistration registration) {
-				if (jdc == null) {
-					try {
-						jdc = new JMDNSDiscoveryContainer();
-						jdc.connect(null, null);
-					} catch (final IDCreateException e) {
-						Trace.catching(JMDNSPlugin.PLUGIN_ID, JMDNSDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "getService(Bundle, ServiceRegistration)", e); //$NON-NLS-1$ //$NON-NLS-2$
-					} catch (final ContainerConnectException e) {
-						Trace.catching(JMDNSPlugin.PLUGIN_ID, JMDNSDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "getService(Bundle, ServiceRegistration)", e); //$NON-NLS-1$ //$NON-NLS-2$
-						jdc = null;
-					}
+	private final DiscoveryServiceFactory serviceFactory = new DiscoveryServiceFactory();
+
+	class DiscoveryServiceFactory implements ServiceFactory {
+		private volatile JMDNSDiscoveryContainer jdc;
+
+		/* (non-Javadoc)
+		 * @see org.osgi.framework.ServiceFactory#getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration)
+		 */
+		public Object getService(final Bundle bundle, final ServiceRegistration registration) {
+			if (jdc == null) {
+				try {
+					jdc = new JMDNSDiscoveryContainer();
+					jdc.connect(null, null);
+				} catch (final IDCreateException e) {
+					Trace.catching(JMDNSPlugin.PLUGIN_ID, JMDNSDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "getService(Bundle, ServiceRegistration)", e); //$NON-NLS-1$ //$NON-NLS-2$
+				} catch (final ContainerConnectException e) {
+					Trace.catching(JMDNSPlugin.PLUGIN_ID, JMDNSDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "getService(Bundle, ServiceRegistration)", e); //$NON-NLS-1$ //$NON-NLS-2$
+					jdc = null;
 				}
-				return jdc;
 			}
+			return jdc;
+		}
 
-			/* (non-Javadoc)
-			 * @see org.osgi.framework.ServiceFactory#ungetService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration, java.lang.Object)
-			 */
-			public void ungetService(final Bundle bundle, final ServiceRegistration registration, final Object service) {
-				//TODO-mkuppe we later might want to dispose jSLP when the last!!! consumer ungets the service 
-				//Though don't forget about the (ECF) Container which might still be in use
-			}
-		}, (Dictionary) props);
+		/**
+		 * @return false if this factory has never created a service instance, true otherwise
+		 */
+		public boolean isActive() {
+			return jdc != null;
+		}
 
+		/* (non-Javadoc)
+		 * @see org.osgi.framework.ServiceFactory#ungetService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration, java.lang.Object)
+		 */
+		public void ungetService(final Bundle bundle, final ServiceRegistration registration, final Object service) {
+			//TODO-mkuppe we later might want to dispose jmDNS when the last!!! consumer ungets the service 
+			//Though don't forget about the (ECF) Container which might still be in use
+		}
 	}
 
 	protected Bundle getBundle() {
@@ -122,7 +132,7 @@
 	 * This method is called when the plug-in is stopped
 	 */
 	public void stop(final BundleContext ctxt) throws Exception {
-		if (serviceRegistration != null) {
+		if (serviceRegistration != null && serviceFactory.isActive()) {
 			ServiceReference reference = serviceRegistration.getReference();
 			IDiscoveryLocator aLocator = (IDiscoveryLocator) ctxt.getService(reference);
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java
index d0dc854..bb6d79b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java
@@ -156,12 +156,16 @@
 			notificationThread = null;
 			this.targetID = null;
 			serviceTypes.clear();
-			try {
-				jmdns.close();
-			} catch (IOException e) {
-				Trace.catching(JMDNSPlugin.PLUGIN_ID, JMDNSDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "disconnect", e); //$NON-NLS-1$
+
+			// @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=385395
+			if (jmdns != null) {
+				try {
+				    jmdns.close();
+				} catch (IOException e) {
+				    Trace.catching(JMDNSPlugin.PLUGIN_ID, JMDNSDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "disconnect", e); //$NON-NLS-1$
+				}
+				jmdns = null;
 			}
-			jmdns = null;
 			fireContainerEvent(new ContainerDisconnectedEvent(this.getID(), connectedID));
 		}
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/build.properties b/providers/bundles/org.eclipse.ecf.provider.jslp/build.properties
index c410c7f..d5cdbe0 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/build.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/build.properties
@@ -9,3 +9,4 @@
 source.. = src/
 src.includes = about.html
 jre.compilation.profile = J2SE-1.4
+additional.bundles = org.eclipse.equinox.concurrent
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.jslp/plugin.properties
index 9a4eb5f..eaae277 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF SLP Discovery Provider
+pluginName = ECF Discovery SLP Provider
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
index b21ee7a..3a09c54 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
@@ -94,33 +94,44 @@
 		props.put(Constants.SERVICE_RANKING, new Integer(500));
 
 		String[] clazzes = new String[] {IDiscoveryService.class.getName(), IDiscoveryLocator.class.getName(), IDiscoveryAdvertiser.class.getName()};
-		serviceRegistration = context.registerService(clazzes, new ServiceFactory() {
-			private volatile JSLPDiscoveryContainer jdc;
+		serviceRegistration = context.registerService(clazzes, serviceFactory, props);
+	}
 
-			/* (non-Javadoc)
-			 * @see org.osgi.framework.ServiceFactory#getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration)
-			 */
-			public Object getService(final Bundle bundle, final ServiceRegistration registration) {
-				if (jdc == null) {
-					try {
-						jdc = new JSLPDiscoveryContainer();
-						jdc.connect(null, null);
-					} catch (final ContainerConnectException e) {
-						Trace.catching(Activator.PLUGIN_ID, Activator.PLUGIN_ID + "/debug/methods/tracing", this.getClass(), "getService(Bundle, ServiceRegistration)", e); //$NON-NLS-1$ //$NON-NLS-2$
-						jdc = null;
-					}
+	private final DiscoveryServiceFactory serviceFactory = new DiscoveryServiceFactory();
+
+	class DiscoveryServiceFactory implements ServiceFactory {
+		private volatile JSLPDiscoveryContainer jdc;
+
+		/* (non-Javadoc)
+		 * @see org.osgi.framework.ServiceFactory#getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration)
+		 */
+		public Object getService(final Bundle bundle, final ServiceRegistration registration) {
+			if (jdc == null) {
+				try {
+					jdc = new JSLPDiscoveryContainer();
+					jdc.connect(null, null);
+				} catch (final ContainerConnectException e) {
+					Trace.catching(Activator.PLUGIN_ID, Activator.PLUGIN_ID + "/debug/methods/tracing", this.getClass(), "getService(Bundle, ServiceRegistration)", e); //$NON-NLS-1$ //$NON-NLS-2$
+					jdc = null;
 				}
-				return jdc;
 			}
+			return jdc;
+		}
 
-			/* (non-Javadoc)
-			 * @see org.osgi.framework.ServiceFactory#ungetService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration, java.lang.Object)
-			 */
-			public void ungetService(final Bundle bundle, final ServiceRegistration registration, final Object service) {
-				//TODO-mkuppe we later might want to dispose jSLP when the last!!! consumer ungets the service 
-				//Though don't forget about the (ECF) Container which might still be in use
-			}
-		}, props);
+		/**
+		 * @return false if this factory has never created a service instance, true otherwise
+		 */
+		public boolean isActive() {
+			return jdc != null;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.osgi.framework.ServiceFactory#ungetService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration, java.lang.Object)
+		 */
+		public void ungetService(final Bundle bundle, final ServiceRegistration registration, final Object service) {
+			//TODO-mkuppe we later might want to dispose jSLP when the last!!! consumer ungets the service 
+			//Though don't forget about the (ECF) Container which might still be in use
+		}
 	}
 
 	/*
@@ -130,7 +141,7 @@
 	 */
 	public void stop(final BundleContext context) throws Exception {
 		//TODO-mkuppe here we should do something like a deregisterAll(), but see ungetService(...);
-		if (serviceRegistration != null) {
+		if (serviceRegistration != null && serviceFactory.isActive()) {
 			ServiceReference reference = serviceRegistration.getReference();
 			IDiscoveryLocator aLocator = (IDiscoveryLocator) context.getService(reference);
 
diff --git a/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF
index eddb75f..ea6f277 100644
--- a/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ECF Local Remote Service Provider
 Bundle-SymbolicName: org.eclipse.ecf.provider.local;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.local.Activator
 Bundle-Vendor: Eclipse.org - ECF
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
diff --git a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/container/LocalRemoteServiceContainer.java b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/container/LocalRemoteServiceContainer.java
index 8123963..20286a3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/container/LocalRemoteServiceContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/container/LocalRemoteServiceContainer.java
@@ -99,6 +99,10 @@
 		registry.setConnectContextForAuthentication(connectContext);
 	}
 
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		return registry.setRemoteServiceCallPolicy(policy);
+	}
+
 	public void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException {
 		if (targetID.equals(targetID))
 			return;
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/.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.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/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 117ef36..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.localdiscovery/build.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               OSGI-INF/l10n/bundle.properties,\
-               about.html
-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.msn/src/org/eclipse/ecf/internal/provider/msn/MSNContainer.java b/providers/bundles/org.eclipse.ecf.provider.msn/src/org/eclipse/ecf/internal/provider/msn/MSNContainer.java
index f022a04..3d8de7d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.msn/src/org/eclipse/ecf/internal/provider/msn/MSNContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.msn/src/org/eclipse/ecf/internal/provider/msn/MSNContainer.java
@@ -85,8 +85,6 @@
 		IChatMessageSender, IPresenceService, IPresenceSender, IRoster,
 		IRosterManager, IRosterSubscriptionSender, ITypingMessageSender {
 
-	private static final long serialVersionUID = 1676711994010767942L;
-
 	private final Map chatSessions;
 
 	private final List containerListeners;
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF
index 872e7d0..ddd66c3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.provider.r_osgi;singleton:=true
-Bundle-Version: 3.1.0.qualifier
+Bundle-Version: 3.2.0.qualifier
 Import-Package: org.eclipse.ecf.core.util.reflection,
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.3.0",
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/R_OSGiRemoteServiceContainer.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java
index bc05486..1fc8f93 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java
@@ -267,10 +267,10 @@
 		}
 		IRemoteFilter remoteFilter = (filter == null) ? null : createRemoteFilter(filter);
 		if (getConnectedID() != null) {
-			final RemoteServiceReference[] refs = remoteService.getRemoteServiceReferences(connectedID.getURI(), clazz, remoteFilter);
-			if (refs != null)
-				for (int i = 0; i < refs.length; i++)
-					results.add(new RemoteServiceReferenceImpl(createRemoteServiceID(refs[i]), refs[i]));
+			final RemoteServiceReference[] rrefs = remoteService.getRemoteServiceReferences(connectedID.getURI(), clazz, remoteFilter);
+			if (rrefs != null)
+				for (int i = 0; i < rrefs.length; i++)
+					results.add(getCachedRemoteServiceReference(rrefs[i]));
 		}
 		return (IRemoteServiceReference[]) results.toArray(new IRemoteServiceReference[] {});
 	}
@@ -296,11 +296,25 @@
 			if (rrefs == null)
 				return results;
 			for (int i = 0; i < rrefs.length; i++)
-				results.add(new RemoteServiceReferenceImpl(createRemoteServiceID(rrefs[i]), rrefs[i]));
+				results.add(getCachedRemoteServiceReference(rrefs[i]));
 		}
 		return results;
 	}
 
+	private Map cachedRemoteServiceReferences = new HashMap();
+
+	private IRemoteServiceReference getCachedRemoteServiceReference(RemoteServiceReference rref) {
+		IRemoteServiceReference result = null;
+		synchronized (cachedRemoteServiceReferences) {
+			result = (IRemoteServiceReference) cachedRemoteServiceReferences.get(rref);
+			if (result == null) {
+				result = new RemoteServiceReferenceImpl(createRemoteServiceID(rref), rref);
+				cachedRemoteServiceReferences.put(rref, result);
+			}
+		}
+		return result;
+	}
+
 	IRemoteServiceID createRemoteServiceID(R_OSGiID cID, Long l) {
 		return (IRemoteServiceID) IDFactory.getDefault().createID(getRemoteServiceNamespace(), new Object[] {cID, l});
 	}
@@ -512,6 +526,9 @@
 	}
 
 	private void doDisconnect(R_OSGiID targetID) {
+		synchronized (cachedRemoteServiceReferences) {
+			cachedRemoteServiceReferences.clear();
+		}
 		remoteService.disconnect(targetID.getURI());
 	}
 
@@ -732,7 +749,7 @@
 					// There should be either zero or 1 remote service reference
 					if (refs == null || refs.length == 0)
 						return null;
-					return new RemoteServiceReferenceImpl(createRemoteServiceID(refs[0]), refs[0]);
+					return getCachedRemoteServiceReference(refs[0]);
 				} catch (InvalidSyntaxException e) {
 					// shouldn't happen as filter better be well formed
 					return null;
@@ -746,4 +763,9 @@
 		this.connectContext = connectContext;
 	}
 
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		// XXX...we need to see if r-OSGi has a means to implement this
+		return false;
+	}
+
 }
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/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java
index a385a8a..26a63d2 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java
@@ -105,7 +105,11 @@
 	 * @see org.eclipse.ecf.remoteservice.IRemoteServiceRegistration#unregister()
 	 */
 	public void unregister() {
-		reg.unregister();
+		try {
+			reg.unregister();
+		} catch (IllegalStateException e) {
+			// underlying service registration already unregistered
+		}
 	}
 
 	public IRemoteServiceID getID() {
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF
index 3d9599e..6a826e5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.ecf.provider.remoteservice;singleton:=true
-Bundle-Version: 3.4.0.qualifier
+Bundle-Version: 4.0.0.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.provider.remoteservice.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -11,14 +11,12 @@
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
 Export-Package: org.eclipse.ecf.internal.provider.remoteservice;x-internal:=true,
- org.eclipse.ecf.provider.remoteservice,
- org.eclipse.ecf.provider.remoteservice.generic
+ org.eclipse.ecf.provider.remoteservice.generic;version="4.0.0"
 Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.ecf,
  org.eclipse.ecf.sharedobject,
  org.eclipse.ecf.provider,
- org.eclipse.ecf.remoteservice,
- org.eclipse.ecf.discovery
+ org.eclipse.ecf.remoteservice;bundle-version="6.0.0"
 Import-Package: org.eclipse.core.runtime.jobs,
  org.eclipse.equinox.concurrent.future,
  org.eclipse.osgi.framework.eventmgr,
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/AbstractRemoteServiceDescription.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/AbstractRemoteServiceDescription.java
deleted file mode 100644
index fb1ee5e..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/AbstractRemoteServiceDescription.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2008 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.remoteservice;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ecf.core.*;
-import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.core.util.*;
-import org.eclipse.ecf.discovery.IServiceInfo;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-
-/**
- *
- */
-public abstract class AbstractRemoteServiceDescription {
-
-	private ID discoveryID;
-	private IServiceInfo serviceInfo;
-
-	private IContainerFilter remoteServiceAdapterFilter = new AdapterContainerFilter(IRemoteServiceContainerAdapter.class);
-
-	private IContainerFilter connectedFilter = new ConnectedContainerFilter();
-
-	public AbstractRemoteServiceDescription(IServiceInfo serviceInfo, ID discoveryID) {
-		Assert.isNotNull(serviceInfo);
-		this.serviceInfo = serviceInfo;
-		this.discoveryID = null;
-	}
-
-	public ID getDiscoveryID() {
-		return this.discoveryID;
-	}
-
-	public IServiceInfo getServiceInfo() {
-		return this.serviceInfo;
-	}
-
-	public abstract Object createProxy() throws Exception;
-
-	protected String getProperty(String key) {
-		return serviceInfo.getServiceProperties().getPropertyString(key);
-	}
-
-	protected String[] getInterfaces() {
-		String val = serviceInfo.getServiceProperties().getPropertyString(org.eclipse.ecf.remoteservice.Constants.OBJECTCLASS);
-		return org.eclipse.ecf.core.util.StringUtils.split(val, ";"); //$NON-NLS-1$
-	}
-
-	public String getContainerFactoryName() {
-		return getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_CONTAINER_FACTORY_NAME);
-	}
-
-	public IContainer createContainer() throws ContainerCreateException {
-		String containerFactoryName = getContainerFactoryName();
-		if (containerFactoryName == null)
-			return ContainerFactory.getDefault().createContainer();
-		return ContainerFactory.getDefault().createContainer(containerFactoryName);
-	}
-
-	protected IContainer[] getMatchingContainers(IContainerFilter filter, IContainer[] sourceContainers) {
-		List results = new ArrayList();
-		for (int i = 0; i < sourceContainers.length; i++)
-			if (filter.match(sourceContainers[i]))
-				results.add(sourceContainers[i]);
-		return (IContainer[]) results.toArray(new IContainer[] {});
-	}
-
-	public IContainer[] getRemoteServicesContainers(IContainer[] sourceContainers) {
-		return getMatchingContainers(remoteServiceAdapterFilter, sourceContainers);
-	}
-
-	public IContainer[] getConnectedContainers(IContainer[] sourceContainers) {
-		return getMatchingContainers(connectedFilter, sourceContainers);
-	}
-
-	public ID createTargetID(Namespace namespace) throws IDCreateException {
-		return IDFactory.getDefault().createID(namespace, getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_CONTAINER_TARGET));
-	}
-}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/ServiceTypeListener.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/ServiceTypeListener.java
deleted file mode 100644
index 0dbc7c7..0000000
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/ServiceTypeListener.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************************
- * 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.provider.remoteservice;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ecf.discovery.*;
-import org.eclipse.ecf.discovery.identity.IServiceTypeID;
-
-/**
- * Helper class for setting up service listeners for a given serviceTypeID.
- */
-public class ServiceTypeListener implements IServiceTypeListener {
-
-	private final IDiscoveryLocator discovery;
-	private final IServiceTypeID[] serviceTypeIDs;
-	final IServiceListener serviceListener;
-	private final String[] requiredProperties;
-
-	class ServiceListener implements IServiceListener {
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ecf.discovery.IServiceListener#serviceDiscovered(org.eclipse.ecf.discovery.IServiceEvent)
-		 */
-		public void serviceDiscovered(IServiceEvent anEvent) {
-			final IServiceInfo svcInfo = anEvent.getServiceInfo();
-			if (hasRequiredProperties(svcInfo.getServiceProperties()))
-				serviceListener.serviceDiscovered(anEvent);
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.ecf.discovery.IServiceListener#serviceUndiscovered(org.eclipse.ecf.discovery.IServiceEvent)
-		 */
-		public void serviceUndiscovered(IServiceEvent anEvent) {
-			final IServiceInfo svcInfo = anEvent.getServiceInfo();
-			if (hasRequiredProperties(svcInfo.getServiceProperties()))
-				serviceListener.serviceUndiscovered(anEvent);
-		}
-	}
-
-	/**
-	 * 
-	 * @param discovery discovery adapter instance to set up.  Must not be <code>null</code>.
-	 * @param serviceListener service listener to receive notifications of service added/removed and resolved notifications.  Must not be <code>null</code>.
-	 * @param serviceTypeIDs service type IDs to setup service listeners for.  May be <code>null</code>.  If <code>null</code>, then
-	 * all service types will notify the given serviceListener.
-	 * @param requiredProperties properties required of the service info
-	 * @since 3.0
-	 */
-	public ServiceTypeListener(IDiscoveryLocator discovery, IServiceListener serviceListener, IServiceTypeID[] serviceTypeIDs, String[] requiredProperties) {
-		this.discovery = discovery;
-		Assert.isNotNull(this.discovery);
-		this.serviceListener = serviceListener;
-		Assert.isNotNull(this.serviceListener);
-		this.serviceTypeIDs = serviceTypeIDs;
-		this.requiredProperties = requiredProperties;
-	}
-
-	/**
-	 * 
-	 * @param discovery discovery adapter instance to set up.  Must not be <code>null</code>.
-	 * @param serviceListener service listener to receive notifications of service added/removed and resolved notifications.  Must not be <code>null</code>.
-	 * @param serviceTypeID service type IDs to setup service listeners for.  May be <code>null</code>.  If <code>null</code>, then
-	 * all service types will notify the given serviceListener.
-	 * @param requiredProperties properties required of the service info
-	 * @since 3.0
-	 */
-	public ServiceTypeListener(IDiscoveryLocator discovery, IServiceListener serviceListener, IServiceTypeID serviceTypeID, String[] requiredProperties) {
-		this(discovery, serviceListener, new IServiceTypeID[] {serviceTypeID}, requiredProperties);
-	}
-
-	/**
-	 * 
-	 * @param discovery discovery adapter instance to set up.  Must not be <code>null</code>.
-	 * @param serviceListener service listener to receive notifications of service added/removed and resolved notifications.  Must not be <code>null</code>.
-	 * @param serviceTypeID service type IDs to setup service listeners for.  May be <code>null</code>.  If <code>null</code>, then
-	 * all service types will notify the given serviceListener.
-	 * @since 3.0
-	 */
-	public ServiceTypeListener(IDiscoveryLocator discovery, IServiceListener serviceListener, IServiceTypeID serviceTypeID) {
-		this(discovery, serviceListener, new IServiceTypeID[] {serviceTypeID}, null);
-	}
-
-	/**
-	 * @param discovery discovery adapter instance to set up.  Must not be <code>null</code>.
-	 * @param serviceListener service listener to receive notifications of service added/removed and resolved notifications.  Must not be <code>null</code>.
-	 * @since 3.0
-	 */
-	public ServiceTypeListener(IDiscoveryLocator discovery, IServiceListener serviceListener) {
-		this(discovery, serviceListener, (IServiceTypeID[]) null, null);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.discovery.IServiceTypeListener#serviceTypeAdded(org.eclipse.ecf.discovery.IServiceTypeEvent)
-	 */
-	public final void serviceTypeAdded(IServiceTypeEvent event) {
-		final IServiceTypeID remoteServiceTypeID = event.getServiceTypeID();
-		if (hasRequiredTypeID(remoteServiceTypeID)) {
-			this.discovery.addServiceListener(remoteServiceTypeID, serviceListener);
-		}
-	}
-
-	private boolean hasRequiredTypeID(IServiceTypeID remoteServiceTypeID) {
-		if (serviceTypeIDs == null)
-			return true;
-		for (int i = 0; i < serviceTypeIDs.length; i++)
-			if (remoteServiceTypeID.equals(serviceTypeIDs[i]))
-				return true;
-		return false;
-	}
-
-	boolean hasRequiredProperties(IServiceProperties serviceProperties) {
-		if (requiredProperties == null)
-			return true;
-		for (int i = 0; i < requiredProperties.length; i++)
-			if (serviceProperties.getProperty(requiredProperties[i]) == null)
-				return false;
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.discovery.IServiceTypeListener#serviceTypeDiscovered(org.eclipse.ecf.discovery.IServiceEvent)
-	 */
-	public void serviceTypeDiscovered(IServiceTypeEvent event) {
-		final IServiceTypeID remoteServiceTypeID = event.getServiceTypeID();
-		if (hasRequiredTypeID(remoteServiceTypeID)) {
-			this.discovery.addServiceListener(remoteServiceTypeID, serviceListener);
-		}
-	}
-}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java
index a639c48..cc4f658 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java
@@ -26,11 +26,10 @@
 import org.eclipse.ecf.internal.provider.remoteservice.Activator;
 import org.eclipse.ecf.internal.provider.remoteservice.IRemoteServiceProviderDebugOptions;
 import org.eclipse.ecf.remoteservice.*;
-import org.eclipse.ecf.remoteservice.Constants;
 import org.eclipse.ecf.remoteservice.events.*;
 import org.eclipse.equinox.concurrent.future.*;
 import org.eclipse.osgi.framework.eventmgr.*;
-import org.osgi.framework.*;
+import org.osgi.framework.InvalidSyntaxException;
 
 public class RegistrySharedObject extends BaseSharedObject implements IRemoteServiceContainerAdapter {
 
@@ -58,10 +57,6 @@
 	 */
 	protected final List serviceListeners = new ArrayList();
 	/**
-	 * Local remote service registrations.  key:  ID (identifier of remote container), value:  List (instances of RemoteServiceRegistrationImpl for remote container)
-	 */
-	protected final Map localServiceRegistrations = new HashMap();
-	/**
 	 * Map of add registration requests.  key:  Integer (unique Request id), value: AddRegistrationRequest
 	 */
 	protected Map addRegistrationRequests = new Hashtable();
@@ -125,6 +120,9 @@
 
 	private IExecutor requestExecutor;
 
+	private Object remoteServiceCallPolicyLock = new Object();
+	private IRemoteServiceCallPolicy remoteServiceCallPolicy;
+
 	public RegistrySharedObject() {
 		//
 	}
@@ -428,8 +426,6 @@
 	 * @see org.eclipse.ecf.core.sharedobject.BaseSharedObject#dispose(org.eclipse.ecf.core.identity.ID)
 	 */
 	public void dispose(ID containerID) {
-		unregisterAllServiceRegistrations();
-
 		synchronized (rsQueueLock) {
 			if (rsListenerDispatchEventManager != null) {
 				rsListenerDispatchEventManager.close();
@@ -439,7 +435,6 @@
 		}
 		synchronized (remoteRegistrys) {
 			remoteRegistrys.clear();
-			localServiceRegistrations.clear();
 		}
 		synchronized (serviceListeners) {
 			serviceListeners.clear();
@@ -655,7 +650,6 @@
 					if (regs != null) {
 						for (int j = 0; j < regs.length; j++) {
 							registry.unpublishService(regs[j]);
-							unregisterServiceRegistrationsForContainer(regs[j].getContainerID());
 							registrations.add(regs[j]);
 						}
 					}
@@ -677,7 +671,6 @@
 				if (registrations != null) {
 					for (int i = 0; i < registrations.length; i++) {
 						registry.unpublishService(registrations[i]);
-						unregisterServiceRegistrationsForContainer(registrations[i].getContainerID());
 					}
 				}
 			}
@@ -802,8 +795,7 @@
 
 	// generic
 	private Request createRequest(RemoteServiceRegistrationImpl remoteRegistration, IRemoteCall call, IRemoteCallListener listener) {
-		final RemoteServiceReferenceImpl refImpl = (RemoteServiceReferenceImpl) remoteRegistration.getReference();
-		return new Request(this.getLocalContainerID(), remoteRegistration.getServiceId(), RemoteCallImpl.createRemoteCall(refImpl.getRemoteClass(), call.getMethod(), call.getParameters(), call.getTimeout()), listener);
+		return new Request(this.getLocalContainerID(), remoteRegistration.getServiceId(), RemoteCallImpl.createRemoteCall(null, call.getMethod(), call.getParameters(), call.getTimeout()), listener);
 	}
 
 	void doFireRemoteServiceListeners(IRemoteServiceEvent event) {
@@ -1253,7 +1245,6 @@
 					if (!regList.contains(registrations[i])) {
 						addedRegistrations.add(registrations[i]);
 						registry.publishService(registrations[i]);
-						localRegisterService(registrations[i]);
 					}
 				}
 			}
@@ -1292,7 +1283,6 @@
 			if (!regList.contains(registration)) {
 				added = true;
 				registry.publishService(registration);
-				localRegisterService(registration);
 			}
 			notifyAddRegistrationResponse(remoteContainerID, requestId, null);
 		}
@@ -1322,50 +1312,6 @@
 		}
 	}
 
-	/**
-	 * @since 3.2
-	 */
-	protected void localRegisterService(RemoteServiceRegistrationImpl registration) {
-		final Object localServiceRegistrationValue = registration.getProperty(org.eclipse.ecf.remoteservice.Constants.AUTOREGISTER_REMOTE_PROXY);
-		if (localServiceRegistrationValue != null) {
-			final BundleContext context = Activator.getDefault().getContext();
-			if (context == null)
-				return;
-			final RemoteServiceImpl remoteServiceImpl = new RemoteServiceImpl(this, registration);
-			Object service;
-			try {
-				service = remoteServiceImpl.getProxy();
-			} catch (final ECFException e) {
-				e.printStackTrace();
-				log("localRegisterService", e); //$NON-NLS-1$
-				return;
-			}
-			final Hashtable properties = new Hashtable();
-			final String[] keys = registration.getPropertyKeys();
-			for (int i = 0; i < keys.length; i++) {
-				final Object value = registration.getProperty(keys[i]);
-				if (value != null) {
-					properties.put(keys[i], value);
-				}
-			}
-			final ID remoteContainerID = registration.getContainerID();
-			final ServiceRegistration serviceRegistration = context.registerService(registration.getClasses(), service, properties);
-			addLocalServiceRegistration(remoteContainerID, serviceRegistration);
-		}
-	}
-
-	/**
-	 * @since 3.2
-	 */
-	protected void addLocalServiceRegistration(ID remoteContainerID, ServiceRegistration registration) {
-		List containerRegistrations = (List) localServiceRegistrations.get(remoteContainerID);
-		if (containerRegistrations == null) {
-			containerRegistrations = new ArrayList();
-			localServiceRegistrations.put(remoteContainerID, containerRegistrations);
-		}
-		containerRegistrations.add(registration);
-	}
-
 	protected Request sendCallRequest(RemoteServiceRegistrationImpl remoteRegistration, final IRemoteCall call) throws IOException {
 		Trace.entering(Activator.PLUGIN_ID, IRemoteServiceProviderDebugOptions.METHODS_ENTERING, this.getClass(), "sendCallRequest", new Object[] {remoteRegistration, call}); //$NON-NLS-1$
 		final Request request = createRequest(remoteRegistration, call, null);
@@ -1420,6 +1366,12 @@
 				Response response = null;
 				Object result = null;
 				try {
+					// Get remote service call policy
+					IRemoteServiceCallPolicy callPolicy = getRemoteServiceCallPolicy();
+					// If it's set, then check remote call *before* actual invocation
+					if (callPolicy != null)
+						callPolicy.checkRemoteCall(responseTarget, localRegistration, call);
+
 					result = localRegistration.callService(call);
 					response = new Response(request.getRequestId(), result);
 					// Invocation target exception happens if the local method being invoked throws (cause)
@@ -1671,7 +1623,6 @@
 				registration = serviceRegistry.findRegistrationForServiceId(serviceId.longValue());
 				if (registration != null) {
 					serviceRegistry.unpublishService(registration);
-					unregisterServiceRegistrationsForContainer(registration.getContainerID());
 					// If there are no remaining registration for this remote service registry,
 					// then remove the registry from the remoteRegistrys
 					RemoteServiceRegistrationImpl[] registrations = serviceRegistry.getRegistrations();
@@ -1687,37 +1638,6 @@
 		Trace.exiting(Activator.PLUGIN_ID, IRemoteServiceProviderDebugOptions.METHODS_EXITING, this.getClass(), "handleUnregister"); //$NON-NLS-1$
 	}
 
-	/**
-	 * @since 3.2
-	 */
-	protected void unregisterServiceRegistrationsForContainer(ID containerID) {
-		if (containerID == null)
-			return;
-		final List containerRegistrations = (List) localServiceRegistrations.remove(containerID);
-		if (containerRegistrations != null) {
-			for (final Iterator i = containerRegistrations.iterator(); i.hasNext();) {
-				final ServiceRegistration serviceRegistration = (ServiceRegistration) i.next();
-				try {
-					serviceRegistration.unregister();
-				} catch (Exception e) {
-					// Simply log
-					log("unregister", e); //$NON-NLS-1$
-				}
-			}
-		}
-	}
-
-	/**
-	 * @since 3.2
-	 */
-	protected void unregisterAllServiceRegistrations() {
-		synchronized (remoteRegistrys) {
-			for (final Iterator i = localServiceRegistrations.keySet().iterator(); i.hasNext();) {
-				unregisterServiceRegistrationsForContainer((ID) i.next());
-			}
-		}
-	}
-
 	protected IRemoteServiceUnregisteredEvent createUnregisteredEvent(final RemoteServiceRegistrationImpl registration) {
 		return new IRemoteServiceUnregisteredEvent() {
 
@@ -1852,4 +1772,23 @@
 		return false;
 	}
 
+	/**
+	 * @since 4.0
+	 */
+	protected IRemoteServiceCallPolicy getRemoteServiceCallPolicy() {
+		synchronized (remoteServiceCallPolicyLock) {
+			return remoteServiceCallPolicy;
+		}
+	}
+
+	/**
+	 * @since 4.0
+	 */
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		synchronized (remoteServiceCallPolicyLock) {
+			this.remoteServiceCallPolicy = policy;
+			return true;
+		}
+	}
+
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteCallImpl.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteCallImpl.java
index 117cd19..8e8f830 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteCallImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteCallImpl.java
@@ -19,18 +19,13 @@
 
 	long timeout = IRemoteCall.DEFAULT_TIMEOUT;
 
+	/**
+	 * @since 4.0
+	 */
 	public static RemoteCallImpl createRemoteCall(String clazz, String method, Object[] parameters, long timeout) {
 		return new RemoteCallImpl(clazz, method, parameters, timeout);
 	}
 
-	public static RemoteCallImpl createRemoteCall(String clazz, String method, Object[] parameters) {
-		return RemoteCallImpl.createRemoteCall(clazz, method, parameters, IRemoteCall.DEFAULT_TIMEOUT);
-	}
-
-	public static RemoteCallImpl createRemoteCall(String clazz, String method) {
-		return RemoteCallImpl.createRemoteCall(clazz, method, null, IRemoteCall.DEFAULT_TIMEOUT);
-	}
-
 	protected RemoteCallImpl(String clazz, String method, Object[] parameters, long timeout) {
 		super(clazz, method, parameters);
 		this.timeout = timeout;
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceContainer.java
index e3e9662..2346da0 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceContainer.java
@@ -137,4 +137,11 @@
 	public IFuture asyncGetRemoteServiceReferences(ID target, ID[] idFilter, String clazz, String filter) {
 		return registry.asyncGetRemoteServiceReferences(target, idFilter, clazz, filter);
 	}
+
+	/**
+	 * @since 4.0
+	 */
+	public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
+		return registry.setRemoteServiceCallPolicy(policy);
+	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceReferenceImpl.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceReferenceImpl.java
index f9029c5..23d3150 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceReferenceImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceReferenceImpl.java
@@ -47,17 +47,8 @@
 		return registration;
 	}
 
-	protected void setRemoteClass(String clazz) {
-		this.clazz = clazz;
-	}
-
-	protected String getRemoteClass() {
-		return clazz;
-	}
-
 	public String toString() {
 		StringBuffer buf = new StringBuffer("RemoteServiceReferenceImpl["); //$NON-NLS-1$
-		buf.append("class=").append(getRemoteClass()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
 		buf.append("registration=").append(getRegistration()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
 		return buf.toString();
 	}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistrationImpl.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistrationImpl.java
index bad05f2..9456733 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistrationImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistrationImpl.java
@@ -10,8 +10,13 @@
 
 import java.io.Serializable;
 import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
 import java.util.*;
 import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.sharedobject.SharedObjectMsg;
+import org.eclipse.ecf.core.util.reflection.ClassUtil;
 import org.eclipse.ecf.remoteservice.*;
 
 /**
@@ -339,15 +344,22 @@
 	}
 
 	public Object callService(RemoteCallImpl call) throws Exception {
-		return call.invoke(service);
+		Object[] args = (call.getParameters() == null) ? SharedObjectMsg.nullArgs : call.getParameters();
+		final Method method = ClassUtil.getMethod(service.getClass(), call.getMethod(), SharedObjectMsg.getTypesForParameters(args));
+		AccessController.doPrivileged(new PrivilegedExceptionAction() {
+			public Object run() throws Exception {
+				if (!method.isAccessible())
+					method.setAccessible(true);
+				return null;
+			}
+		});
+		return method.invoke(service, args);
 	}
 
 	public String toString() {
 		StringBuffer buf = new StringBuffer("RemoteServiceRegistrationImpl["); //$NON-NLS-1$
 		buf.append("remoteServiceID=").append(getID()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
-		buf.append("containerID=").append(getContainerID()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
-		buf.append("serviceid=").append(getID().getContainerRelativeID()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
-		buf.append("serviceranking=").append(serviceranking).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
+		buf.append("rserviceranking=").append(serviceranking).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
 		buf.append("classes=").append(Arrays.asList(clazzes)).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
 		buf.append("state=").append(state).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
 		buf.append("properties=").append(properties).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistryImpl.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistryImpl.java
index d2ac1a5..c264127 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistryImpl.java
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RemoteServiceRegistryImpl.java
@@ -138,9 +138,6 @@
 
 			final IRemoteServiceReference reference = registration.getReference();
 			if ((filter == null) || filter.match(reference)) {
-				// Must be RemoteServiceReferenceImpl
-				final RemoteServiceReferenceImpl impl = (RemoteServiceReferenceImpl) reference;
-				impl.setRemoteClass(clazz);
 				references.add(reference);
 			}
 		}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/META-INF/MANIFEST.MF
index 69ef79c..50b908d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/META-INF/MANIFEST.MF
@@ -8,3 +8,4 @@
 Bundle-Vendor: %providerName
 Require-Bundle: org.eclipse.ecf.datashare;bundle-version="2.0.0",
  org.eclipse.ecf.provider.datashare;bundle-version="1.0.0"
+Bundle-Localization: plugin
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 bc3b65a..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,4 +1,7 @@
 bin.includes = META-INF/,\
                .,\
                fragment.xml,\
-               plugin.properties
+               plugin.properties,\
+               about.html
+src.includes = fragment.xml,\
+               about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties
index 3afc38f..bf1af2b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF XMPP Provider Datashare
+pluginName = ECF XMPP Datashare Support Fragment
 providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF
index a1c74f5..cab4313 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF
@@ -8,3 +8,4 @@
 Bundle-Vendor: %providerName
 Require-Bundle: org.eclipse.ecf.remoteservice;bundle-version="4.1.0",
  org.eclipse.ecf.provider.remoteservice
+Bundle-Localization: plugin
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 09f4abe..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,4 +3,7 @@
 bin.includes = META-INF/,\
                .,\
                plugin.properties,\
-               fragment.xml
+               fragment.xml,\
+               about.html
+src.includes = fragment.xml,\
+               about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties
index e02017b..e7023dc 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties
@@ -6,5 +6,5 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-pluginName = ECF XMPP Provider RemoteServices
+pluginName = ECF XMPP RemoteServices Support Fragment
 providerName = Eclipse.org - ECF
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/events/ChatMembershipEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/ChatMembershipEvent.java
index 76f4b2b..252ae08 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/ChatMembershipEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/ChatMembershipEvent.java
@@ -10,30 +10,27 @@
 
 import org.eclipse.ecf.core.util.Event;
 
-/**
- * @author slewis
- *
- */
 public class ChatMembershipEvent implements Event {
-    
-	private static final long serialVersionUID = 8293255412415864623L;
+
 	String id;
 	boolean add;
-	
-    public ChatMembershipEvent(String id, boolean add) {
-    	this.id = id;
-    	this.add = add;
-    }
-    
-    public String getFrom() {
-        return id;
-    }
-    public boolean isAdd() {
-    	return add;
-    }
-    public String toString() {
-        StringBuffer buf = new StringBuffer("ChatMembershipEvent[");
-        buf.append(id).append(";").append(add).append("]");
-        return buf.toString();
-    }
+
+	public ChatMembershipEvent(String id, boolean add) {
+		this.id = id;
+		this.add = add;
+	}
+
+	public String getFrom() {
+		return id;
+	}
+
+	public boolean isAdd() {
+		return add;
+	}
+
+	public String toString() {
+		StringBuffer buf = new StringBuffer("ChatMembershipEvent[");
+		buf.append(id).append(";").append(add).append("]");
+		return buf.toString();
+	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/IQEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/IQEvent.java
index a62e9c7..12aeebd 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/IQEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/IQEvent.java
@@ -11,24 +11,20 @@
 import org.eclipse.ecf.core.util.Event;
 import org.jivesoftware.smack.packet.IQ;
 
-/**
- * @author slewis
- *
- */
 public class IQEvent implements Event {
-    
-	private static final long serialVersionUID = 8136148813492923513L;
+
 	protected IQ iq = null;
-    
-    public IQEvent(IQ iq) {
-        this.iq = iq;
-    }
-    
-    public IQ getIQ() {
-        return iq;
-    }
-    public String toString() {
-        StringBuffer buf = new StringBuffer("IQEvent[]");
-        return buf.toString();
-    }
+
+	public IQEvent(IQ iq) {
+		this.iq = iq;
+	}
+
+	public IQ getIQ() {
+		return iq;
+	}
+
+	public String toString() {
+		StringBuffer buf = new StringBuffer("IQEvent[]");
+		return buf.toString();
+	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/InvitationReceivedEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/InvitationReceivedEvent.java
index 1d0407e..c7e5386 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/InvitationReceivedEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/InvitationReceivedEvent.java
@@ -15,16 +15,15 @@
 import org.jivesoftware.smack.packet.Message;
 
 public class InvitationReceivedEvent implements Event {
-	private static final long serialVersionUID = 916275866023754310L;
-
 	XMPPConnection connection;
 	String room;
 	String inviter;
 	String reason;
 	String password;
 	Message message;
-	
-	public InvitationReceivedEvent(XMPPConnection conn, String room, String inviter, String reason, String password, Message message) {
+
+	public InvitationReceivedEvent(XMPPConnection conn, String room,
+			String inviter, String reason, String password, Message message) {
 		super();
 		this.connection = conn;
 		this.room = room;
@@ -57,12 +56,13 @@
 	public String getRoom() {
 		return room;
 	}
-	
+
 	public String toString() {
 		StringBuffer buf = new StringBuffer("InvitationReceivedEvent[");
-		buf.append("conn="+getConnection()).append(";room="+getRoom());
-		buf.append(";inviter="+getInviter()).append(";reason="+reason);
-		buf.append(";pw="+password).append(";msg="+getMessage()).append("]");
+		buf.append("conn=" + getConnection()).append(";room=" + getRoom());
+		buf.append(";inviter=" + getInviter()).append(";reason=" + reason);
+		buf.append(";pw=" + password).append(";msg=" + getMessage())
+				.append("]");
 		return buf.toString();
 	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/MessageEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/MessageEvent.java
index 8e1182d..1a13b1b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/MessageEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/MessageEvent.java
@@ -9,37 +9,36 @@
 package org.eclipse.ecf.internal.provider.xmpp.events;
 
 import java.util.Iterator;
-
 import org.eclipse.ecf.core.util.Event;
 import org.jivesoftware.smack.packet.Message;
 
 public class MessageEvent implements Event {
-    
-	private static final long serialVersionUID = 6940577888021931351L;
+
 	protected Message message = null;
-    
+
 	protected Iterator xhtmlbodies = null;
-	
+
 	public MessageEvent(Message message) {
 		this(message, null);
 	}
-	
-    public MessageEvent(Message message, Iterator xhtmlbodies) {
-        this.message = message;
-        this.xhtmlbodies = xhtmlbodies;
-    }
-    
-    public Message getMessage() {
-        return message;
-    }
-    
-    public Iterator getXHTMLBodies() {
-    	return xhtmlbodies;
-    }
-    
-    public String toString() {
-        StringBuffer buf = new StringBuffer("MessageEvent[");
-        buf.append(message).append(";").append((message==null)?"":message.toXML()).append("]");
-        return buf.toString();
-    }
+
+	public MessageEvent(Message message, Iterator xhtmlbodies) {
+		this.message = message;
+		this.xhtmlbodies = xhtmlbodies;
+	}
+
+	public Message getMessage() {
+		return message;
+	}
+
+	public Iterator getXHTMLBodies() {
+		return xhtmlbodies;
+	}
+
+	public String toString() {
+		StringBuffer buf = new StringBuffer("MessageEvent[");
+		buf.append(message).append(";")
+				.append((message == null) ? "" : message.toXML()).append("]");
+		return buf.toString();
+	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/PresenceEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/PresenceEvent.java
index 67b214a..5fa5743 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/PresenceEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/events/PresenceEvent.java
@@ -15,21 +15,21 @@
  *
  */
 public class PresenceEvent implements Event {
-    
-	private static final long serialVersionUID = -8207158000504357229L;
+
 	protected Presence presence = null;
-    
-    public PresenceEvent(Presence presence) {
-        this.presence = presence;
-    }
-    
-    public Presence getPresence() {
-        return presence;
-    }
-    
-    public String toString() {
-        StringBuffer buf = new StringBuffer("PresenceEvent[");
-        buf.append(presence).append(";").append((presence==null)?"":presence.toXML()).append("]");
-        return buf.toString();
-    }
+
+	public PresenceEvent(Presence presence) {
+		this.presence = presence;
+	}
+
+	public Presence getPresence() {
+		return presence;
+	}
+
+	public String toString() {
+		StringBuffer buf = new StringBuffer("PresenceEvent[");
+		buf.append(presence).append(";")
+				.append((presence == null) ? "" : presence.toXML()).append("]");
+		return buf.toString();
+	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPFileTransferRequestListener.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPFileTransferRequestListener.java
index 8d17218..de90b63 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPFileTransferRequestListener.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPFileTransferRequestListener.java
@@ -18,7 +18,6 @@
 import java.io.OutputStream;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.eclipse.core.runtime.IAdapterManager;
 import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.identity.ID;
@@ -47,7 +46,8 @@
 
 	protected IContainer container = null;
 
-	public XMPPFileTransferRequestListener(IContainer container, IIncomingFileTransferRequestListener listener) {
+	public XMPPFileTransferRequestListener(IContainer container,
+			IIncomingFileTransferRequestListener listener) {
 		this.container = container;
 		this.requestListener = listener;
 	}
@@ -55,117 +55,141 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.jivesoftware.smackx.filetransfer.FileTransferListener#fileTransferRequest(org.jivesoftware.smackx.filetransfer.FileTransferRequest)
+	 * @see
+	 * org.jivesoftware.smackx.filetransfer.FileTransferListener#fileTransferRequest
+	 * (org.jivesoftware.smackx.filetransfer.FileTransferRequest)
 	 */
 	public void fileTransferRequest(final FileTransferRequest request) {
-		requestListener.handleFileTransferRequest(new IFileTransferRequestEvent() {
+		requestListener
+				.handleFileTransferRequest(new IFileTransferRequestEvent() {
 
-			private static final long serialVersionUID = -6173401619917403353L;
+					boolean requestAccepted = false;
 
-			boolean requestAccepted = false;
+					IFileTransferInfo fileTransferInfo = new IFileTransferInfo() {
 
-			IFileTransferInfo fileTransferInfo = new IFileTransferInfo() {
+						Map props = new HashMap();
 
-				Map props = new HashMap();
+						File f = new File(request.getFileName());
 
-				File f = new File(request.getFileName());
-
-				public String getDescription() {
-					return request.getDescription();
-				}
-
-				public File getFile() {
-					return f;
-				}
-
-				public Map getProperties() {
-					return props;
-				}
-
-				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 long getFileSize() {
-					return request.getFileSize();
-				}
-
-				public String getMimeType() {
-					return request.getMimeType();
-				}
-
-				public String toString() {
-					final StringBuffer buf = new StringBuffer("FileTransferInfo[");
-					buf.append("file=").append(f);
-					buf.append(";size=").append(getFileSize());
-					buf.append(";description=" + getDescription());
-					buf.append(";mimeType=").append(getMimeType()).append("]");
-					return buf.toString();
-				}
-
-			};
-
-			public IIncomingFileTransfer accept(File localFileToSave) throws IncomingFileTransferException {
-
-				try {
-					final OutputStream outs = new FileOutputStream(localFileToSave);
-					return accept(outs, new IFileTransferListener() {
-						public void handleTransferEvent(IFileTransferEvent event) {
-							if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
-								try {
-									outs.close();
-								} catch (final IOException e) {
-								}
-							}
+						public String getDescription() {
+							return request.getDescription();
 						}
-					});
-				} catch (final FileNotFoundException e) {
-					throw new IncomingFileTransferException("Exception opening file for writing", e);
-				}
-			}
 
-			public IFileTransferInfo getFileTransferInfo() {
-				return fileTransferInfo;
-			}
+						public File getFile() {
+							return f;
+						}
 
-			public ID getRequesterID() {
-				return createIDFromName(request.getRequestor());
-			}
+						public Map getProperties() {
+							return props;
+						}
 
-			public void reject() {
-				request.reject();
-			}
+						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 boolean requestAccepted() {
-				return requestAccepted;
-			}
+						public long getFileSize() {
+							return request.getFileSize();
+						}
 
-			public String toString() {
-				final StringBuffer buf = new StringBuffer("FileTransferRequestEvent[");
-				buf.append("requester=").append(getRequesterID());
-				buf.append(";requestAccepted=").append(requestAccepted());
-				buf.append(";transferInfo=").append(getFileTransferInfo()).append("]");
-				return buf.toString();
-			}
+						public String getMimeType() {
+							return request.getMimeType();
+						}
 
-			public IIncomingFileTransfer accept(OutputStream outputStream, IFileTransferListener listener) throws IncomingFileTransferException {
-				if (requestAccepted)
-					throw new IncomingFileTransferException("Incoming request previously accepted");
-				if (outputStream == null)
-					throw new IncomingFileTransferException("outputStream cannot be null");
-				incoming = request.accept();
-				try {
-					return new XMPPIncomingFileTransfer(IDFactory.getDefault().createStringID(request.getStreamID()), request.getFileName(), incoming.recieveFile(), outputStream, request.getFileSize(), listener);
-				} catch (final Exception e) {
-					throw new IncomingFileTransferException("Exception receiving file", e);
-				}
-			}
-		});
+						public String toString() {
+							final StringBuffer buf = new StringBuffer(
+									"FileTransferInfo[");
+							buf.append("file=").append(f);
+							buf.append(";size=").append(getFileSize());
+							buf.append(";description=" + getDescription());
+							buf.append(";mimeType=").append(getMimeType())
+									.append("]");
+							return buf.toString();
+						}
+
+					};
+
+					public IIncomingFileTransfer accept(File localFileToSave)
+							throws IncomingFileTransferException {
+
+						try {
+							final OutputStream outs = new FileOutputStream(
+									localFileToSave);
+							return accept(outs, new IFileTransferListener() {
+								public void handleTransferEvent(
+										IFileTransferEvent event) {
+									if (event instanceof IIncomingFileTransferReceiveDoneEvent) {
+										try {
+											outs.close();
+										} catch (final IOException e) {
+										}
+									}
+								}
+							});
+						} catch (final FileNotFoundException e) {
+							throw new IncomingFileTransferException(
+									"Exception opening file for writing", e);
+						}
+					}
+
+					public IFileTransferInfo getFileTransferInfo() {
+						return fileTransferInfo;
+					}
+
+					public ID getRequesterID() {
+						return createIDFromName(request.getRequestor());
+					}
+
+					public void reject() {
+						request.reject();
+					}
+
+					public boolean requestAccepted() {
+						return requestAccepted;
+					}
+
+					public String toString() {
+						final StringBuffer buf = new StringBuffer(
+								"FileTransferRequestEvent[");
+						buf.append("requester=").append(getRequesterID());
+						buf.append(";requestAccepted=").append(
+								requestAccepted());
+						buf.append(";transferInfo=")
+								.append(getFileTransferInfo()).append("]");
+						return buf.toString();
+					}
+
+					public IIncomingFileTransfer accept(
+							OutputStream outputStream,
+							IFileTransferListener listener)
+							throws IncomingFileTransferException {
+						if (requestAccepted)
+							throw new IncomingFileTransferException(
+									"Incoming request previously accepted");
+						if (outputStream == null)
+							throw new IncomingFileTransferException(
+									"outputStream cannot be null");
+						incoming = request.accept();
+						try {
+							return new XMPPIncomingFileTransfer(IDFactory
+									.getDefault().createStringID(
+											request.getStreamID()), request
+									.getFileName(), incoming.recieveFile(),
+									outputStream, request.getFileSize(),
+									listener);
+						} catch (final Exception e) {
+							throw new IncomingFileTransferException(
+									"Exception receiving file", e);
+						}
+					}
+				});
 	}
 
 	private XMPPID createIDFromName(String uname) {
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPIncomingFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPIncomingFileTransfer.java
index 13a635a..2286ff5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPIncomingFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPIncomingFileTransfer.java
@@ -116,51 +116,45 @@
 
 	protected void fireTransferReceiveDoneEvent() {
 		if (listener != null)
-			listener
-					.handleTransferEvent(new IIncomingFileTransferReceiveDoneEvent() {
+			listener.handleTransferEvent(new IIncomingFileTransferReceiveDoneEvent() {
 
-						private static final long serialVersionUID = 6925524078226825710L;
+				public IIncomingFileTransfer getSource() {
+					return XMPPIncomingFileTransfer.this;
+				}
 
-						public IIncomingFileTransfer getSource() {
-							return XMPPIncomingFileTransfer.this;
-						}
+				public Exception getException() {
+					return XMPPIncomingFileTransfer.this.getException();
+				}
 
-						public Exception getException() {
-							return XMPPIncomingFileTransfer.this.getException();
-						}
-
-						public String toString() {
-							final StringBuffer sb = new StringBuffer(
-									"IIncomingFileTransferReceiveDoneEvent["); //$NON-NLS-1$
-							sb.append("isDone=").append(done).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
-							sb.append("bytesReceived=").append(bytesReceived) //$NON-NLS-1$
-									.append("]"); //$NON-NLS-1$
-							return sb.toString();
-						}
-					});
+				public String toString() {
+					final StringBuffer sb = new StringBuffer(
+							"IIncomingFileTransferReceiveDoneEvent["); //$NON-NLS-1$
+					sb.append("isDone=").append(done).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
+					sb.append("bytesReceived=").append(bytesReceived) //$NON-NLS-1$
+							.append("]"); //$NON-NLS-1$
+					return sb.toString();
+				}
+			});
 	}
 
 	protected void fireTransferReceiveDataEvent() {
 		if (listener != null)
-			listener
-					.handleTransferEvent(new IIncomingFileTransferReceiveDataEvent() {
-						private static final long serialVersionUID = -5656328374614130161L;
+			listener.handleTransferEvent(new IIncomingFileTransferReceiveDataEvent() {
+				public IIncomingFileTransfer getSource() {
+					return XMPPIncomingFileTransfer.this;
+				}
 
-						public IIncomingFileTransfer getSource() {
-							return XMPPIncomingFileTransfer.this;
-						}
-
-						public String toString() {
-							final StringBuffer sb = new StringBuffer(
-									"IIncomingFileTransferReceiveDataEvent["); //$NON-NLS-1$
-							sb.append("isDone=").append(done).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
-							sb.append("bytesReceived=").append(bytesReceived) //$NON-NLS-1$
-									.append(";"); //$NON-NLS-1$
-							sb.append("percentComplete=").append( //$NON-NLS-1$
-									getPercentComplete() * 100).append("]"); //$NON-NLS-1$
-							return sb.toString();
-						}
-					});
+				public String toString() {
+					final StringBuffer sb = new StringBuffer(
+							"IIncomingFileTransferReceiveDataEvent["); //$NON-NLS-1$
+					sb.append("isDone=").append(done).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
+					sb.append("bytesReceived=").append(bytesReceived) //$NON-NLS-1$
+							.append(";"); //$NON-NLS-1$
+					sb.append("percentComplete=").append( //$NON-NLS-1$
+							getPercentComplete() * 100).append("]"); //$NON-NLS-1$
+					return sb.toString();
+				}
+			});
 	}
 
 	/**
@@ -187,7 +181,8 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getBytesReceived()
+	 * @see
+	 * org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getBytesReceived()
 	 */
 	public long getBytesReceived() {
 		return bytesReceived;
@@ -264,8 +259,12 @@
 		return threadID;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getFileRangeSpecification()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getFileRangeSpecification
+	 * ()
 	 */
 	public IFileRangeSpecification getFileRangeSpecification() {
 		return null;
@@ -275,15 +274,22 @@
 		return fileLength;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getRemoteFileName()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getRemoteFileName()
 	 */
 	public String getRemoteFileName() {
 		return fileName;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getRemoteLastModified()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ecf.filetransfer.IIncomingFileTransfer#getRemoteLastModified
+	 * ()
 	 */
 	public Date getRemoteLastModified() {
 		// Not supported
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransfer.java
index a310023..86284cc 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/filetransfer/XMPPOutgoingFileTransfer.java
@@ -29,9 +29,9 @@
 import org.eclipse.osgi.util.NLS;
 import org.jivesoftware.smack.XMPPException;
 import org.jivesoftware.smackx.filetransfer.FileTransfer;
+import org.jivesoftware.smackx.filetransfer.FileTransfer.Status;
 import org.jivesoftware.smackx.filetransfer.FileTransferManager;
 import org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer;
-import org.jivesoftware.smackx.filetransfer.FileTransfer.Status;
 
 public class XMPPOutgoingFileTransfer implements IOutgoingFileTransfer {
 
@@ -139,8 +139,6 @@
 								|| s.equals(Status.error)
 								|| s.equals(Status.refused)) {
 							fireTransferListenerEvent(new IOutgoingFileTransferResponseEvent() {
-								private static final long serialVersionUID = -5940612388464073240L;
-
 								public boolean requestAccepted() {
 									return negotiated;
 								}
@@ -152,8 +150,7 @@
 								public String toString() {
 									final StringBuffer buf = new StringBuffer(
 											"OutgoingFileTransferResponseEvent["); //$NON-NLS-1$
-									buf
-											.append("requestAccepted=").append(requestAccepted()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
+									buf.append("requestAccepted=").append(requestAccepted()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
 									return buf.toString();
 								}
 
@@ -189,8 +186,6 @@
 					}
 					// Then notify that the sending is done
 					fireTransferListenerEvent(new IOutgoingFileTransferSendDoneEvent() {
-						private static final long serialVersionUID = -6315336868737148845L;
-
 						public IOutgoingFileTransfer getSource() {
 							return XMPPOutgoingFileTransfer.this;
 						}
@@ -199,10 +194,8 @@
 							final StringBuffer buf = new StringBuffer(
 									"IOutgoingFileTransferSendDoneEvent["); //$NON-NLS-1$
 							buf.append("isDone=" + getSource().isDone()); //$NON-NLS-1$
-							buf
-									.append(";bytesSent=").append(getSource().getBytesSent()); //$NON-NLS-1$
-							buf
-									.append(";exception=").append(getException()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
+							buf.append(";bytesSent=").append(getSource().getBytesSent()); //$NON-NLS-1$
+							buf.append(";exception=").append(getException()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
 							return buf.toString();
 						}
 					});
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/internal/provider/xmpp/smack/ECFConnectionObjectPacketEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionObjectPacketEvent.java
index 589d67f..f72f9f7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionObjectPacketEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionObjectPacketEvent.java
@@ -14,21 +14,23 @@
 
 public class ECFConnectionObjectPacketEvent extends AsynchEvent {
 
-	private static final long serialVersionUID = -1618091206033717358L;
 	Object value;
-	public ECFConnectionObjectPacketEvent(IAsynchConnection source, Packet p, Object obj) {
-		super(source,p);
+
+	public ECFConnectionObjectPacketEvent(IAsynchConnection source, Packet p,
+			Object obj) {
+		super(source, p);
 		this.value = obj;
 	}
-	
+
 	public Object getObjectValue() {
-	    return value;
+		return value;
 	}
+
 	public String toString() {
-	    StringBuffer sb = new StringBuffer("ECFConnectionPacketEvent[");
-	    sb.append(getData()).append(";");
-	    sb.append(getConnection()).append(";");
-	    sb.append(getObjectValue()).append("]");
-	    return sb.toString();
+		StringBuffer sb = new StringBuffer("ECFConnectionPacketEvent[");
+		sb.append(getData()).append(";");
+		sb.append(getConnection()).append(";");
+		sb.append(getObjectValue()).append("]");
+		return sb.toString();
 	}
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionPacketEvent.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionPacketEvent.java
index d16192f..12a8055 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionPacketEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/smack/ECFConnectionPacketEvent.java
@@ -14,16 +14,14 @@
 
 public class ECFConnectionPacketEvent extends AsynchEvent {
 
-	private static final long serialVersionUID = 7000820721266245824L;
-
 	public ECFConnectionPacketEvent(IAsynchConnection source, Packet p) {
-		super(source,p);
+		super(source, p);
 	}
-	
+
 	public String toString() {
-	    StringBuffer sb = new StringBuffer("ECFConnectionPacketEvent[");
-	    sb.append(getData()).append(";");
-	    sb.append(getConnection()).append("]");
-	    return sb.toString();
+		StringBuffer sb = new StringBuffer("ECFConnectionPacketEvent[");
+		sb.append(getData()).append(";");
+		sb.append(getConnection()).append("]");
+		return sb.toString();
 	}
 }
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/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF
index 4ffb2bb..4f71271 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF
@@ -15,12 +15,14 @@
  org.eclipse.ecf.core.identity;version="3.0.0",
  org.eclipse.ecf.core.provider,
  org.eclipse.ecf.core.security,
+ org.eclipse.ecf.core.util,
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.5.0",
  org.osgi.service.log;version="1.3.0",
  org.osgi.util.tracker;version="1.4.2"
 Require-Bundle: org.eclipse.equinox.common;bundle-version="3.5.0",
- org.eclipse.ecf.discovery;bundle-version="3.0.0"
+ org.eclipse.ecf.discovery;bundle-version="3.0.0",
+ org.apache.hadoop.zookeeper;bundle-version="[3.3.3,3.4.0)"
 Export-Package: org.eclipse.ecf.provider.zookeeper,
  org.eclipse.ecf.provider.zookeeper.core,
  org.eclipse.ecf.provider.zookeeper.core.internal;x-internal:=true,
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/buckminster.cspex b/providers/bundles/org.eclipse.ecf.provider.zookeeper/buckminster.cspex
new file mode 100644
index 0000000..d037070
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/buckminster.cspex
@@ -0,0 +1,34 @@
+<?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.apache.log4j" componentType="osgi.bundle"/>
+		<dependency name="org.apache.hadoop.zookeeper" 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/providers/bundles/org.eclipse.ecf.provider.zookeeper/bundle.properties b/providers/bundles/org.eclipse.ecf.provider.zookeeper/bundle.properties
index 2a7b380..ce92e35 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/bundle.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/bundle.properties
@@ -5,7 +5,5 @@
 #  which accompanies this distribution, and is available at
 #  http://www.eclipse.org/legal/epl-v10.html
 ############################################################################
-
-
-bundle.name=ECF ZooKeeper-Based Discovery Provider
+bundle.name=ECF Discovery ZooKeeper Provider
 bundle.provider=Eclipse.org - ECF
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/AdvertisedService.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/AdvertisedService.java
index a265cdd..ea00156 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/AdvertisedService.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/AdvertisedService.java
@@ -11,12 +11,13 @@
  *******************************************************************************/
 package org.eclipse.ecf.provider.zookeeper.core;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
 import java.net.URI;
 import java.util.Collections;
-import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Properties;
 import java.util.UUID;
 
 import org.eclipse.core.runtime.Assert;
@@ -30,8 +31,10 @@
 import org.eclipse.ecf.provider.zookeeper.core.internal.IService;
 import org.eclipse.ecf.provider.zookeeper.node.internal.INode;
 import org.eclipse.ecf.provider.zookeeper.util.Geo;
+import org.eclipse.ecf.provider.zookeeper.util.Logger;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
+import org.osgi.service.log.LogService;
 
 /**
  * Encapsulate a service to be advertised and made visible for discovery. An
@@ -44,7 +47,7 @@
 
 	private static final long serialVersionUID = 1001026250299416572L;
 	private String uuid;
-	private Properties internalProperties = new Properties();
+	private Map<String, Object> nodeProperties = new HashMap<String, Object>();
 	private static Map<String, IServiceInfo> publishedServices = new HashMap<String, IServiceInfo>();
 	private ServiceReference serviceReference;
 
@@ -52,19 +55,12 @@
 		Assert.isNotNull(ref);
 		this.serviceReference = ref;
 		this.uuid = UUID.randomUUID().toString();
+		super.properties = new ServiceProperties();
 		String services[] = (String[]) this.serviceReference
 				.getProperty(Constants.OBJECTCLASS);
-		for (String k : this.serviceReference.getPropertyKeys()) {
-			Object value = this.serviceReference.getProperty(k);
-			if (value instanceof String
-					&& ((String) value).contains("localhost")) {//$NON-NLS-1$
-				this.internalProperties.put(k, ((String) value).replace(
-						"localhost",//$NON-NLS-1$
-						Geo.getHost()));
-				continue;
-			}
-			this.internalProperties
-					.put(k, this.serviceReference.getProperty(k));
+		for (String propertyKey : this.serviceReference.getPropertyKeys()) {
+			super.properties.setProperty(propertyKey,
+					this.serviceReference.getProperty(propertyKey));
 		}
 		IServiceTypeID serviceTypeID = ServiceIDFactory.getDefault()
 				.createServiceTypeID(
@@ -77,23 +73,9 @@
 				this.serviceReference.getProperty(Constants.SERVICE_ID)
 						.toString());
 		serviceID = new ZooDiscoveryServiceID(ZooDiscoveryContainer
-				.getSingleton().getConnectNamespace(), serviceTypeID, Geo
-				.getLocation());
-
-		super.properties = new ServiceProperties(this.internalProperties);
-		// internal properties
-		this.internalProperties.put(Constants.OBJECTCLASS,
-				arrayToString(services));
-		this.internalProperties.put(LOCATION, Geo.getLocation());
-		this.internalProperties.put(WEIGHT, getWeight());
-		this.internalProperties.put(PRIORITY, getPriority());
-		this.internalProperties.put(NODE_PROPERTY_NAME_PROTOCOLS,
-				arrayToString(IServiceTypeID.DEFAULT_PROTO));
-		this.internalProperties.put(NODE_PROPERTY_NAME_SCOPE,
-				arrayToString(IServiceTypeID.DEFAULT_SCOPE));
-		this.internalProperties.put(NODE_PROPERTY_NAME_NA,
-				IServiceTypeID.DEFAULT_NA);
-		publishedServices.put(serviceTypeID.getInternal(), this);
+				.getSingleton().getConnectNamespace(), serviceTypeID,
+				Geo.getLocation());
+		setNodeProperties();
 	}
 
 	public AdvertisedService(IServiceInfo serviceInfo) {
@@ -102,44 +84,25 @@
 						.getPriority(), serviceInfo.getWeight(), serviceInfo
 						.getServiceProperties());
 		this.uuid = UUID.randomUUID().toString();
-		// internal properties
+		setNodeProperties();
+	}
 
-		Enumeration enumm = serviceInfo.getServiceProperties()
-				.getPropertyNames();
-		while (enumm.hasMoreElements()) {
-			String k = (String) enumm.nextElement();
-			Object value = serviceInfo.getServiceProperties().getProperty(k);
-			byte[] bytes = serviceInfo.getServiceProperties().getPropertyBytes(
-					k);
-			if (value instanceof String
-					&& ((String) value).contains("localhost")) {//$NON-NLS-1$
-				this.internalProperties.put(k, ((String) value).replace(
-						"localhost",//$NON-NLS-1$
-						Geo.getHost()));
-				continue;
-			}
-			if (bytes != null) {
-				this.internalProperties.put(INode._BYTES_ + k, new String(bytes));
-			} else {
-				this.internalProperties.put(k, value);
-			}
-
-		}
-
-		this.internalProperties
-				.put(NODE_PROPERTY_NAME_PROTOCOLS, arrayToString(getServiceID()
-						.getServiceTypeID().getProtocols()));
-		this.internalProperties.put(NODE_PROPERTY_NAME_SCOPE,
-				arrayToString(getServiceID().getServiceTypeID().getScopes()));
-		this.internalProperties.put(NODE_PROPERTY_SERVICES,
-				arrayToString(getServiceID().getServiceTypeID().getServices()));
-		this.internalProperties.put(NODE_PROPERTY_NAME_NA, getServiceID()
+	private void setNodeProperties() {
+		this.nodeProperties.put(NODE_PROPERTY_SERVICE_NAME, getServiceName());
+		this.nodeProperties.put(NODE_SERVICE_PROPERTIES, super.properties);
+		this.nodeProperties.put(NODE_PROPERTY_NAME_PROTOCOLS, getServiceID()
+				.getServiceTypeID().getProtocols());
+		this.nodeProperties.put(NODE_PROPERTY_NAME_SCOPE, getServiceID()
+				.getServiceTypeID().getScopes());
+		this.nodeProperties.put(NODE_PROPERTY_SERVICES, getServiceID()
+				.getServiceTypeID().getServices());
+		this.nodeProperties.put(NODE_PROPERTY_NAME_NA, getServiceID()
 				.getServiceTypeID().getNamingAuthority());
-		this.internalProperties.put(LOCATION, serviceInfo.getLocation());
-		this.internalProperties.put(WEIGHT, getWeight());
-		this.internalProperties.put(PRIORITY, getPriority());
-		publishedServices.put(serviceInfo.getServiceID().getServiceTypeID()
-				.getInternal(), this);
+		this.nodeProperties.put(LOCATION, getLocation());
+		this.nodeProperties.put(WEIGHT, getWeight());
+		this.nodeProperties.put(PRIORITY, getPriority());
+		publishedServices.put(getServiceID().getServiceTypeID().getInternal(),
+				this);
 	}
 
 	public static Map<String, IServiceInfo> getPublishedServices() {
@@ -150,10 +113,6 @@
 		return publishedServices.remove(id);
 	}
 
-	public Properties getProperties() {
-		return this.internalProperties;
-	}
-
 	public String getNodeId() {
 		return this.uuid;
 	}
@@ -173,8 +132,8 @@
 	public int compareTo(Object o) {
 		Assert.isTrue(o != null && o instanceof IServiceInfo,
 				"incompatible types for compare"); //$NON-NLS-1$
-		return this.getServiceID().getName().compareTo(
-				((IServiceInfo) o).getServiceID().getName());
+		return this.getServiceID().getName()
+				.compareTo(((IServiceInfo) o).getServiceID().getName());
 	}
 
 	/**
@@ -188,15 +147,34 @@
 	}
 
 	public byte[] getPropertiesAsBytes() {
-		return getPropertiesAsString().getBytes();
-	}
-
-	public String getPropertiesAsString() {
-		String props = "";
-		for (Object k : this.getProperties().keySet()) {
-			props += k + "=" + this.getProperties().get(k) + "\n";//$NON-NLS-1$//$NON-NLS-2$
+		ByteArrayOutputStream baout = new ByteArrayOutputStream();
+		ObjectOutputStream oout = null;
+		byte[] bytes = null;
+		try {
+			oout = new ObjectOutputStream(baout);
+			oout.writeObject(nodeProperties);
+			oout.flush();
+			bytes = baout.toByteArray();
+		} catch (IOException e) {
+			Logger.log(LogService.LOG_ERROR,
+					"Error while serializing node data ", e);//$NON-NLS-1$
+		} finally {
+			if (oout != null) {
+				try {
+					oout.close();
+				} catch (IOException e) {
+					// ignore
+				}
+			}
+			if (baout != null) {
+				try {
+					baout.close();
+				} catch (IOException e) {
+					// ignore
+				}
+			}
 		}
-		return props;
+		return bytes;
 	}
 
 	public String getPath() {
@@ -216,13 +194,4 @@
 	public IService getWrappedService() {
 		return this;
 	}
-
-	private String arrayToString(String[] arr) {
-		String s = "";//$NON-NLS-1$
-		for (String c : arr) {
-			s += c + " ";//$NON-NLS-1$
-		}
-		return s;
-	}
-
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/DiscoverdService.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/DiscoverdService.java
index 8e33526..77a45ce 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/DiscoverdService.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/DiscoverdService.java
@@ -12,13 +12,13 @@
 package org.eclipse.ecf.provider.zookeeper.core;
 
 import java.net.URI;
-import java.util.Properties;
+import java.util.Map;
 import java.util.UUID;
 
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.discovery.IServiceProperties;
 import org.eclipse.ecf.discovery.ServiceInfo;
-import org.eclipse.ecf.discovery.ServiceProperties;
 import org.eclipse.ecf.discovery.identity.IServiceTypeID;
 import org.eclipse.ecf.discovery.identity.ServiceIDFactory;
 import org.eclipse.ecf.provider.zookeeper.core.internal.IService;
@@ -27,7 +27,6 @@
 import org.eclipse.ecf.provider.zookeeper.node.internal.INode;
 import org.eclipse.ecf.provider.zookeeper.util.Geo;
 import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
-import org.osgi.framework.Constants;
 
 public class DiscoverdService extends ServiceInfo implements IService, INode {
 
@@ -35,52 +34,29 @@
 	private String uuid;
 	private URI location;
 	private IServiceTypeID serviceTypeID;
-	private Properties props;
 
-	public DiscoverdService(String path, Properties propMap) {
-		Assert.isNotNull(propMap);
+	public DiscoverdService(String path, Map<String, Object> serviceData) {
+		Assert.isNotNull(serviceData);
 		this.uuid = path.split(INode._URI_)[0];
-		this.location = URI.create((String) propMap.remove(IService.LOCATION));
-		super.priority = Integer.parseInt((String) propMap
-				.remove(IService.PRIORITY));
-		super.weight = Integer.parseInt((String) propMap
-				.remove(IService.WEIGHT));
-		String[] services = (String[]) propMap.remove(Constants.OBJECTCLASS);
-		if (services == null) {
-			services = (String[]) propMap.remove(INode.NODE_PROPERTY_SERVICES);
-		}
-		String na = (String) propMap.remove(INode.NODE_PROPERTY_NAME_NA);
-		String[] protocols = (String[]) propMap
+		this.location = (URI) serviceData.remove(IService.LOCATION);
+		super.priority = (Integer) serviceData.remove(IService.PRIORITY);
+		super.weight = (Integer) serviceData.remove(IService.WEIGHT);
+		super.serviceName = (String) serviceData.get(IService.SERVICE_NAME);
+		super.properties = (IServiceProperties) serviceData
+				.remove(INode.NODE_SERVICE_PROPERTIES);
+		String[] services = (String[]) serviceData
+				.remove(INode.NODE_PROPERTY_SERVICES);
+		String na = (String) serviceData.remove(INode.NODE_PROPERTY_NAME_NA);
+		String[] protocols = (String[]) serviceData
 				.remove(INode.NODE_PROPERTY_NAME_PROTOCOLS);
-		String[] scopes = (String[]) propMap
+		String[] scopes = (String[]) serviceData
 				.remove(INode.NODE_PROPERTY_NAME_SCOPE);
-		super.properties = createServiceProperties(propMap);
 		this.serviceTypeID = ServiceIDFactory.getDefault().createServiceTypeID(
 				ZooDiscoveryContainer.getSingleton().getConnectNamespace(),
 				services, scopes, protocols, na);
 		super.serviceID = new ZooDiscoveryServiceID(ZooDiscoveryContainer
 				.getSingleton().getConnectNamespace(), this, serviceTypeID,
 				this.location);
-		super.serviceName = propMap.getProperty("component.name", location.toASCIIString());
-	}
-
-	private ServiceProperties createServiceProperties(Properties props) {
-		ServiceProperties result = new ServiceProperties();
-		for (Object k : props.keySet()) {
-			Object value = (String) props.get(k);
-			if (((String) k).startsWith(INode._BYTES_)) {
-				result.setPropertyBytes(((String) k).split(INode._BYTES_)[1],
-						(value + "").getBytes());
-				continue;
-			}
-			result.setProperty((String) k, value);
-		}
-		this.props = result.asProperties();
-		return result;
-	}
-
-	public Properties getProperties() {
-		return this.props;
 	}
 
 	public void dispose() {
@@ -112,20 +88,12 @@
 	public int compareTo(Object o) {
 		Assert.isTrue(o != null && o instanceof DiscoverdService,
 				"incompatible types for compare"); //$NON-NLS-1$
-		return this.getServiceID().getName().compareTo(
-				((DiscoverdService) o).getServiceID().getName());
+		return this.getServiceID().getName()
+				.compareTo(((DiscoverdService) o).getServiceID().getName());
 	}
 
 	public byte[] getPropertiesAsBytes() {
-		return getPropertiesAsString().getBytes();
-	}
-
-	public String getPropertiesAsString() {
-		String props = "";
-		for (Object k : this.getProperties().keySet()) {
-			props += k + "=" + this.getProperties().get(k) + "\n";//$NON-NLS-1$//$NON-NLS-2$
-		}
-		return props;
+		throw new UnsupportedOperationException();
 	}
 
 	public String getPath() {
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryContainer.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryContainer.java
index 7c07073..b65c3cf 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryContainer.java
@@ -195,7 +195,6 @@
 					.setTxnLogFactory(fileTxnSnapLog);
 			ZooDiscoveryContainer.this.zooKeeperServer.setTickTime(conf
 					.getTickTime());
-
 			Factory cnxnFactory = new NIOServerCnxn.Factory(
 					new InetSocketAddress(conf.getClientPort()));
 			cnxnFactory.startup(ZooDiscoveryContainer.this.zooKeeperServer);
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..d305c3b 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]);
 		}
 	}
 
@@ -171,7 +172,8 @@
 	}
 
 	public int getElectionPort() {
-		return ((Integer) getConfigProperties().get(ZOOKEEPER_ELECTION_PORT));
+		return Integer.parseInt((String) getConfigProperties().get(
+				ZOOKEEPER_ELECTION_PORT));
 	}
 
 	public String getConfFile() {
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 4ba7740..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
@@ -11,25 +11,46 @@
  *******************************************************************************/
 package org.eclipse.ecf.provider.zookeeper.core.internal;
 
-import java.util.Properties;
-
 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$
-
-	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/INode.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/INode.java
index 8bdc6c4..b9d54a8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/INode.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/INode.java
@@ -26,6 +26,8 @@
 	String NODE_PROPERTY_NAME_SCOPE = "node.property.name.scope";//$NON-NLS-1$
 	String NODE_PROPERTY_NAME_NA = "node.property.name.na";//$NON-NLS-1$
 	String NODE_PROPERTY_SERVICES = "node.property.name.services";//$NON-NLS-1$
+	String NODE_SERVICE_PROPERTIES = "node.property.service.properties";//$NON-NLS-1$;
+	String NODE_PROPERTY_SERVICE_NAME = "node.property.service.name";//$NON-NLS-1$;
 	String STRING_DELIM = " ";//$NON-NLS-1$
 	// the id of this running ZooDiscovery
 	String _ZOODISCOVERYID_ = "_zdid_";//$NON-NLS-1$
@@ -41,5 +43,4 @@
 	IServiceInfo getWrappedService();
 
 	void regenerateNodeId();
-
 }
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeReader.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeReader.java
index 10d94dd..33dc970 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeReader.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeReader.java
@@ -13,13 +13,14 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.util.Properties;
+import java.io.ObjectInputStream;
+import java.util.Map;
 
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.Watcher.Event.EventType;
 import org.apache.zookeeper.Watcher.Event.KeeperState;
+import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.data.Stat;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.ecf.provider.zookeeper.core.DiscoverdService;
@@ -27,7 +28,6 @@
 import org.eclipse.ecf.provider.zookeeper.core.internal.Notification;
 import org.eclipse.ecf.provider.zookeeper.util.Logger;
 import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter;
-import org.osgi.framework.Constants;
 import org.osgi.service.log.LogService;
 
 public class NodeReader implements Watcher,
@@ -64,44 +64,30 @@
 		return INode.ROOT_SLASH + getPath();
 	}
 
-	public void processResult(int rc, String p, Object ctx, byte[] data,
-			Stat stat) {
+	public synchronized void processResult(int rc, String p, Object ctx,
+			byte[] data, Stat stat) {
 		if (p == null || !p.equals(getAbsolutePath()) || data == null) {
 			return;
 		}
-		ByteArrayInputStream bis = null;
-		Properties props = new Properties();
+		ObjectInputStream objin = null;
+		ByteArrayInputStream bain = null;
+		Map<String, Object> serviceData = null;
 		try {
-			bis = new ByteArrayInputStream(data);
-			props.load(bis);
-			if (props.isEmpty()) {
+			bain = new ByteArrayInputStream(data);
+			objin = new ObjectInputStream(bain);
+			try {
+				serviceData = (Map<String, Object>) objin.readObject();
+			} catch (ClassNotFoundException e) {
+				Logger.log(LogService.LOG_ERROR, "NodeReader.processResult: "
+						+ e.getMessage(), e);
+			}
+			if (serviceData == null || serviceData.isEmpty()) {
 				return;
 			}
-			if (props.containsKey(Constants.OBJECTCLASS)) {
-				props.put(Constants.OBJECTCLASS, ((String) props
-						.get(Constants.OBJECTCLASS)).split(INode.STRING_DELIM));
-			}
-			if (props.containsKey(INode.NODE_PROPERTY_NAME_SCOPE)) {
-				props.put(INode.NODE_PROPERTY_NAME_SCOPE, ((String) props
-						.get(INode.NODE_PROPERTY_NAME_SCOPE))
-						.split(INode.STRING_DELIM));
-			}
-			if (props.containsKey(INode.NODE_PROPERTY_NAME_PROTOCOLS)) {
-				props.put(INode.NODE_PROPERTY_NAME_PROTOCOLS, ((String) props
-						.get(INode.NODE_PROPERTY_NAME_PROTOCOLS))
-						.split(INode.STRING_DELIM));
-			}
-			if (props.containsKey(INode.NODE_PROPERTY_SERVICES)) {
-				props.put(INode.NODE_PROPERTY_SERVICES, ((String) props
-						.get(INode.NODE_PROPERTY_SERVICES))
-						.split(INode.STRING_DELIM));
-			}
-			bis.close();
-			this.discovered = new DiscoverdService(getPath(), props);
+			this.discovered = new DiscoverdService(getPath(), serviceData);
 			readRoot.getDiscoverdServices()
-					.put(
-							this.discovered.getServiceID().getServiceTypeID()
-									.getName(), this.discovered);
+					.put(this.discovered.getServiceID().getServiceTypeID()
+							.getName(), this.discovered);
 			PrettyPrinter.prompt(PrettyPrinter.REMOTE_AVAILABLE,
 					this.discovered);
 			Localizer.getSingleton().localize(
@@ -110,9 +96,16 @@
 		} catch (IOException e) {
 			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
 		} finally {
-			if (bis != null) {
+			if (objin != null) {
 				try {
-					bis.close();
+					objin.close();
+				} catch (IOException e) {
+					// ignore
+				}
+			}
+			if (bain != null) {
+				try {
+					bain.close();
 				} catch (IOException e) {
 					// ignore
 				}
diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeWriter.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeWriter.java
index 8d34274..75d63f6 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeWriter.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/node/internal/NodeWriter.java
@@ -55,8 +55,7 @@
 					false);
 			if (stat == null) {
 				this.writeRoot.getWriteKeeper()
-						.create(
-								parentPath,
+						.create(parentPath,
 								((AdvertisedService) this.getNode()
 										.getWrappedService())
 										.getPropertiesAsBytes(),
@@ -66,13 +65,12 @@
 					.getWrappedService());
 		} catch (KeeperException e) {
 			if (e.code() == KeeperException.Code.CONNECTIONLOSS) {
-				Logger.log(LogService.LOG_DEBUG, "Can't connect to server! "
+				Logger.log(LogService.LOG_ERROR, "Can't connect to server! "
 						+ e.getMessage(), e);
 			}
 		} catch (InterruptedException e) {
-			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
+			// ignore
 		}
-
 	}
 
 	public synchronized void remove() {
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..72b60ea 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();
 	}
@@ -105,9 +101,9 @@
 			return;
 		}
 		NodeWriter nw = getNodeWriters().remove(id);
-		allKnownServices.remove(nw.getNode().getWrappedService().getServiceID()
-				.getName());
 		if (nw != null) {
+			allKnownServices.remove(nw.getNode().getWrappedService().getServiceID()
+					.getName());
 			nw.remove();
 		}
 		nw = null;
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 0830e45..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,147 +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.ZooKeeper;
-import org.apache.zookeeper.ZooDefs.Ids;
-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() {
-		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();
-			}
-			this.writeKeeper = new ZooKeeper(this.ip, 3000, this);
-			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$
-				}
-			}
-			synchronized (this) {
-				this.notifyAll();
-			}
-			this.watchManager.addZooKeeper(this.writeKeeper);
-
-		} catch (Exception e) {
-			Logger.log(LogService.LOG_DEBUG, e.getMessage(), e);
-		}
-	}
-
-	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/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/util/Logger.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/util/Logger.java
index 1af13a3..e447fc3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/util/Logger.java
+++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/util/Logger.java
@@ -14,11 +14,16 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.eclipse.ecf.core.util.SystemLogService;
 import org.eclipse.ecf.provider.zookeeper.DiscoveryActivator;
 import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer;
 import org.osgi.service.log.LogService;
 
 public class Logger {
+
+	private static SystemLogService nativeLogger = new SystemLogService(
+			"org.eclipse.ecf.provider.zookeeper");
+
 	private static Set<LogService> logServices = new HashSet<LogService>();
 
 	public static void bindLogService(org.osgi.service.log.LogService ls) {
@@ -32,13 +37,17 @@
 	public static void log(int level, String message, Exception e) {
 		if (logServices.isEmpty()) {
 			if (e == null)
-				System.err.println(message);
+				nativeLogger.log(level, message);
 			else
-				e.printStackTrace();
+				nativeLogger.log(level, message, e);
 
 			return;
 		}
 		for (LogService ls : logServices) {
+			if (ls == null) {
+				nativeLogger.log(level, message, e);
+				continue;
+			}
 			ls.log(DiscoveryActivator.getContext().getServiceReference(
 					ZooDiscoveryContainer.class.getName()), level, message, e);
 		}
@@ -46,10 +55,14 @@
 
 	public static void log(int level, String message, Throwable t) {
 		if (logServices.isEmpty()) {
-			t.printStackTrace();
+			nativeLogger.log(level, message, t);
 			return;
 		}
 		for (LogService ls : logServices) {
+			if (ls == null) {
+				nativeLogger.log(level, message, t);
+				continue;
+			}
 			ls.log(DiscoveryActivator.getContext().getServiceReference(
 					ZooDiscoveryContainer.class.getName()), level, message, t);
 		}
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/build.properties b/releng/features/org.eclipse.ecf.core.featurepatch/build.properties
index d914a24..effe05f 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/build.properties
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/build.properties
@@ -2,11 +2,13 @@
                feature.properties,\
                license.html,\
                epl-v10.html,\
-               about.html
+               about.html,\
+               notice.html
 src.includes = feature.properties,\
                feature.xml,\
                license.html,\
                about.html,\
-               epl-v10.html
+               epl-v10.html,\
+               notice.html
 generate.feature@org.eclipse.ecf.core.featurepatch.source=org.eclipse.ecf.core.featurepatch            
                
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/epl-v10.html b/releng/features/org.eclipse.ecf.core.featurepatch/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties b/releng/features/org.eclipse.ecf.core.featurepatch/feature.properties
index 6e51da1..046152a 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"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
index af558c0..0690efd 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/feature.xml
@@ -1,15 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.core.featurepatch"
-      label="ECF 3.4 Patch for Eclipse 3.5-3.6"
-      version="3.4.0.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.
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Filetransfer Patch for Eclipse"

+      version="3.5.7.qualifier"

+      provider-name="%providerName">

+

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

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

       Copyright (c) 2010 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -17,74 +18,74 @@
 this distribution, and is available at 
 http://www.eclipse.org/legal/epl-v10.html
  
-Contributors: Composent, Inc. - initial API and implementation
-   </copyright>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.equinox.p2.user.ui" version="0.0.0" patch="true"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.filetransfer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.identity"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <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.eclipse.ecf.provider.filetransfer.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.ssl"
-         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="license.html">

+      %license

+   </license>

+

+   <requires>

+      <import feature="org.eclipse.equinox.p2.user.ui" version="0.0.0" patch="true"/>

+   </requires>

+

+   <plugin

+         id="org.eclipse.ecf"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <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.eclipse.ecf.provider.filetransfer.ssl"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/license.html b/releng/features/org.eclipse.ecf.core.featurepatch/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/license.html
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/notice.html b/releng/features/org.eclipse.ecf.core.featurepatch/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/epl-v10.html b/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties b/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties
index ce56b4f..5fb2461 100644
--- a/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties
+++ b/releng/features/org.eclipse.ecf.core.featurepatch/sourceTemplateFeature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.core/epl-v10.html b/releng/features/org.eclipse.ecf.core/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.core/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.core/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.core/feature.properties b/releng/features/org.eclipse.ecf.core/feature.properties
index d2087a9..e51f6e7 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 SDK
-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
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
@@ -138,4 +139,4 @@
 re-export of encryption software, to see if this is permitted.\n\
 \n\
 Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
-########### end of license property ##########################################
+########### end of license property ##########################################
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.core/feature.xml b/releng/features/org.eclipse.ecf.core/feature.xml
index c2276cd..f94b005 100644
--- a/releng/features/org.eclipse.ecf.core/feature.xml
+++ b/releng/features/org.eclipse.ecf.core/feature.xml
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.core"
-      label="Eclipse Communication Framework Target Components"
-      version="3.4.0.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.
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Target Components for Eclipse"

+      version="3.5.7.qualifier"

+      provider-name="%providerName"

+      plugin="org.eclipse.ecf">

+

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

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

       Copyright (c) 2009 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -18,311 +18,283 @@
 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.remoteservice.sdk.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.jivesoftware.smack"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.doc"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.presence"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.irc"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.presence.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.xmpp.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.irc.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.bittorrent"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.bittorrent.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.filetransfer.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.msn"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.msn.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.presence.bot"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.telephony.call"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.telephony.call.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.protocol.msn"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.presence.collab.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.efs"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.docshare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer.scp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.protocol.bittorrent"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.sync"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.storage"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui.edit"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui.model"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui.properties"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui.properties.tabbed"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <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.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"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.team.ecf.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui.browser"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.ui.capabilities"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.discovery.ui.userinput"
-         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>

+

+   <includes

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

+         version="0.0.0"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.presence.ui"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.filetransfer.ui"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.presence.bot"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.telephony.call"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.telephony.call.ui"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.protocol.msn"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.presence.collab.ui"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.protocol.bittorrent"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.discovery.ui.properties.tabbed"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <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.team.ecf.core"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.team.ecf.ui"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.ui.capabilities"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.core/license.html b/releng/features/org.eclipse.ecf.core/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.core/license.html
+++ b/releng/features/org.eclipse.ecf.core/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.core/notice.html b/releng/features/org.eclipse.ecf.core/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.core/notice.html
+++ b/releng/features/org.eclipse.ecf.core/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties
index 579df44..f1b93fa 100644
--- a/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties
+++ b/releng/features/org.eclipse.ecf.core/sourceTemplateFeature/feature.properties
@@ -18,7 +18,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -87,6 +87,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/epl-v10.html b/releng/features/org.eclipse.ecf.datashare.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.datashare.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/feature.properties b/releng/features/org.eclipse.ecf.datashare.feature/feature.properties
index 2c44c66..f6289ed 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.datashare.feature/feature.properties
@@ -9,15 +9,11 @@
 featureName=ECF Datashare
 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
-licenseURL=license.html
-
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +82,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.datashare.feature/license.html b/releng/features/org.eclipse.ecf.datashare.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/license.html
+++ b/releng/features/org.eclipse.ecf.datashare.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/notice.html b/releng/features/org.eclipse.ecf.datashare.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.datashare.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
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.provider.filetransfer.httpclient.feature/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
similarity index 99%
rename from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html
rename to releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties
index 8afe21d..1746bb2 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.properties
@@ -17,203 +17,126 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-==========================================\n\
-\n\
-March 17, 2005\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
-----------------\n\
- \n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
 \n\
 Applicable Licenses\n\
--------------------\n\
 \n\
-   Eclipse Public License 1.0 ("EPL"). Included below and available at http://www.eclipse.org/legal/epl-v10.html.\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
 \n\
-   Apache Software License 2.0 ("ASL"). Included below and available at http://www.apache.org/licenses/LICENSE-2.0.\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
 \n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
 \n\
-Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
 \n\
-   Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
 \n\
-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java-TM- ARchive) in a directory named "plugins".\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
 \n\
-   A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
-   Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
 \n\
-The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
 \n\
-   The top-level (root) directory\n\
+\n\Use of Provisioning Technology\n\
 \n\
-   Plug-in and Fragment directories\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
 \n\
-   Inside Plug-ins and Fragments packaged as JARs\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
 \n\
-   Sub-directories of the directory named "src" of certain Plug-ins\n\
-\n\
-   Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-   Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
 \n\
 Cryptography\n\
-------------\n\
 \n\
-Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n\
-\n\
-----------------------------------------------------------------------------\n\
-\n\
-                      *Eclipse Public License - v 1.0*\n\
-\n\
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.\n\
-\n\
-*1. DEFINITIONS*\n\
-\n\
-"Contribution" means:\n\
-\n\
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and\n\
-\n\
-b) in the case of each subsequent Contributor:\n\
-\n\
-i) changes to the Program, and\n\
-\n\
-ii) additions to the Program;\n\
-\n\
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.\n\
-\n\
-"Contributor" means any person or entity that distributes the Program.\n\
-\n\
-"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.\n\
-\n\
-"Program" means the Contributions distributed in accordance with this Agreement.\n\
-\n\
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.\n\
-\n\
-*2. GRANT OF RIGHTS*\n\
-\n\
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.\n\
-\n\
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.\n\
-\n\
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.\n\
-\n\
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.\n\
-\n\
-*3. REQUIREMENTS*\n\
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:\n\
-\n\
-a) it complies with the terms and conditions of this Agreement; and\n\
-\n\
-b) its license agreement:\n\
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;\n\
-\n\
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;\n\
-\n\
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and\n\
-\n\
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.\n\
-\n\
-When the Program is made available in source code form:\n\
-\n\
-a) it must be made available under this Agreement; and\n\
-\n\
-b) a copy of this Agreement must be included with each copy of the Program.\n\
-\n\
-Contributors may not remove or alter any copyright notices contained within the Program.\n\
-\n\
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.\n\
-\n\
-*4. COMMERCIAL DISTRIBUTION*\n\
-\n\
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.\n\
-\n\
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.\n\
-\n\
-*5. NO WARRANTY*\n\
-\n\
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.\n\
-\n\
-*6. DISCLAIMER OF LIABILITY*\n\
-\n\
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\
-\n\
-*7. GENERAL*\n\
-\n\
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.\n\
-\n\
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.\n\
-\n\
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.\n\
-\n\
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.\n\
-\n\
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.\n\
-\n\
-----------------------------------------------------------------------------\n\
-\n\
-                               Apache License\n\
-                         Version 2.0, January 2004\n\
-                      http://www.apache.org/licenses/\n\
-\n\
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\
-\n\
-*1. Definitions*.\n\
-\n\
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n\
-\n\
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n\
-\n\
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n\
-\n\
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.\n\
-\n\
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n\
-\n\
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n\
-\n\
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n\
-\n\
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n\
-\n\
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."\n\
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n\
-\n\
-*2. Grant of Copyright License*. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n\
-\n\
-*3. Grant of Patent License*. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n\
-\n\
-*4. Redistribution*. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n\
-\n\
- a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n\
- \n\
- b) You must cause any modified files to carry prominent notices stating that You changed the files; and\n\
- \n\
- c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n\
- \n\
- d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\n\
-\n\
-You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n\
-\n\
-*5. Submission of Contributions*. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n\
-\n\
-*6. Trademarks*. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n\
-\n\
-*7. Disclaimer of Warranty*. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n\
-\n\
-*8. Limitation of Liability*. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n\
-\n\
-*9. Accepting Warranty or Additional Liability*. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\n\
-\n\
-END OF TERMS AND CONDITIONS\n
-########### end of license property ##########################################
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
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.dnssd.feature/license.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html
index 791741f..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/license.html
@@ -1,30 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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">
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -34,46 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
 
-<ul>
-<li>Eclipse Public License 1.0 (&quot;EPL&quot;). Included below and available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.</li>
-<li>Apache Software License 2.0 (&quot;ASL&quot). Included below and available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.</li>
-</ul>
+<h3>Applicable Licenses</h3>
 
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -83,459 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
-<hr>
-
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>&quot;Contribution&quot; means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>&quot;Contributor&quot; means any person or entity that distributes
-the Program.</p>
-
-<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>&quot;Program&quot; means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>&quot;Recipient&quot; means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-(&quot;Commercial Contributor&quot;) hereby agrees to defend and
-indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
-against any losses, damages and costs (collectively &quot;Losses&quot;)
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-<hr>
-
-<p align="center">
-Apache License<br />
-Version 2.0, January 2004<br />
-<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
-
-</p>
-<p>
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-</p>
-<p><b><a name="definitions">1. Definitions</a></b>.</p>
-<p>
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-</p>
-<p>
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-</p>
-<p>
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-</p>
-<p>
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-</p>
-<p>
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-</p>
-<p>
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-</p>
-<p>
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-</p>
-
-<p>
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-</p>
-<p>
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-</p>
-<p>
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-</p>
-<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
-Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-</p>
-<p><b><a name="patent">3. Grant of Patent License</a></b>.
-Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-</p>
-<p><b><a name="redistribution">4. Redistribution</a></b>.
-You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-<ol type="a">
-<li>You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-<br /> <br /></li>
-
-<li>You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-<br /> <br /></li>
-
-<li>You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-<br /> <br /></li>
-
-<li>If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.</li>
-
-</ol>
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-</p>
-<p><b><a name="contributions">5. Submission of Contributions</a></b>.
-Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-</p>
-<p><b><a name="trademarks">6. Trademarks</a></b>.
-This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-</p>
-<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
-Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-</p>
-<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
-In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-</p>
-<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
-While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-</p>
-<p>
-END OF TERMS AND CONDITIONS
-</p>
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.discovery.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.feature/feature.properties
index fa64fbe..9d861d4 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.feature/license.html b/releng/features/org.eclipse.ecf.discovery.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.discovery.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
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..fe06ecb 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"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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 44ce66a..ca09bf1 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 
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
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 d390433..0000000
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.local.feature"
-      label="ECF Discovery Local File Provider"
-      version="1.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>
-
-   <plugin
-         id="org.eclipse.ecf.osgi.services.discovery.local"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.localdiscovery"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</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/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.slp.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties
index e029ad5..d656eab 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.slp.feature/license.html b/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/build.properties b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/build.properties
index 4199f5b..aac458b 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/build.properties
@@ -3,10 +3,12 @@
                asl-v20.txt,\
                feature.properties,\
                license.html,\
-               epl-v10.html
+               epl-v10.html,\
+               notice.html
 src.includes = feature.xml,\
                feature.properties,\
                about.html,\
                asl-v20.txt,\
                license.html,\
-               epl-v10.html
+               epl-v10.html,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/epl-v10.html b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties
index 8d41047..2820236 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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 1c7f4e0..f451219 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
@@ -1,16 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.discovery.zookeeper.feature"
-      label="ECF Discovery Zookeeper Provider"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://wiki.eclipse.org/Zookeeper_Based_ECF_Discovery">
-      This feature provides the Apache Zookeeper Discovery Provider
-implementation
-   </description>
-
-   <copyright url="http://www.eclipse.org/legal/epl-v10.html">
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Discovery Zookeeper Provider"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

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

+      This feature provides the Apache Zookeeper Discovery Provider.

+   </description>

+

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

       /*******************************************************************************
 *  Copyright (c)2010 REMAIN B.V. (http://www.remainsoftware.com).
 *  All rights reserved. This program and the accompanying materials
@@ -20,38 +19,45 @@
 * 
 *  Contributors:
 *     Remain Software - initial API and implementation     
-*******************************************************************************/
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import plugin="org.apache.log4j"/>
-      <import plugin="org.eclipse.equinox.common" version="3.5.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.discovery" version="3.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf"/>
-      <import plugin="org.eclipse.ecf.identity"/>
-      <import plugin="org.eclipse.equinox.concurrent"/>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.osgi.services"/>
-      <import plugin="org.eclipse.equinox.ds"/>
-      <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.provider.zookeeper"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.zookeeper"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+*******************************************************************************/

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <requires>

+      <import plugin="org.apache.log4j"/>

+      <import plugin="org.eclipse.equinox.common" version="3.5.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.ecf.discovery" version="3.0.0" match="greaterOrEqual"/>

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

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

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

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

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

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

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

+   </requires>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.log4j"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.hadoop.zookeeper"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/notice.html b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/epl-v10.html b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
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..230722a 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"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.examples.feature/license.html b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.examples.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/epl-v10.html b/releng/features/org.eclipse.ecf.eventadmin.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties b/releng/features/org.eclipse.ecf.eventadmin.feature/feature.properties
index 3bb7fba..8dd5293 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"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.eventadmin.feature/license.html b/releng/features/org.eclipse.ecf.eventadmin.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/license.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html b/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.eventadmin.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
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.filetransfer.feature/epl-v10.html b/releng/features/org.eclipse.ecf.filetransfer.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties
index 1916cc2..4679823 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml
index b1bcf01..46ce69b 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.filetransfer.feature"
-      label="ECF Filetransfer Feature"
-      version="3.7.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF core and filetransfer bundles used by the Eclipse platform to support P2 filetransfer.
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Filetransfer Feature"

+      version="3.7.100.qualifier"

+      provider-name="Eclipse.org">

+

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

+      This feature provides the ECF core and filetransfer bundles used by the Eclipse platform to support P2 filetransfer.

+   </description>

+

+   <copyright>

       Copyright (c) 2004, 2007 Composent, Inc. and others. All rights
 reserved.
 This program and the accompanying materials are made available
@@ -17,60 +17,55 @@
 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.equinox.p2.user.ui" version="0.0.0" patch="true"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.filetransfer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.provider.filetransfer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <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.eclipse.ecf.provider.filetransfer.ssl"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.ssl"
-         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.filetransfer"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/license.html b/releng/features/org.eclipse.ecf.filetransfer.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/license.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/.project b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/.project
similarity index 84%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/.project
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/.project
index 9e5fb36..01c87a9 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/.project
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/.project
@@ -1,17 +1,17 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.filetransfer.httpclient.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.provider.filetransfer.httpclient.feature/about.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/about.html
similarity index 89%
rename from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/about.html
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/about.html
index 5782a59..1035806 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/about.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/about.html
@@ -58,6 +58,36 @@
 at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
 </p>
 
+<h3>IRCLib API v1.10</h3>
+
+<p>This plugin is based on software developed by <a href="http://schwering.org">Christoph Schwering</a> at 
+<a href="http://moepii.sourceforge.net/">http://moepii.sourceforge.net/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>JmDNS API v2.0</h3>
+
+<p>This plugin is based on software developed by JmDNS project team at 
+<a href="http://jmdns.sourceforge.net">http://jmdns.sourceforge.net</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
+<h3>Jive Software Smack API v2.1.1</h3>
+
+<p>This plugin is based on software developed by <a href="http://www.jivesoftware.org">Jive Software</a> project team at 
+<a href="http://www.igniterealtime.org/">http://www.igniterealtime.org/</a>.
+A copy of this library is distributed within this plugin and
+therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
+in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
+at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
+</p>
+
 
 <p>Your use of the this plugin and the components listed above is subject to the terms and conditions of the Apache License v2.0
 which is available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/asl-v20.txt b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/asl-v20.txt
similarity index 100%
rename from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/asl-v20.txt
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/asl-v20.txt
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/buckminster.cspex
similarity index 60%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/buckminster.cspex
index 77efb6c..313bae6 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/buckminster.cspex
@@ -4,16 +4,13 @@
 	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"/>
+		<dependency name="org.apache.commons.httpclient" componentType="osgi.bundle"/>
+		<dependency name="org.apache.commons.logging" componentType="osgi.bundle"/>
+		<dependency name="org.apache.commons.codec" componentType="osgi.bundle"/>
+		<!-- Add filetransfer tests -->
+		<dependency name="org.eclipse.ecf.tests.filetransfer.feature" componentType="eclipse.feature"/>
 	</dependencies>
 	<generators>
 		<!-- Place your Generators here -->
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/build.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/build.properties
similarity index 71%
copy from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/build.properties
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/build.properties
index e5dbc01..a0db809 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/build.properties
@@ -1,14 +1,14 @@
-bin.includes = feature.xml,\
-               feature.properties,\
-               license.html,\
-               notice.html,\
-               epl-v10.html,\
-               asl-v20.txt,\
-               about.html
-src.includes = about.html,\
-               asl-v20.txt,\
-               epl-v10.html,\
-               feature.properties,\
-               feature.xml,\
-               license.html,\
-               notice.html
+bin.includes = feature.xml,\

+               about.html,\

+               asl-v20.txt,\

+               build.properties,\

+               feature.properties,\

+               license.html,\

+               notice.html

+src.includes = about.html,\

+               asl-v20.txt,\

+               build.properties,\

+               feature.properties,\

+               feature.xml,\

+               license.html,\

+               notice.html

diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties
similarity index 98%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties
index 4bd9606..1916cc2 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.properties
@@ -1,13 +1,13 @@
 ############################################################################
-# Copyright (c) 2010 Composent Inc., and others.
+# Copyright (c) 2009 Composent Inc., EclipseSource Inc., 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
 #
 ############################################################################
-featureName=ECF Discovery Local File Provider
-providerName=Eclipse.org - ECF
+featureName=ECF Platform
+providerName=Eclipse.org
 
 # "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.provider.filetransfer.httpclient.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml
similarity index 64%
rename from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml
index b8cf592..53a72f8 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml
@@ -1,73 +1,70 @@
-<?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">
-      Copyright (c) 2004, 2007 Composent, Inc. and others. All rights
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Httpclient Filetransfer Provider"

+      version="3.5.7.qualifier"

+      provider-name="Eclipse.org - ECF">

+

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

+      This feature provides the httpclient-based filetransfer provider used by the Eclipse platform to support P2 filetransfer.

+   </description>

+

+   <copyright>

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

+

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

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

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

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/license.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/license.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/license.html
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/license.html
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/notice.html
similarity index 100%
rename from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/notice.html
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/notice.html
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/org.eclipse.ecf.filetransfer.httpclient.cquery b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/org.eclipse.ecf.filetransfer.httpclient.cquery
new file mode 100644
index 0000000..550f13f
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/org.eclipse.ecf.filetransfer.httpclient.cquery
@@ -0,0 +1,13 @@
+<?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.filetransfer.httpclient.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(\..+)?" 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.filetransfer.httpclient.feature/org.eclipse.ecf.filetransfer.httpclient.mspec b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/org.eclipse.ecf.filetransfer.httpclient.mspec
new file mode 100644
index 0000000..fc18a9b
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/org.eclipse.ecf.filetransfer.httpclient.mspec
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf" 
+    materializer="p2" 
+    url="org.eclipse.ecf.filetransfer.httpclient.cquery">
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/.project b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/.project
similarity index 84%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/.project
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/.project
index 9e5fb36..f153b71 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/.project
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/.project
@@ -1,17 +1,17 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.filetransfer.httpclient4.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.provider.filetransfer.httpclient.feature/about.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/about.html
similarity index 88%
copy from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/about.html
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/about.html
index 5782a59..6fe3d50 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/about.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/about.html
@@ -8,32 +8,31 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 25, 2008</p>	
-<h3>License</h3>
+ 		<p>May 4, 2012</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>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/org/documents/epl-v10.php">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>
+		<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's license for 
+		terms and conditions of use.</p>
 
-<h3>Third Party Content</h3>
+<h4>Apache HttpComponents v4.1.2</h4>
 
-<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's license for 
-terms and conditions of use.</p>
-
-<h3>Apache HttpClient v3.0.1</h3>
-
-<p>This plugin is based on software developed by the Apache Httpclient project at <a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a>.
+<p>This plugin is based on software developed by the Apache HttpComponents project at <a href="http://hc.apache.org/">http://hc.apache.org/</a>.
 A copy of this library is distributed within this plugin and
 therefore this plugin is subject to the Apache License version 2.0, a copy of the license is contained
 in the file <a href="asl-v20.txt">asl-v20.txt</a> and 
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/asl-v20.txt b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/asl-v20.txt
similarity index 100%
copy from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/asl-v20.txt
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/asl-v20.txt
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/buckminster.cspex
similarity index 60%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/buckminster.cspex
index 77efb6c..287d17a 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/buckminster.cspex
@@ -4,16 +4,10 @@
 	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"/>
+		<!-- Add filetransfer tests -->
+		<dependency name="org.eclipse.ecf.tests.filetransfer.feature" componentType="eclipse.feature"/>
 	</dependencies>
 	<generators>
 		<!-- Place your Generators here -->
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/build.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/build.properties
similarity index 86%
rename from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/build.properties
rename to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/build.properties
index e5dbc01..b17001e 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/build.properties
@@ -1,14 +1,14 @@
-bin.includes = feature.xml,\
-               feature.properties,\
-               license.html,\
-               notice.html,\
-               epl-v10.html,\
-               asl-v20.txt,\
-               about.html
-src.includes = about.html,\
-               asl-v20.txt,\
-               epl-v10.html,\
-               feature.properties,\
-               feature.xml,\
-               license.html,\
-               notice.html
+bin.includes = feature.xml,\

+               about.html,\

+               asl-v20.txt,\

+               epl-v10.html,\

+               feature.properties,\

+               license.html,\

+               notice.html

+src.includes = notice.html,\

+               license.html,\

+               feature.xml,\

+               feature.properties,\

+               epl-v10.html,\

+               asl-v20.txt,\

+               about.html

diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/epl-v10.html
similarity index 99%
copy from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties
similarity index 96%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
copy to releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties
index 4bd9606..c7ef49c 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.properties
@@ -1,13 +1,13 @@
 ############################################################################
-# Copyright (c) 2010 Composent Inc., and others.
+# Copyright (c) 2008 Composent Inc., 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
 #
 ############################################################################
-featureName=ECF Discovery Local File Provider
-providerName=Eclipse.org - ECF
+featureName=ECF Apache Httpclient4 FileTransfer Provider
+providerName=Eclipse.org
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
new file mode 100644
index 0000000..6e51d32
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.ecf.filetransfer.httpclient4.feature"
+      label="ECF Httpclient4 Filetransfer Provider"
+      version="3.5.7.qualifier"
+      provider-name="Eclipse.org - ECF">
+
+   <description url="http://www.eclipse.org/ecf">
+      This feature provides the httpclient4-based filetransfer provider.
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      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
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <plugin
+         id="org.apache.httpcomponents.httpclient"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.httpcomponents.httpcore"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient4"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ecf.provider.filetransfer.httpclient4.ssl"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         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.filetransfer.httpclient4.feature/license.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/notice.html b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/org.eclipse.ecf.filetransfer.httpclient4.cquery b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/org.eclipse.ecf.filetransfer.httpclient4.cquery
new file mode 100644
index 0000000..cb8c054
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/org.eclipse.ecf.filetransfer.httpclient4.cquery
@@ -0,0 +1,13 @@
+<?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.filetransfer.httpclient4.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(\..+)?" 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.filetransfer.httpclient4.feature/org.eclipse.ecf.filetransfer.httpclient4.mspec b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/org.eclipse.ecf.filetransfer.httpclient4.mspec
new file mode 100644
index 0000000..9f788f7
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/org.eclipse.ecf.filetransfer.httpclient4.mspec
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0" 
+    name="org.eclipse.ecf" 
+    materializer="p2" 
+    url="org.eclipse.ecf.filetransfer.httpclient4.cquery">
+    
+    <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+
+    <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+	
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/epl-v10.html b/releng/features/org.eclipse.ecf.osgi.services.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
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..6e88c09 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"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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 8dc8d37..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,16 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.osgi.services.feature"
-      label="ECF OSGi 4.2 Remote Services"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Implementation of OSGi 4.2 Remote Services
-   </description>
-
-   <copyright>
-#################################################
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      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.  Remote Services are specified in chapter 13 of the OSGi compendium specification.  See http://www.osgi.org/download/r4v42/r4.cmpn.pdf.

+   </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 +19,43 @@
 # 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.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"
-         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.osgi.services.distribution"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         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.osgi.services.feature/license.html b/releng/features/org.eclipse.ecf.osgi.services.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/license.html
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html b/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.cquery b/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.cquery
index 1b4a5f8..050f5ad 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.cquery
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.cquery
@@ -7,6 +7,7 @@
     <cq:property key="target.ws" value="*"/>
     
     <cq:advisorNode namePattern="^org\.eclipse\.ecf\.osgi(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
     <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.osgi(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
     
     <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false"/>
diff --git a/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.mspec b/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.mspec
index f5f3df2..e1d2a38 100644
--- a/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.mspec
+++ b/releng/features/org.eclipse.ecf.osgi.services.feature/org.eclipse.ecf.osgi.services.mspec
@@ -5,6 +5,7 @@
     url="org.eclipse.ecf.osgi.services.cquery">

     

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

+    <md:mspecNode namePattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" materializer="workspace"/>

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

 

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

diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/.project b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/.project
deleted file mode 100644
index 7a15275..0000000
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.ecf.provider.filetransfer.httpclient.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.provider.filetransfer.httpclient.feature/feature.properties b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.properties
deleted file mode 100644
index c1455fb..0000000
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/feature.properties
+++ /dev/null
@@ -1,219 +0,0 @@
-############################################################################
-# Copyright (c) 2008 Composent Inc., 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
-#
-############################################################################
-featureName=ECF Apache Httpclient FileTransfer Provider
-providerName=Eclipse.org
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-==========================================\n\
-\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-----------------\n\
- \n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
--------------------\n\
-\n\
-   Eclipse Public License 1.0 ("EPL"). Included below and available at http://www.eclipse.org/legal/epl-v10.html.\n\
-\n\
-   Apache Software License 2.0 ("ASL"). Included below and available at http://www.apache.org/licenses/LICENSE-2.0.\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository ("Repository") in CVS modules ("Modules") and made available as downloadable archives ("Downloads").\n\
-\n\
-   Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").\n\
-\n\
-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java-TM- ARchive) in a directory named "plugins".\n\
-\n\
-   A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-\n\
-   Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:\n\
-\n\
-   The top-level (root) directory\n\
-\n\
-   Plug-in and Fragment directories\n\
-\n\
-   Inside Plug-ins and Fragments packaged as JARs\n\
-\n\
-   Sub-directories of the directory named "src" of certain Plug-ins\n\
-\n\
-   Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-   Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.\n\
-\n\
-Cryptography\n\
-------------\n\
-\n\
-Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n\
-\n\
-----------------------------------------------------------------------------\n\
-\n\
-                      *Eclipse Public License - v 1.0*\n\
-\n\
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.\n\
-\n\
-*1. DEFINITIONS*\n\
-\n\
-"Contribution" means:\n\
-\n\
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and\n\
-\n\
-b) in the case of each subsequent Contributor:\n\
-\n\
-i) changes to the Program, and\n\
-\n\
-ii) additions to the Program;\n\
-\n\
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.\n\
-\n\
-"Contributor" means any person or entity that distributes the Program.\n\
-\n\
-"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.\n\
-\n\
-"Program" means the Contributions distributed in accordance with this Agreement.\n\
-\n\
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.\n\
-\n\
-*2. GRANT OF RIGHTS*\n\
-\n\
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.\n\
-\n\
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.\n\
-\n\
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.\n\
-\n\
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.\n\
-\n\
-*3. REQUIREMENTS*\n\
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:\n\
-\n\
-a) it complies with the terms and conditions of this Agreement; and\n\
-\n\
-b) its license agreement:\n\
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;\n\
-\n\
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;\n\
-\n\
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and\n\
-\n\
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.\n\
-\n\
-When the Program is made available in source code form:\n\
-\n\
-a) it must be made available under this Agreement; and\n\
-\n\
-b) a copy of this Agreement must be included with each copy of the Program.\n\
-\n\
-Contributors may not remove or alter any copyright notices contained within the Program.\n\
-\n\
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.\n\
-\n\
-*4. COMMERCIAL DISTRIBUTION*\n\
-\n\
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.\n\
-\n\
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.\n\
-\n\
-*5. NO WARRANTY*\n\
-\n\
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.\n\
-\n\
-*6. DISCLAIMER OF LIABILITY*\n\
-\n\
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\
-\n\
-*7. GENERAL*\n\
-\n\
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.\n\
-\n\
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.\n\
-\n\
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.\n\
-\n\
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.\n\
-\n\
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.\n\
-\n\
-----------------------------------------------------------------------------\n\
-\n\
-                               Apache License\n\
-                         Version 2.0, January 2004\n\
-                      http://www.apache.org/licenses/\n\
-\n\
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\
-\n\
-*1. Definitions*.\n\
-\n\
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.\n\
-\n\
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.\n\
-\n\
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.\n\
-\n\
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.\n\
-\n\
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.\n\
-\n\
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.\n\
-\n\
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).\n\
-\n\
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n\
-\n\
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."\n\
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n\
-\n\
-*2. Grant of Copyright License*. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.\n\
-\n\
-*3. Grant of Patent License*. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.\n\
-\n\
-*4. Redistribution*. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:\n\
-\n\
- a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n\
- \n\
- b) You must cause any modified files to carry prominent notices stating that You changed the files; and\n\
- \n\
- c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and\n\
- \n\
- d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.\n\
-\n\
-You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.\n\
-\n\
-*5. Submission of Contributions*. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.\n\
-\n\
-*6. Trademarks*. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n\
-\n\
-*7. Disclaimer of Warranty*. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.\n\
-\n\
-*8. Limitation of Liability*. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.\n\
-\n\
-*9. Accepting Warranty or Additional Liability*. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.\n\
-\n\
-END OF TERMS AND CONDITIONS\n
-########### end of license property ##########################################
\ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/license.html b/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/license.html
deleted file mode 100644
index 791741f..0000000
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/license.html
+++ /dev/null
@@ -1,541 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse Foundation Software User Agreement</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-
-<ul>
-<li>Eclipse Public License 1.0 (&quot;EPL&quot;). Included below and available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.</li>
-<li>Apache Software License 2.0 (&quot;ASL&quot). Included below and available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.</li>
-</ul>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-
-<hr>
-
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>&quot;Contribution&quot; means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>&quot;Contributor&quot; means any person or entity that distributes
-the Program.</p>
-
-<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>&quot;Program&quot; means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>&quot;Recipient&quot; means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-(&quot;Commercial Contributor&quot;) hereby agrees to defend and
-indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
-against any losses, damages and costs (collectively &quot;Losses&quot;)
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-<hr>
-
-<p align="center">
-Apache License<br />
-Version 2.0, January 2004<br />
-<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a>
-
-</p>
-<p>
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-</p>
-<p><b><a name="definitions">1. Definitions</a></b>.</p>
-<p>
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-</p>
-<p>
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-</p>
-<p>
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-</p>
-<p>
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-</p>
-<p>
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-</p>
-<p>
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-</p>
-<p>
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-</p>
-
-<p>
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-</p>
-<p>
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-</p>
-<p>
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-</p>
-<p><b><a name="copyright">2. Grant of Copyright License</a></b>.
-Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-</p>
-<p><b><a name="patent">3. Grant of Patent License</a></b>.
-Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-</p>
-<p><b><a name="redistribution">4. Redistribution</a></b>.
-You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-<ol type="a">
-<li>You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-<br /> <br /></li>
-
-<li>You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-<br /> <br /></li>
-
-<li>You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-<br /> <br /></li>
-
-<li>If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.</li>
-
-</ol>
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-</p>
-<p><b><a name="contributions">5. Submission of Contributions</a></b>.
-Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-</p>
-<p><b><a name="trademarks">6. Trademarks</a></b>.
-This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-</p>
-<p><b><a name="no-warranty">7. Disclaimer of Warranty</a></b>.
-Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-</p>
-<p><b><a name="no-liability">8. Limitation of Liability</a></b>.
-In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-</p>
-<p><b><a name="additional">9. Accepting Warranty or Additional Liability</a></b>.
-While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-</p>
-<p>
-END OF TERMS AND CONDITIONS
-</p>
-</body>
-</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties
index b60f35f..77523cf 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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 7deaee0..837f2a4 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.examples.feature"
-      label="ECF OSGi 4.2 Remote Services Examples"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides ECF Remote Service Examples
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF OSGi 4.2 Remote Services Examples"

+      version="1.1.0.qualifier"

+      provider-name="%providerName">

+

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

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

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,57 +18,64 @@
 # 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.examples.remoteservices.hello"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.hello.consumer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.hello.ds.host"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.hello.host"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.examples.remoteservices.rest.rss"
-         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.examples.remoteservices.hello"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.hello.consumer"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.hello.ds.consumer"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.hello.ds.host"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.hello.host"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.rest.rss"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.examples.remoteservices.hello.consumer.edef"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.examples.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties
index d5455b6..5c5e00c 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties
index 96b8c01..dcc81e3 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Remote Services REST Support
+featureName=ECF REST Remote Services
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.rest.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rest.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties
index c06f9e8..e9efe79 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.rosgi.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/.project b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/.project
similarity index 85%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/.project
rename to releng/features/org.eclipse.ecf.remoteservice.rpc.feature/.project
index 9e5fb36..f068bd4 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/.project
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/.project
@@ -1,17 +1,17 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.remoteservice.rpc.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/about.html b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/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.rpc.feature/about.html
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex
similarity index 67%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
rename to releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex
index 77efb6c..a2c418e 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/buckminster.cspex
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/buckminster.cspex
@@ -6,14 +6,12 @@
 	<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"/>
+		<dependency name="org.apache.commons.httpclient" 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"/>
+		<dependency name="org.apache.commons.codec" componentType="osgi.bundle"/>
+		<dependency name="org.eclipse.ecf.tests.remoteservice.rpc" componentType="osgi.bundle"/>		
 	</dependencies>
 	<generators>
 		<!-- Place your Generators here -->
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/build.properties
similarity index 62%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
copy to releng/features/org.eclipse.ecf.remoteservice.rpc.feature/build.properties
index e649bf6..f41909f 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/plugin.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/build.properties
@@ -1,11 +1,13 @@
-############################################################################
-# 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) 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

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

+bin.includes = feature.xml,\

+               about.html,\

+               epl-v10.html,\

+               feature.properties,\

+               license.html,\

+               notice.html

diff --git a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/epl-v10.html
similarity index 99%
copy from releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html
copy to releng/features/org.eclipse.ecf.remoteservice.rpc.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.provider.filetransfer.httpclient.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties
similarity index 97%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
copy to releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties
index 4bd9606..e0ff371 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.properties
@@ -1,12 +1,11 @@
 ############################################################################
-# Copyright (c) 2010 Composent Inc., and others.
+# 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
-#
 ############################################################################
-featureName=ECF Discovery Local File Provider
+featureName=ECF Remote Services XML-RPC Support
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +16,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +85,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
@@ -139,3 +139,4 @@
 \n\
 Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
 ########### end of license property ##########################################
+
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml
new file mode 100644
index 0000000..c6ce6f9
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="%featureName"

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

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

+      This feature provides the ECF Remote Services XML-RPC Support

+   </description>

+

+   <copyright url="%noticeURL">

+      %notice

+   </copyright>

+

+   <license url="%licenseURL">

+      %license

+   </license>

+

+   <includes

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

+         version="0.0.0"/>

+

+   <plugin

+         id="org.apache.xmlrpc"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.apache.ws.commons.util"

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

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/org.eclipse.ecf.remoteservice.rpc.cquery b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/org.eclipse.ecf.remoteservice.rpc.cquery
new file mode 100644
index 0000000..2a6ccfb
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/org.eclipse.ecf.remoteservice.rpc.cquery
@@ -0,0 +1,17 @@
+<?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.remoteservice.rpc.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\.remoteservice\.rpc?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.remoteservice\.rpc\.feature?" useTargetPlatform="false" useWorkspace="false"/>
+    
+    <cq:advisorNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.rpc?" 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.remoteservice.rpc.feature/org.eclipse.ecf.remoteservice.rpc.mspec b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/org.eclipse.ecf.remoteservice.rpc.mspec
new file mode 100644
index 0000000..28cface
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.rpc.feature/org.eclipse.ecf.remoteservice.rpc.mspec
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>

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

+    name="org.eclipse.ecf.remoteservice.rpc" 

+    materializer="p2" 

+    url="org.eclipse.ecf.remoteservice.rpc.cquery">

+    

+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.rpc?" materializer="workspace"/>

+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.remoteservice\.rpc\.feature?" materializer="workspace"/>

+        

+    <md:mspecNode namePattern="^org\.eclipse\.ecf\.tests\.remoteservice\.rpc?" materializer="workspace"/>

+

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

+</md:mspec>

+	

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/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
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..06e7c74 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 SOA Components
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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 a74ddc6..c8d85d1 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.sdk.feature"
-      label="ECF Remote Services Target Components"
-      version="3.4.0.qualifier"
-      provider-name="%providerName">
-
-   <description url="http://www.eclipse.org/ecf">
-      This feature provides the ECF Remote Services Target Components
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Remote Services Target Components"

+      version="3.5.7.qualifier"

+      provider-name="%providerName">

+

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

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

       #################################################
 # Copyright (c) 2010 Composent, Inc. and others. All rights reserved.
 # This program and the accompanying materials are made available under the 
@@ -18,75 +18,75 @@
 # 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.local.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"/>
-
-</feature>
+#################################################

+   </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.remoteservice.sdk.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
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%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/about.html
copy 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%
rename from releng/features/org.eclipse.ecf.discovery.local.feature/epl-v10.html
rename 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 97%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
copy to releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties
index 4bd9606..ff6e8cb 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"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/license.html
copy 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/build.properties b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/build.properties
index 561bbb3..048f303 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/build.properties
@@ -1,3 +1,10 @@
 bin.includes = feature.xml,\
-               epl-v10.html
-src.includes = epl-v10.html
+               epl-v10.html,\
+               license.html,\
+               notice.html,\
+               feature.properties
+src.includes = epl-v10.html,\
+               notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.properties
similarity index 97%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
copy to releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.properties
index 4bd9606..3cf6924 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/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
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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 ccd1450..0876712 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/feature.xml
@@ -1,67 +1,63 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.remoteservice.soa.feature"
-      label="ECF Service-Oriented Architecture"
-      version="1.0.0.qualifier">
-
-   <description url="http://www.example.com/description">
-      [Enter Feature Description here.]
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
-      [Enter Copyright Description here.]
-   </copyright>
-
-   <license url="http://www.example.com/license">
-      [Enter License Description here.]
-   </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.local.feature"
-         version="0.0.0"/>
-
-   <includes
-         id="org.eclipse.ecf.discovery.slp.feature"
-         version="0.0.0"/>
-
-</feature>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="ECF Service-Oriented Architecture"

+      version="2.0.0.qualifier">

+

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

+      This feature provides the ECF SOA Target Components.

+   </description>

+

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

+      [Enter Copyright Description here.]

+   </copyright>

+

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

+      [Enter License Description here.]

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

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soa.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.remoteservice.soa.feature/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/epl-v10.html b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties
index 4c29587..35d5f6d 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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.remoteservice.soap.feature/license.html b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.remoteservice.soap.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
diff --git a/releng/features/org.eclipse.ecf.sdk/build.properties b/releng/features/org.eclipse.ecf.sdk/build.properties
index 657d5a0..543aea4 100644
--- a/releng/features/org.eclipse.ecf.sdk/build.properties
+++ b/releng/features/org.eclipse.ecf.sdk/build.properties
@@ -4,12 +4,36 @@
 src.includes = about.html,\
                asl-v20.txt,\
                feature.xml
+               
 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
+generate.feature@org.eclipse.ecf.filetransfer.httpclient.feature.source=org.eclipse.ecf.filetransfer.httpclient.feature
+generate.feature@org.eclipse.ecf.filetransfer.httpclient4.feature.source=org.eclipse.ecf.filetransfer.httpclient4.feature
+generate.feature@org.eclipse.ecf.filetransfer.feature.source=org.eclipse.ecf.filetransfer.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.source
+
+category.id.rmt=Eclipse Communication Framework Remote Services (ECF)
+category.desciption.rmt=Category for the ECF Remote Services Target Components
+category.members.rmt=org.eclipse.ecf.remoteservice.sdk.feature,org.eclipse.ecf.remoteservice.sdk.feature.source
+
+category.id.ftpatch=Eclipse Communication Framework File Transfer Feature Patch (ECF)
+category.desciption.ftpatch=Category for the ECF File Transfer Feature Patch
+category.members.ftpatch=org.eclipse.ecf.core.featurepatch,org.eclipse.ecf.core.featurepatch.source
+
+category.id.ft=Eclipse Communication Framework File Transfer Features (ECF)
+category.desciption.ft=Category for the ECF File Transfer Features
+category.members.ft=org.eclipse.ecf.filetransfer.httpclient.feature,org.eclipse.ecf.filetransfer.feature,org.eclipse.ecf.filetransfer.httpclient4.feature,org.eclipse.ecf.filetransfer.httpclient.feature.source,org.eclipse.ecf.filetransfer.feature.source,org.eclipse.ecf.filetransfer.httpclient4.feature.source
+
+
+category.id.dft=Eclipse Communication Framework Uncategorized Features (ECF)
+category.desciption.dft=Category for the ECF Uncategorized Features
+category.default=dft
 
 
                
\ 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..5f9685f 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.7.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,27 @@
 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.remoteservice.sdk.feature"

+         version="0.0.0"/>

+

+   <includes

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

+         version="0.0.0"/>

+

+   <includes

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

+         version="0.0.0"/>

+

+   <includes

+         id="org.eclipse.ecf.filetransfer.httpclient4.feature"

+         version="0.0.0"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.cquery b/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.cquery
index e98fef6..1f0903d 100644
--- a/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.cquery
+++ b/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.cquery
@@ -44,7 +44,7 @@
        Skip Component is not checked.</cq:documentation>
     </cq:advisorNode>
     
-    <cq:advisorNode namePattern="^org\.apache\.zookeeper?" useTargetPlatform="false" useWorkspace="false"/>
+    <cq:advisorNode namePattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" useTargetPlatform="false" useWorkspace="false"/>
     <cq:advisorNode namePattern="^org\.json$" useTargetPlatform="false" useWorkspace="false"/>
     <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false">
     
diff --git a/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec b/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec
index d35656a..bb7dd1d 100644
--- a/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec
+++ b/releng/features/org.eclipse.ecf.sdk/org.eclipse.ecf.sdk.mspec
@@ -8,7 +8,7 @@
     <md:mspecNode namePattern="^org\.eclipse\.team\.ecf(\..+)?" materializer="workspace"/>
     <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
     <md:mspecNode namePattern="^org\.jivesoftware\.smack$" materializer="workspace"/>
-    <md:mspecNode namePattern="^org\.apache\.zookeeper(\..+)?" materializer="workspace"/>
+    <md:mspecNode namePattern="^org\.eclipse\.osgi\.services\.remoteserviceadmin(\..+)?" materializer="workspace"/>
     <md:mspecNode namePattern="^org\.json$" materializer="workspace"/>
 
     <!-- commented out for sdk when comparing to platform
diff --git a/releng/features/org.eclipse.ecf.tests.feature/build.properties b/releng/features/org.eclipse.ecf.tests.feature/build.properties
index 561bbb3..c6d21f2 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.tests.feature/build.properties
@@ -1,3 +1,10 @@
 bin.includes = feature.xml,\
-               epl-v10.html
-src.includes = epl-v10.html
+               epl-v10.html,\
+               feature.properties,\
+               notice.html,\
+               license.html
+src.includes = epl-v10.html,\
+               feature.properties,\
+               feature.xml,\
+               license.html,\
+               notice.html
diff --git a/releng/features/org.eclipse.ecf.tests.feature/epl-v10.html b/releng/features/org.eclipse.ecf.tests.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.tests.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.tests.feature/feature.properties
similarity index 97%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
copy to releng/features/org.eclipse.ecf.tests.feature/feature.properties
index 4bd9606..7876961 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.tests.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Discovery Local File Provider
+featureName=ECF Test Feature
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.tests.feature/feature.xml b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
index 0b4373f..0730424 100644
--- a/releng/features/org.eclipse.ecf.tests.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.tests.feature/feature.xml
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.tests.feature"
-      label="Used to build and execute tests (should never appear in a product)"
-      version="3.0.0"
-      provider-name="Eclipse.org">
-
-   <description url="http://www.eclipse.org/ecf">
-      Eclipse Communications Framework Tests
-   </description>
-
-   <copyright>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

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

+      label="Used to build and execute tests (should never appear in a product)"

+      version="3.0.0.qualifier"

+      provider-name="%providerName">

+

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

+      Eclipse Communications Framework Tests

+   </description>

+

+   <copyright>

       /*******************************************************************************
 * Copyright (c) 2009 Versant, GmbH. 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: Versant, GmbH. - 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,161 +304,153 @@
 or implied.
 See the License for the specific language governing permissions
 and
-limitations under the License.
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.osgi"/>
-      <import plugin="org.eclipse.ecf.discovery"/>
-      <import plugin="org.eclipse.ecf.presence"/>
-      <import plugin="org.eclipse.ecf.sharedobject"/>
-      <import plugin="org.eclipse.core.runtime"/>
-      <import plugin="org.eclipse.ecf.protocol.msn" version="0.3.1" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider.datashare.nio"/>
-      <import plugin="org.eclipse.ecf.provider.jmdns"/>
-      <import plugin="org.eclipse.ecf.provider.jslp"/>
-      <import plugin="ch.ethz.iks.slp" version="1.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider.xmpp"/>
-      <import plugin="org.eclipse.ecf.datashare" version="2.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.equinox.app" version="1.2.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.provider"/>
-      <import plugin="org.eclipse.ecf.server.generic"/>
-      <import plugin="org.junit" version="3.8.2" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ecf.storage" version="1.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.equinox.security"/>
-      <import plugin="org.eclipse.ecf.identity"/>
-      <import plugin="org.eclipse.ecf.sync"/>
-      <import plugin="org.eclipse.jface.text"/>
-      <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"/>
-      <import plugin="org.eclipse.ecf.provider.r_osgi"/>
-      <import plugin="ch.ethz.iks.r_osgi.remote"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.tests"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.datashare"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.presence"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.protocol.msn"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.provider.datashare.nio"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.provider.xmpp"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.remoteservice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.sharedobject"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.storage"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.sync"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.osgi.services.discovery"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.osgi.services.distribution"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.discovery"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.remoteservice.generic"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.remoteservice.r-osgi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.osgi.services.distribution.generic"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.osgi.services.distribution.r-osgi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+limitations under the License.

+   </license>

+

+   <requires>

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

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

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

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

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

+      <import plugin="org.eclipse.ecf.protocol.msn" version="0.3.1" match="greaterOrEqual"/>

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

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

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

+      <import plugin="ch.ethz.iks.slp" version="1.0.0" match="greaterOrEqual"/>

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

+      <import plugin="org.eclipse.ecf.datashare" version="2.0.0" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.equinox.app" version="1.2.0" match="greaterOrEqual"/>

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

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

+      <import plugin="org.junit" version="3.8.2" match="greaterOrEqual"/>

+      <import plugin="org.eclipse.ecf.storage" version="1.0.0" match="greaterOrEqual"/>

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

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

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

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

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

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

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

+   </requires>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.presence"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.protocol.msn"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.storage"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.sync"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.remoteservice.r-osgi"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.osgi.services.distribution.generic"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.osgi.services.distribution.r-osgi"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.tests.feature/license.html b/releng/features/org.eclipse.ecf.tests.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.tests.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.tests.feature/notice.html b/releng/features/org.eclipse.ecf.tests.feature/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.tests.feature/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/build.properties b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/build.properties
index 561bbb3..9b37d93 100644
--- a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/build.properties
@@ -1,3 +1,10 @@
 bin.includes = feature.xml,\
-               epl-v10.html
-src.includes = epl-v10.html
+               epl-v10.html,\
+               license.html,\
+               feature.properties,\
+               notice.html
+src.includes = epl-v10.html,\
+               notice.html,\
+               license.html,\
+               feature.xml,\
+               feature.properties
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/epl-v10.html b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties
similarity index 97%
copy from releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
copy to releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties
index 4bd9606..8a2ebd6 100644
--- a/releng/features/org.eclipse.ecf.discovery.local.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.properties
@@ -6,7 +6,7 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 ############################################################################
-featureName=ECF Discovery Local File Provider
+featureName=ECF Filetransfer Test Feature
 providerName=Eclipse.org - ECF
 
 # "licenseURL" property - URL of the "Feature License"
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.xml b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.xml
index 0c0561c..501199c 100644
--- a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/feature.xml
@@ -1,52 +1,68 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.tests.filetransfer.feature"
-      label="ECF Platform "
-      version="1.0.0.qualifier"
-      provider-name="Eclipse.org - ECF">
-
-   <description url="http://www.example.com/description">
-      [Enter Feature Description here.]
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
-      [Enter Copyright Description here.]
-   </copyright>
-
-   <license url="http://www.example.com/license">
-      [Enter License Description here.]
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.ecf.filetransfer.feature" version="3.0.0.qualifier"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.ecf.tests"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.apache.httpclient.server"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.filetransfer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.tests.filetransfer.httpserver"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
+<?xml version="1.0" encoding="UTF-8"?>

+<feature

+      id="org.eclipse.ecf.tests.filetransfer.feature"

+      label="ECF Platform "

+      version="1.0.0.qualifier"

+      provider-name="%providerName">

+

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

+      [Enter Feature Description here.]

+   </description>

+

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

+      [Enter Copyright Description here.]

+   </copyright>

+

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

+      [Enter License Description here.]

+   </license>

+

+   <requires>

+      <import feature="org.eclipse.ecf.filetransfer.feature" version="3.0.0.qualifier"/>

+   </requires>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.apache.httpclient.server"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.filetransfer"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

+         id="org.eclipse.ecf.tests.filetransfer.httpserver"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+   <plugin

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

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         fragment="true"

+         unpack="false"/>

+

+</feature>

diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/license.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.tests.filetransfer.feature/notice.html b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/notice.html
new file mode 100644
index 0000000..f19c483
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.tests.filetransfer.feature/notice.html
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/build.properties b/releng/features/org.eclipse.ecf.xmpp.feature/build.properties
index 64f93a9..a70d275 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/build.properties
@@ -1 +1,12 @@
-bin.includes = feature.xml
+bin.includes = feature.xml,\
+               license.html,\
+               notice.html,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties
+src.includes = notice.html,\
+               license.html,\
+               feature.xml,\
+               about.html,\
+               epl-v10.html,\
+               feature.properties
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/epl-v10.html b/releng/features/org.eclipse.ecf.xmpp.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/epl-v10.html
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties b/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties
index ca289ba..3f2be14 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
index dd5df6f..21e3c6a 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/feature.xml
@@ -1,56 +1,57 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.ecf.xmpp.feature"
-      label="ECF XMPP"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <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>
-
-   <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>
+<?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
+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>

+

+   <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/features/org.eclipse.ecf.xmpp.feature/license.html b/releng/features/org.eclipse.ecf.xmpp.feature/license.html
index c184ca3..f19c483 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/license.html
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/releng/features/org.eclipse.ecf.xmpp.feature/notice.html b/releng/features/org.eclipse.ecf.xmpp.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/releng/features/org.eclipse.ecf.xmpp.feature/notice.html
+++ b/releng/features/org.eclipse.ecf.xmpp.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
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..abe09e0
--- /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.5.v20120319-0616"/>
+<repository location="http://archive.eclipse.org/rt/ecf/3.5.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/ECF3-6Baseline.target b/releng/org.eclipse.ecf.releng.bm/ECF3-6Baseline.target
new file mode 100644
index 0000000..d01e766
--- /dev/null
+++ b/releng/org.eclipse.ecf.releng.bm/ECF3-6Baseline.target
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<?pde version="3.6"?>

+

+<target includeMode="feature" name="ECF3-6Baseline" sequenceNumber="1">

+<locations>

+<location includeAllPlatforms="false" includeMode="slicer" includeSource="false" type="InstallableUnit">

+<unit id="org.eclipse.ecf.core.feature.group" version="3.5.6.v20120610-1946"/>

+<repository location="http://download.eclipse.org/rt/ecf/3.5.6/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 27035ad..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/S20101014084557/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 5aa2e5d..8cadb6f 100644
--- a/releng/org.eclipse.ecf.releng.bm/ecf.rmap
+++ b/releng/org.eclipse.ecf.releng.bm/ecf.rmap
@@ -1,142 +1,124 @@
-<?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>
-
+<?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 searchPathRef="javax.jmdns" pattern="^javax\.jmdns$" />
+  <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.rsa"/>

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

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

+    <rm:provider componentTypes="osgi.bundle,eclipse.feature" source="false" mutable="false" 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.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>

 	<!-- javax.jmdns -->
-	<searchPath name="javax.jmdns">
-		<provider readerType="url" componentTypes="osgi.bundle" mutable="false" source="false">
-			<uri format="http://download.ecf-project.org/repo/UPSTREAM-C-HEAD-jmdns/lastSuccessful/javax.jmdns$jmdns/archive/javax.jmdns/jmdns/3.4.2-SNAPSHOT/jmdns-3.4.2-SNAPSHOT.jar"/>
-		</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>
-		<!-- 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$" />
-	
-	<locator searchPathRef="javax.jmdns" pattern="^javax\.jmdns$" />
-	
-	<!-- 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\.apache\.zookeeper$" />
-	
-	<!-- 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>
+	<rm:searchPath name="javax.jmdns">
+		<rm:provider readerType="url" componentTypes="osgi.bundle" mutable="false" source="false">
+			<rm:uri format="http://download.ecf-project.org/repo/UPSTREAM-C-HEAD-jmdns/lastSuccessful/javax.jmdns$jmdns/archive/javax.jmdns/jmdns/3.4.2-SNAPSHOT/jmdns-3.4.2-SNAPSHOT.jar"/>
+		</rm:provider>
+	</rm:searchPath>
+  <rm:searchPath name="default">

+    <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/R20120526062928/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/R20120119162704/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/releng/org.eclipse.ecf.releng/projectSet-anonymous.psf b/releng/org.eclipse.ecf.releng/projectSet-anonymous.psf
index 7c4cdbc..fa9d335 100644
--- a/releng/org.eclipse.ecf.releng/projectSet-anonymous.psf
+++ b/releng/org.eclipse.ecf.releng/projectSet-anonymous.psf
@@ -101,7 +101,6 @@
 	<!-- protocol support -->
 	<project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/ch.ethz.iks.r_osgi.remote,ch.ethz.iks.r_osgi.remote"/>
 	<project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/ch.ethz.iks.slp,ch.ethz.iks.slp"/>
-	<project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.apache.zookeeper,org.apache.zookeeper"/>
 	<project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.protocol.bittorrent"/>
 	<project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.eclipse.ecf.protocol.msn,org.eclipse.ecf.protocol.msn"/>
 	<project reference="1.0,:pserver:anonymous@dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.jivesoftware.smack,org.jivesoftware.smack"/>
diff --git a/releng/org.eclipse.ecf.releng/projectSet-extssh.psf b/releng/org.eclipse.ecf.releng/projectSet-extssh.psf
index d47ae8f..fe185f2 100644
--- a/releng/org.eclipse.ecf.releng/projectSet-extssh.psf
+++ b/releng/org.eclipse.ecf.releng/projectSet-extssh.psf
@@ -101,7 +101,6 @@
 	<!-- protocol support -->
 	<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/ch.ethz.iks.r_osgi.remote,ch.ethz.iks.r_osgi.remote"/>
 	<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/ch.ethz.iks.slp,ch.ethz.iks.slp"/>
-	<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.apache.zookeeper,org.apache.zookeeper"/>
 	<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.eclipse.ecf.protocol.bittorrent,org.eclipse.ecf.protocol.bittorrent"/>
 	<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.eclipse.ecf.protocol.msn,org.eclipse.ecf.protocol.msn"/>
 	<project reference="1.0,:extssh:dev.eclipse.org:/cvsroot/rt,org.eclipse.ecf/protocols/bundles/org.jivesoftware.smack,org.jivesoftware.smack"/>
diff --git a/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/.settings/.api_filters b/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/.settings/.api_filters
new file mode 100644
index 0000000..cc1f966
--- /dev/null
+++ b/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/.settings/.api_filters
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<component id="org.eclipse.ecf.remoteservice.eventadmin" version="2">

+    <resource path="src/org/eclipse/ecf/internal/remoteservice/eventadmin/LogTracker.java" type="org.eclipse.ecf.internal.remoteservice.eventadmin.LogTracker">

+        <filter id="574619656">

+            <message_arguments>

+                <message_argument value="LogService"/>

+                <message_argument value="LogTracker"/>

+            </message_arguments>

+        </filter>

+    </resource>

+</component>

diff --git a/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/META-INF/MANIFEST.MF b/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/META-INF/MANIFEST.MF
index 6608efd..46028e2 100644
--- a/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/META-INF/MANIFEST.MF
+++ b/server-side/bundles/org.eclipse.ecf.remoteservice.eventadmin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %bundleName
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.eventadmin
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.1.100.qualifier
 Bundle-Vendor: %bundleProvider
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
@@ -17,4 +17,4 @@
 Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.ecf
 Export-Package: org.eclipse.ecf.internal.remoteservice.eventadmin;x-internal:=true,
- org.eclipse.ecf.remoteservice.eventadmin
+ org.eclipse.ecf.remoteservice.eventadmin;version="1.1.100"
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/ServerManager.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java
index 77d629b..1c3a08f 100644
--- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java
+++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java
@@ -66,7 +66,7 @@
 	public ServerManager() {
 		final IExtensionRegistry reg = Activator.getDefault().getExtensionRegistry();
 		try {
-			if (reg != null) {
+			if (reg != null && reg.getExtensionPoint(EXTENSION_POINT) != null) {
 				createServersFromExtensionRegistry(reg);
 			} else {
 				createServersFromConfigurationFile(Activator.getDefault().getBundle().getEntry("server.xml").openStream()); //$NON-NLS-1$
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.remoteservices.server/META-INF/MANIFEST.MF b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/META-INF/MANIFEST.MF
index eb7da04..6bdc05d 100644
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/META-INF/MANIFEST.MF
+++ b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/META-INF/MANIFEST.MF
@@ -2,17 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.server;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 2.0.0.qualifier
 Bundle-Localization: plugin
-Bundle-Activator: org.eclipse.ecf.internal.examples.remoteservices.server.Activator
 Bundle-Vendor: %plugin.provider
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ecf.examples.remoteservices.common,
- org.eclipse.ecf,
- org.eclipse.ecf.discovery,
- org.eclipse.ecf.remoteservice
 Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
  J2SE-1.4
 Eclipse-LazyStart: true
-Export-Package: org.eclipse.ecf.internal.examples.remoteservices.server;x-friends:="org.eclipse.ecf.examples.remoteservices.server.transparent"
 Bundle-ActivationPolicy: lazy
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/build.properties b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/build.properties
index 521e3b5..ed973e7 100644
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/build.properties
+++ b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/build.properties
@@ -4,9 +4,8 @@
                .,\
                about.html,\
                plugin.properties,\
-               plugin.xml,\
-               launch/
+               readme.txt
 src.includes = about.html,\
-               launch/
+               readme.txt
 jre.compilation.profile = J2SE-1.4
 javacErrors.. = -assertIdentifier,-enumIdentifier
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/launch/Generic Remote EnvironmentInfo Server.launch b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/launch/Generic Remote EnvironmentInfo Server.launch
deleted file mode 100644
index 35865a7..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/launch/Generic Remote EnvironmentInfo Server.launch
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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/Generic Remote EnvironmentInfo Server"/>
-<booleanAttribute key="default_auto_start" value="false"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -consolelog -application org.eclipse.ecf.examples.remoteservices.server.remoteServicesServer -debug"/>
-<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=10427&#13;&#10;-Dch.ethz.iks.slp.debug=false&#13;&#10;-Dnet.slp.traceDATraffic=false&#13;&#10;-Dnet.slp.traceMsg=false&#13;&#10;-Dnet.slp.traceDrop=false&#13;&#10;-Dnet.slp.traceReg=false&#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"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="org.eclipse.core.runtime@default:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.apache.commons.logging@default:default,org.eclipse.equinox.app@default:default,javax.servlet@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.util@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.equinox.common@default:true,org.eclipse.core.jobs@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.osgi@:"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.ecf.provider@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf@default:default,ch.ethz.iks.slp@default:default,org.eclipse.ecf.provider.jslp@default:default,org.eclipse.ecf.examples.remoteservices.server@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.ssl@default:false"/>
-</launchConfiguration>
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/launch/r-OSGi Remote EnvironmentInfo Server.launch b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/launch/r-OSGi Remote EnvironmentInfo Server.launch
deleted file mode 100644
index c668433..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/launch/r-OSGi Remote EnvironmentInfo Server.launch
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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/r-OSGi Remote EnvironmentInfo 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.remoteservices.server.remoteServicesServer&#13;&#10;-serviceHostContainerType ecf.r_osgi.peer&#13;&#10;-serviceHostNamespace ecf.namespace.r_osgi&#13;&#10;-serviceHostID r-osgi://localhost:9278&#13;&#10;-clientContainerType ecf.r_osgi.peer&#13;&#10;-clientConnectTarget r-osgi://localhost:9278"/>
-<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"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="org.eclipse.core.commands@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.apache.commons.logging@default:default,org.eclipse.ui.ide@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.resources.compatibility@default:false,org.eclipse.core.resources.win32.x86*3.5.0.v20081020@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.help@default:default,org.eclipse.ui.workbench@default:default,com.ibm.icu@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ant.core@default:default,org.eclipse.ui.views@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.swt.win32.win32.x86*3.5.1.v3555a@default:false,org.eclipse.equinox.security.win32.x86*1.0.100.v20090520-1800@default:false,org.eclipse.ui.forms@default:default,org.eclipse.core.filesystem.win32.x86*1.1.0.v20080604-1400@default:false,org.eclipse.core.variables@default:default,org.eclipse.text@default:default,org.eclipse.core.runtime@default:true,org.eclipse.swt.win32.win32.x86*3.5.0.v3550a@default:false,org.eclipse.equinox.common@2:true,org.eclipse.equinox.registry@default:default,org.eclipse.core.expressions@default:default,org.eclipse.jface.text@default:default,org.eclipse.core.resources@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.equinox.app@default:true,org.eclipse.ui.win32*3.2.100.v20090429-1800@default:false,org.objectweb.asm@default:default,org.eclipse.ui.win32*3.2.100.v20090429-1800@default:false,org.eclipse.ui@default:default,org.eclipse.core.filesystem.win32.x86*1.1.0.v20080604-1400@default:false,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.jface@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.resources.win32.x86*3.5.0.v20081020@default:false,org.eclipse.equinox.security.win32.x86*1.0.100.v20090520-1800@default:false,org.eclipse.swt@default:default,org.eclipse.osgi.util@default:default,javax.servlet@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.osgi,org.eclipse.core.jobs@default:default"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.ecf.provider.jmdns@default:true,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.filetransfer@default:default,ch.ethz.iks.r_osgi.remote@default:default,org.eclipse.emf.common@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.remoteservice.ui@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.examples.remoteservices.server@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.provider.discovery@default:true,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.eclipse.emf.common.ui@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.r_osgi@default:true,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.equinox.concurrent@default:default"/>
-</launchConfiguration>
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/plugin.xml b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/plugin.xml
deleted file mode 100644
index 1300a58..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/plugin.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
-   <extension id="remoteServicesServer"  point="org.eclipse.core.runtime.applications">
-      <application cardinality="*" thread="any" visible="true">
-         <run class="org.eclipse.ecf.internal.examples.remoteservices.server.DiscoverableServer"/>
-      </application>
-   </extension>
-
-</plugin>
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/readme.txt b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/readme.txt
new file mode 100644
index 0000000..687b6b6
--- /dev/null
+++ b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/readme.txt
@@ -0,0 +1,2 @@
+This example has been deprecated, as with new OSGi 4.2

+remote services spec this example is not useful.
\ No newline at end of file
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/Activator.java b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/Activator.java
deleted file mode 100644
index ec6d296..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/Activator.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2008 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.remoteservices.server;
-
-import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
-import org.eclipse.osgi.service.environment.EnvironmentInfo;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator implements BundleActivator {
-
-	// The shared instance
-	private static Activator plugin;
-
-	private BundleContext context;
-
-	private ServiceTracker environmentInfoTracker;
-
-	private ServiceTracker discoveryTracker;
-
-	private Filter filter;
-
-	//private DiscoverableServer discoverableServer;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-		// nothing
-	}
-
-	public EnvironmentInfo getEnvironmentInfo() {
-		if (environmentInfoTracker == null) {
-			environmentInfoTracker = new ServiceTracker(context, org.eclipse.osgi.service.environment.EnvironmentInfo.class.getName(), null);
-			environmentInfoTracker.open();
-		}
-		return (EnvironmentInfo) environmentInfoTracker.getService();
-	}
-
-	public IDiscoveryAdvertiser getDiscoveryService(int waittime) throws InterruptedException {
-		if (discoveryTracker == null) {
-			discoveryTracker = new ServiceTracker(context, filter, null);
-			discoveryTracker.open();
-		}
-		return (IDiscoveryAdvertiser) discoveryTracker.waitForService(waittime);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext ctxt) throws Exception {
-		plugin = this;
-		this.context = ctxt;
-		filter = context.createFilter("(&(" + Constants.OBJECTCLASS + "=" + IDiscoveryAdvertiser.class.getName() + ")(" + IDiscoveryAdvertiser.CONTAINER_NAME + "=ecf.discovery.composite))"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-
-		// create and start discoverable server
-		//discoverableServer = new DiscoverableServer();
-		//String[] args = {};
-		//discoverableServer.start(args);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext ctxt) throws Exception {
-		plugin = null;
-		if (environmentInfoTracker != null) {
-			environmentInfoTracker.close();
-			environmentInfoTracker = null;
-		}
-		if (discoveryTracker != null) {
-			discoveryTracker.close();
-			discoveryTracker = null;
-		}
-		this.context = null;
-		//if (discoverableServer != null)
-		//	discoverableServer.stop();
-	}
-
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/DiscoverableServer.java b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/DiscoverableServer.java
deleted file mode 100644
index 57bfbba..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/DiscoverableServer.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2008 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.remoteservices.server;
-
-import java.net.URI;
-import java.util.Properties;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.ecf.core.*;
-import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.discovery.*;
-import org.eclipse.ecf.discovery.identity.IServiceTypeID;
-import org.eclipse.ecf.discovery.identity.ServiceIDFactory;
-import org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo;
-import org.eclipse.ecf.remoteservice.Constants;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.app.IApplicationContext;
-
-/**
- *
- */
-public class DiscoverableServer implements IApplication {
-
-	public static final String serviceHostContainerTypeArg = "-serviceHostContainerType"; //$NON-NLS-1$
-	public static final String serviceHostNamespaceArg = "-serviceHostNamespace"; //$NON-NLS-1$
-	public static final String serviceHostIDArg = "-serviceHostID"; //$NON-NLS-1$
-	public static final String clientContainerTypeArg = "-clientContainerType"; //$NON-NLS-1$
-	public static final String clientConnectTargetArg = "-clientConnectTarget"; //$NON-NLS-1$
-	public static final String serviceTypeArg = "-serviceType"; //$NON-NLS-1$
-
-	// Argument variables
-	private String serviceHostContainerType = "ecf.generic.server"; //$NON-NLS-1$
-	private String serviceHostNamespace = StringID.class.getName();
-	private String serviceHostID = "ecftcp://localhost:3285/server"; //$NON-NLS-1$
-	private String clientContainerType = "ecf.generic.client"; //$NON-NLS-1$
-	private String clientConnectTarget = "ecftcp://localhost:3285/server"; //$NON-NLS-1$
-	private String serviceType = "remotesvcs"; //$NON-NLS-1$
-
-	private IContainer serviceHostContainer;
-
-	private IServiceInfo serviceInfo;
-
-	private IDiscoveryAdvertiser discoveryService;
-
-	private boolean done = false;
-
-	protected IContainer createServiceHostContainer() throws IDCreateException, ContainerCreateException {
-		return ContainerFactory.getDefault().createContainer(serviceHostContainerType, IDFactory.getDefault().createID(serviceHostNamespace, serviceHostID));
-	}
-
-	protected Properties createServiceDiscoveryProperties() {
-		Properties props = new Properties();
-		props.put(Constants.SERVICE_CONTAINER_ID, serviceHostContainer.getID());
-		props.put(Constants.SERVICE_CONTAINER_FACTORY_NAME, serviceHostContainerType);
-		// Add auto registration of remote proxy
-		props.put(Constants.AUTOREGISTER_REMOTE_PROXY, "true"); //$NON-NLS-1$
-		return props;
-	}
-
-	public void start(String[] args) throws Exception {
-		initializeFromArguments(args);
-		// Create service host container
-		serviceHostContainer = createServiceHostContainer();
-		// Get adapter from serviceHostContainer
-		final IRemoteServiceContainerAdapter containerAdapter = (IRemoteServiceContainerAdapter) serviceHostContainer.getAdapter(IRemoteServiceContainerAdapter.class);
-		Assert.isNotNull(containerAdapter);
-
-		final String serviceClassName = IRemoteEnvironmentInfo.class.getName();
-
-		// register IRemoteEnvironmentInfo service
-		// Then actually register the remote service implementation, with created props
-		containerAdapter.registerRemoteService(new String[] {serviceClassName}, new RemoteEnvironmentInfoImpl(), createServiceDiscoveryProperties());
-		System.out.println("Registered remote service " + serviceClassName + " with " + serviceHostContainer + ",ID=" + serviceHostContainer.getID()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		// then register for discovery
-		discoveryService = Activator.getDefault().getDiscoveryService(15000);
-
-		Assert.isNotNull(discoveryService);
-
-		final String serviceName = System.getProperty("user.name") + System.currentTimeMillis(); //$NON-NLS-1$
-		final IServiceTypeID serviceID = ServiceIDFactory.getDefault().createServiceTypeID(discoveryService.getServicesNamespace(), new String[] {serviceType});
-		final Properties serviceProperties = createServicePropertiesForDiscovery(serviceClassName);
-		URI uri = new URI(serviceHostID);
-		serviceInfo = new ServiceInfo(uri, serviceName, serviceID, 0, 0, new ServiceProperties(serviceProperties));
-		// register discovery here
-		discoveryService.registerService(serviceInfo);
-		System.out.println("service published for discovery\n\tserviceName=" + serviceName + "\n\tserviceTypeID=" + serviceID); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("\tserviceProperties=" + serviceProperties); //$NON-NLS-1$
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
-	 */
-	public Object start(IApplicationContext ctxt) throws Exception {
-		// Actually start with application args
-		start((String[]) ctxt.getArguments().get("application.args")); //$NON-NLS-1$
-		// wait on this thread until done
-		synchronized (this) {
-			while (!done) {
-				wait();
-			}
-		}
-		return new Integer(0);
-	}
-
-	protected Properties createServicePropertiesForDiscovery(String className) {
-		return new DiscoveryProperties(className, clientContainerType, serviceHostNamespace, clientConnectTarget, null, null);
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.equinox.app.IApplication#stop()
-	 */
-	public void stop() {
-		if (serviceInfo != null) {
-			if (discoveryService != null) {
-				discoveryService.unregisterService(serviceInfo);
-				serviceInfo = null;
-				final IContainer container = (IContainer) discoveryService.getAdapter(IContainer.class);
-				if (container != null) {
-					container.disconnect();
-				}
-				discoveryService = null;
-			}
-		}
-		if (serviceHostContainer != null) {
-			serviceHostContainer.disconnect();
-			serviceHostContainer = null;
-		}
-		synchronized (this) {
-			done = true;
-			notifyAll();
-		}
-
-	}
-
-	private void initializeFromArguments(String[] args) throws Exception {
-		if (args == null)
-			return;
-		for (int i = 0; i < args.length; i++) {
-			if (args[i].equalsIgnoreCase(serviceHostContainerTypeArg))
-				serviceHostContainerType = args[++i];
-			else if (args[i].equalsIgnoreCase(serviceHostNamespaceArg))
-				serviceHostNamespace = args[++i];
-			else if (args[i].equalsIgnoreCase(serviceHostIDArg))
-				serviceHostID = args[++i];
-			else if (args[i].equalsIgnoreCase(clientContainerTypeArg))
-				clientContainerType = args[++i];
-			else if (args[i].equalsIgnoreCase(clientConnectTargetArg))
-				clientConnectTarget = args[++i];
-			else if (args[i].equalsIgnoreCase(serviceTypeArg))
-				serviceType = args[++i];
-			else {
-				usage();
-				throw new IllegalArgumentException("Invalid argument"); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * 
-	 */
-	private void usage() {
-		System.out.println("usage: eclipse -console [options] -application org.eclipse.ecf.examples.remoteservices.server.remoteServicesServer"); //$NON-NLS-1$
-		System.out.println("   options: [" + serviceHostContainerTypeArg + " <typename>] default=ecf.generic.server"); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("            [" + serviceHostNamespaceArg + " <namespacename>] default=org.eclipse.ecf.identity.StringID"); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("            [" + serviceHostIDArg + " <hostID>] default=ecftcp://localhost:3285/server"); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("            [" + clientContainerTypeArg + " <typename>] default=ecf.generic.client"); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("            [" + clientConnectTargetArg + " <target>] default=ecftcp://localhost:3285/server"); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("            [" + serviceTypeArg + " <serviceType>] default=remotesvcs"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-}
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/DiscoveryProperties.java b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/DiscoveryProperties.java
deleted file mode 100644
index b687178..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/DiscoveryProperties.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.ecf.internal.examples.remoteservices.server;

-

-import java.util.Properties;

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

-import org.eclipse.ecf.core.IContainer;

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

-import org.eclipse.ecf.remoteservice.Constants;

-

-public class DiscoveryProperties extends Properties {

-

-	private static final long serialVersionUID = -6293580853756989675L;

-

-	public DiscoveryProperties(String clazz, String containerFactory, IContainer container) {

-		Assert.isNotNull(container);

-		Assert.isNotNull(clazz);

-		ID connectedID = container.getConnectedID();

-		String connectNamespace = (connectedID == null) ? container.getConnectNamespace().getName() : connectedID.getNamespace().getName();

-		String connectID = (connectedID == null) ? null : connectedID.getName();

-		ID containerID = container.getID();

-		String targetNamespace = (containerID == null) ? null : containerID.getNamespace().getName();

-		String targetID = (containerID == null) ? null : containerID.getName();

-		put(Constants.SERVICE_OBJECTCLASS, clazz);

-		Assert.isNotNull(containerFactory);

-		put(Constants.SERVICE_CONTAINER_FACTORY_NAME, containerFactory);

-		if (connectNamespace != null)

-			put(Constants.SERVICE_CONNECT_ID_NAMESPACE, connectNamespace);

-		if (connectID != null)

-			put(Constants.SERVICE_CONNECT_ID, connectID);

-		if (targetNamespace != null)

-			put(Constants.SERVICE_IDFILTER_NAMESPACE, targetNamespace);

-		if (targetID != null)

-			put(Constants.SERVICE_IDFILTER_ID, targetID);

-	}

-

-	public DiscoveryProperties(String clazz, String containerFactory, String connectNamespace, String connectID, String targetNamespace, String targetID) {

-		Assert.isNotNull(clazz);

-		put(Constants.SERVICE_OBJECTCLASS, clazz);

-		Assert.isNotNull(containerFactory);

-		put(Constants.SERVICE_CONTAINER_FACTORY_NAME, containerFactory);

-		if (connectNamespace != null)

-			put(Constants.SERVICE_CONNECT_ID_NAMESPACE, connectNamespace);

-		if (connectID != null)

-			put(Constants.SERVICE_CONNECT_ID, connectID);

-		if (targetNamespace != null)

-			put(Constants.SERVICE_IDFILTER_NAMESPACE, targetNamespace);

-		if (targetID != null)

-			put(Constants.SERVICE_IDFILTER_ID, targetID);

-	}

-}
\ No newline at end of file
diff --git a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/RemoteEnvironmentInfoImpl.java b/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/RemoteEnvironmentInfoImpl.java
deleted file mode 100644
index 7aa347c..0000000
--- a/server-side/examples/bundles/org.eclipse.ecf.examples.remoteservices.server/src/org/eclipse/ecf/internal/examples/remoteservices/server/RemoteEnvironmentInfoImpl.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2008 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.remoteservices.server;
-
-import org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo;
-import org.eclipse.osgi.service.environment.EnvironmentInfo;
-
-/**
- *
- */
-public class RemoteEnvironmentInfoImpl implements IRemoteEnvironmentInfo {
-
-	private EnvironmentInfo getEnvironmentInfo() {
-		return Activator.getDefault().getEnvironmentInfo();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getCommandLineArgs()
-	 */
-	public String[] getCommandLineArgs() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getCommandLineArgs()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getCommandLineArgs();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getFrameworkArgs()
-	 */
-	public String[] getFrameworkArgs() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getFrameworkArgs()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getFrameworkArgs();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getNL()
-	 */
-	public String getNL() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getNL()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getNL();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getNonFrameworkArgs()
-	 */
-	public String[] getNonFrameworkArgs() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getNonFrameworkArgs()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getNonFrameworkArgs();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getOS()
-	 */
-	public String getOS() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getOS()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getOS();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getOSArch()
-	 */
-	public String getOSArch() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getOSArch()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getOSArch();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#getWS()
-	 */
-	public String getWS() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("getWS()"); //$NON-NLS-1$
-		return (ei == null) ? null : ei.getWS();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#inDebugMode()
-	 */
-	public Boolean inDebugMode() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("inDebugMode()"); //$NON-NLS-1$
-		return (ei == null) ? null : new Boolean(ei.inDebugMode());
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.examples.remoteservices.common.IRemoteEnvironmentInfo#inDevelopmentMode()
-	 */
-	public Boolean inDevelopmentMode() {
-		final EnvironmentInfo ei = getEnvironmentInfo();
-		System.out.println("inDevelopmentMode()"); //$NON-NLS-1$
-		return (ei == null) ? null : new Boolean(ei.inDevelopmentMode());
-	}
-
-}
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/epl-v10.html b/server-side/features/org.eclipse.ecf.server.generic.feature/epl-v10.html
index 9e4b628..fd39122 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/epl-v10.html
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/epl-v10.html
@@ -27,7 +27,7 @@
 
 <body lang="EN-US">
 
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
+<h2>Eclipse Public License - v 1.0</h2>
 
 <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
 PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
@@ -41,7 +41,6 @@
 <p class="list">a) in the case of the initial Contributor, the initial
 code and documentation distributed under this Agreement, and</p>
 <p class="list">b) in the case of each subsequent Contributor:</p>
-
 <p class="list">i) changes to the Program, and</p>
 <p class="list">ii) additions to the Program;</p>
 <p class="list">where such changes and/or additions to the Program
diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties
index 0892e9e..4d841b9 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/feature.properties
@@ -17,7 +17,7 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
+February 1, 2011\n\
 \n\
 Usage Of Content\n\
 \n\
@@ -86,6 +86,7 @@
 TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
 SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
 \n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
        - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
        - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
        - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
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/server-side/features/org.eclipse.ecf.server.generic.feature/license.html b/server-side/features/org.eclipse.ecf.server.generic.feature/license.html
index c184ca3..f19c483 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/license.html
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/license.html
@@ -8,7 +8,7 @@
 
 <body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -58,6 +58,7 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
        <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
        <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
        <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
diff --git a/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html b/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html
index 5ad00ba..f19c483 100644
--- a/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html
+++ b/server-side/features/org.eclipse.ecf.server.generic.feature/notice.html
@@ -1,13 +1,14 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse.org Software User Agreement</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
 </head>
 
-<body lang="EN-US" link=blue vlink=purple>
+<body lang="EN-US">
 <h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
+<p>February 1, 2011</p>
 
 <h3>Usage Of Content</h3>
 
@@ -17,41 +18,37 @@
    OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
    NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
    CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
+
+<h3>Applicable Licenses</h3>
+
 <p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also 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>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
 <ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
       and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
 
-</ul>   
- 
 <p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
 Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
 including, but not limited to the following locations:</p>
 
 <ul>
-	<li>The top-level (root) directory</li>
-
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
 </ul>
-		
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
 installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
 inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
 Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
@@ -61,26 +58,51 @@
 OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
 
 <ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
 </ul>
 
 <p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
 contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
 
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
 <h3>Cryptography</h3>
 
 <p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
    another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
    possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
 
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
 </body>
 </html>
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/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 212470b..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.remote-extender/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/l10n/bundle.properties,\
-               about.html
-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.distribution.localdiscovery/.classpath b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.classpath
similarity index 99%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.classpath
index 64c5e31..2d1a430 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.project
similarity index 90%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.project
index 1acd148..e66409b 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.project
@@ -1,28 +1,28 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.tests.filetransfer.httpclient</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.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
copy from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs
index 122a97b..44217f8 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,7 @@
-#Mon Oct 11 08:19:28 MSD 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+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/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.settings/org.eclipse.pde.core.prefs
similarity index 74%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..b7e72d0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,3 @@
-#Tue May 04 19:23:54 PDT 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
+eclipse.preferences.version=1

+pluginProject.extensions=false

+resolve.requirebundle=false

diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8a6ab8d
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF Httpclient Provider Tests
+Bundle-SymbolicName: org.eclipse.ecf.tests.filetransfer.httpclient
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.junit;bundle-version="4.10.0",
+ org.eclipse.ecf.provider.filetransfer.httpclient;bundle-version="4.0.200",
+ org.apache.commons.httpclient;bundle-version="3.1.0",
+ org.eclipse.ecf.filetransfer;bundle-version="5.0.0",
+ org.eclipse.ecf.provider.filetransfer;bundle-version="3.2.0",
+ org.eclipse.ecf;bundle-version="3.1.300",
+ org.eclipse.equinox.common;bundle-version="3.6.100"
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/build.properties
similarity index 68%
copy from tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/build.properties
index 3f4964b..41eb6ad 100644
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/build.properties
@@ -1,5 +1,4 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
-jre.compilation.profile = J2SE-1.4
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .

diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/src/org/eclipse/ecf/tests/filetransfer/httpclient/HttpClientGetPortFromURLTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/src/org/eclipse/ecf/tests/filetransfer/httpclient/HttpClientGetPortFromURLTest.java
new file mode 100644
index 0000000..ae2edf5
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient/src/org/eclipse/ecf/tests/filetransfer/httpclient/HttpClientGetPortFromURLTest.java
@@ -0,0 +1,77 @@
+package org.eclipse.ecf.tests.filetransfer.httpclient;

+

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

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

+

+import junit.framework.TestCase;

+

+public class HttpClientGetPortFromURLTest extends TestCase {

+

+	public static class HttpClientRetrieveTest extends HttpClientRetrieveFileTransfer {

+

+		public HttpClientRetrieveTest(HttpClient client) {

+			super(client);

+		}

+		

+		public static int getPortFromURLTest(String url) {

+			return getPortFromURL(url);

+		}

+	}

+	

+	public void testHttp() {

+		int port;

+		String url = "http://www.test.com";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(80, port);

+	}

+

+	public void testHttpWithPort() {

+		int port;

+		String url = "http://www.test.com:80/";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(80, port);

+	}

+

+	public void testHttps() {

+		int port;

+		String url = "https://www.test.com/";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+	public void testHttpsPortNOK() {

+		int port;

+		String url = "https://www.test.com:440/";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertFalse(443 == port);

+	}

+

+	public void testHttpWithSearchpart() {

+		int port;

+		String url = "https://www.test.com/test?value=yes";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+	public void testHttpWithCredentialsAndSearchpart() {

+		int port;

+		String url = "https://testuser:testpasswd@www.test.com/test?value=yes";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+	public void testHttpWithCredentialsPortSearchpart() {

+		int port;

+		String url = "http://testuser:testpasswd@www.test.com:8080/test?value=yes";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(8080, port);

+	}

+

+	public void testHttpWithCredentialsPortLongPath() {

+		int port;

+		String url = "https://testuser:testpasswd@host.domain.eu:443/pu/fisgui/svn/repository/fisgui/source-internal/trunk/target-platform/fisgui-5.8.1/content.xml";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.classpath
similarity index 99%
copy from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.classpath
index 64c5e31..2d1a430 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery/.classpath
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.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/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.project
similarity index 90%
copy from compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.project
index 1acd148..ea8cbec 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.discovery.local/.project
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.project
@@ -1,28 +1,28 @@
-<?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>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.ecf.tests.filetransfer.httpclient4</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.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.settings/org.eclipse.jdt.core.prefs
similarity index 91%
copy from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.settings/org.eclipse.jdt.core.prefs
index 122a97b..44217f8 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,7 @@
-#Mon Oct 11 08:19:28 MSD 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+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/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.settings/org.eclipse.pde.core.prefs
similarity index 74%
copy from tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.settings/org.eclipse.pde.core.prefs
index 7fe8cfc..b7e72d0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.pde.core.prefs
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/.settings/org.eclipse.pde.core.prefs
@@ -1,4 +1,3 @@
-#Tue May 04 19:23:54 PDT 2010
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
+eclipse.preferences.version=1

+pluginProject.extensions=false

+resolve.requirebundle=false

diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7766a35
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF Httpclient4 Provider Tests
+Bundle-SymbolicName: org.eclipse.ecf.tests.filetransfer.httpclient4
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.100",
+ org.eclipse.ecf;bundle-version="3.1.300",
+ org.eclipse.ecf.filetransfer;bundle-version="5.0.0",
+ org.eclipse.ecf.provider.filetransfer;bundle-version="3.2.0",
+ org.junit;bundle-version="4.10.0",
+ org.eclipse.ecf.provider.filetransfer.httpclient4;bundle-version="1.0.100",
+ org.apache.httpcomponents.httpclient;bundle-version="4.1.2"
+Import-Package: org.apache.commons.httpclient
diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/build.properties
similarity index 68%
copy from tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
copy to tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/build.properties
index 3f4964b..41eb6ad 100644
--- a/tests/bundles/org.eclipse.ecf.tests.discovery.all/build.properties
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/build.properties
@@ -1,5 +1,4 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .
-jre.compilation.profile = J2SE-1.4
+source.. = src/

+output.. = bin/

+bin.includes = META-INF/,\

+               .

diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/src/org/eclipse/ecf/tests/filetransfer/httpclient4/HttpClientGetPortFromURLTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/src/org/eclipse/ecf/tests/filetransfer/httpclient4/HttpClientGetPortFromURLTest.java
new file mode 100644
index 0000000..03c597c
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.httpclient4/src/org/eclipse/ecf/tests/filetransfer/httpclient4/HttpClientGetPortFromURLTest.java
@@ -0,0 +1,77 @@
+package org.eclipse.ecf.tests.filetransfer.httpclient4;

+

+import org.apache.http.impl.client.DefaultHttpClient;

+import org.eclipse.ecf.provider.filetransfer.httpclient4.HttpClientRetrieveFileTransfer;

+

+import junit.framework.TestCase;

+

+public class HttpClientGetPortFromURLTest extends TestCase {

+

+	public static class HttpClientRetrieveTest extends HttpClientRetrieveFileTransfer {

+

+		public HttpClientRetrieveTest(DefaultHttpClient httpClient) {

+			super(httpClient);

+		}

+

+		public static int getPortFromURLTest(String url) {

+			return getPortFromURL(url);

+		}

+	}

+	

+	public void testHttp() {

+		int port;

+		String url = "http://www.test.com";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(80, port);

+	}

+

+	public void testHttpWithPort() {

+		int port;

+		String url = "http://www.test.com:80/";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(80, port);

+	}

+

+	public void testHttps() {

+		int port;

+		String url = "https://www.test.com/";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+	public void testHttpsPortNOK() {

+		int port;

+		String url = "https://www.test.com:440/";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertFalse(443 == port);

+	}

+

+	public void testHttpWithSearchpart() {

+		int port;

+		String url = "https://www.test.com/test?value=yes";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+	public void testHttpWithCredentialsAndSearchpart() {

+		int port;

+		String url = "https://testuser:testpasswd@www.test.com/test?value=yes";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+	public void testHttpWithCredentialsPortSearchpart() {

+		int port;

+		String url = "http://testuser:testpasswd@www.test.com:8080/test?value=yes";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(8080, port);

+	}

+

+	public void testHttpWithCredentialsPortLongPath() {

+		int port;

+		String url = "https://testuser:testpasswd@host.domain.eu:443/pu/fisgui/svn/repository/fisgui/source-internal/trunk/target-platform/fisgui-5.8.1/content.xml";

+		port = HttpClientRetrieveTest.getPortFromURLTest(url);

+		assertEquals(443, port);

+	}

+

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer.jreprovider/build.properties b/tests/bundles/org.eclipse.ecf.tests.filetransfer.jreprovider/build.properties
index 34d2e4d..75925d0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer.jreprovider/build.properties
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer.jreprovider/build.properties
@@ -2,3 +2,4 @@
 output.. = bin/
 bin.includes = META-INF/,\
                .
+additional.bundles = org.eclipse.ecf.filetransfer
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/.settings/.api_filters b/tests/bundles/org.eclipse.ecf.tests.filetransfer/.settings/.api_filters
index 2c678f7..25530c7 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/.settings/.api_filters
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/.settings/.api_filters
@@ -1,21 +1,29 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.ecf.tests.filetransfer" version="2">
-    <resource path="src/org/eclipse/ecf/tests/filetransfer/Activator.java" type="org.eclipse.ecf.tests.filetransfer.Activator">
-        <filter comment="protocol mapper is provisional so marked as internal" id="643842064">
-            <message_arguments>
-                <message_argument value="IFileTransferProtocolToFactoryMapper"/>
-                <message_argument value="Activator"/>
-                <message_argument value="getProtocolToFactoryMapper()"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="src/org/eclipse/ecf/tests/filetransfer/URIProtocolFactoryRetrieveTest.java" type="org.eclipse.ecf.tests.filetransfer.URIProtocolFactoryRetrieveTest">
-        <filter comment="protocol factory mapper is provisional" id="643842064">
-            <message_arguments>
-                <message_argument value="IFileTransferProtocolToFactoryMapper"/>
-                <message_argument value="URIProtocolFactoryRetrieveTest"/>
-                <message_argument value="getProtocolToFactoryMapper()"/>
-            </message_arguments>
-        </filter>
-    </resource>
-</component>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<component id="org.eclipse.ecf.tests.filetransfer" version="2">

+    <resource path="src/org/eclipse/ecf/tests/filetransfer/AbstractRetrieveTestCase.java" type="org.eclipse.ecf.tests.filetransfer.AbstractRetrieveTestCase">

+        <filter comment="test code" id="574619656">

+            <message_arguments>

+                <message_argument value="IProxyData"/>

+                <message_argument value="AbstractRetrieveTestCase"/>

+            </message_arguments>

+        </filter>

+    </resource>

+    <resource path="src/org/eclipse/ecf/tests/filetransfer/Activator.java" type="org.eclipse.ecf.tests.filetransfer.Activator">

+        <filter comment="protocol mapper is provisional so marked as internal" id="643842064">

+            <message_arguments>

+                <message_argument value="IFileTransferProtocolToFactoryMapper"/>

+                <message_argument value="Activator"/>

+                <message_argument value="getProtocolToFactoryMapper()"/>

+            </message_arguments>

+        </filter>

+    </resource>

+    <resource path="src/org/eclipse/ecf/tests/filetransfer/URIProtocolFactoryRetrieveTest.java" type="org.eclipse.ecf.tests.filetransfer.URIProtocolFactoryRetrieveTest">

+        <filter comment="protocol factory mapper is provisional" id="643842064">

+            <message_arguments>

+                <message_argument value="IFileTransferProtocolToFactoryMapper"/>

+                <message_argument value="URIProtocolFactoryRetrieveTest"/>

+                <message_argument value="getProtocolToFactoryMapper()"/>

+            </message_arguments>

+        </filter>

+    </resource>

+</component>

diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient.launch
index 370556f..4e68bbc 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient.launch
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient.launch
@@ -1,515 +1,515 @@
-<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>
-<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/ECF Example Collab 1"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>
-</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.filetransfer"/>
-<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.MAIN_TYPE" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>
-<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.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.expressions@default:default,org.hamcrest.core@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.help@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,com.ibm.icu@default:default,org.eclipse.jface.text@default:default,org.eclipse.osgi.services@default:default,org.apache.commons.httpclient@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.jface@default:default,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.equinox.app@default:default,org.eclipse.ui.win32@default:false,org.eclipse.text@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.security@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,org.apache.commons.logging@default:default,org.eclipse.core.resources@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.common@2:true,org.apache.commons.codec@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.core.commands@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.net.win32.x86@default:false,org.springframework.osgi.log4j.osgi@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.jobs@default:default,org.eclipse.swt@default:default,org.eclipse.core.databinding@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.databinding.property@default:default,org.eclipse.core.variables@default:default,org.eclipse.ui.ide@default:default,org.eclipse.osgi@-1:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.preferences@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="true"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<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/ECF Example Collab 1"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

+<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.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/ECF Filetransfer Tests- Httpclient4 - No Proxy API.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient4 - No Proxy API.launch
new file mode 100644
index 0000000..ecaff2a
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient4 - No Proxy API.launch
@@ -0,0 +1,515 @@
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<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/ECF Example Collab 1"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

+<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.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.apache.commons.logging@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.transforms.hook@default:default"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/ECF Filetransfer Tests- Httpclient4.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient4.launch
new file mode 100644
index 0000000..5c6db4e
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- Httpclient4.launch
@@ -0,0 +1,515 @@
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<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/ECF Example Collab 1"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

+<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.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.apache.commons.logging@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient4@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.transforms.hook@default:false"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/ECF Filetransfer Tests- URLConnection - No Proxy API.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- URLConnection - No Proxy API.launch
index e886c08..11f67df 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- URLConnection - No Proxy API.launch
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- URLConnection - No Proxy API.launch
@@ -1,515 +1,515 @@
-<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>
-<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/ECF Example Collab 1"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>
-</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.filetransfer"/>
-<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.MAIN_TYPE" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>
-<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.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.expressions@default:default,org.hamcrest.core@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.help@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,com.ibm.icu@default:default,org.eclipse.jface.text@default:default,org.eclipse.osgi.services@default:default,org.apache.commons.httpclient@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.jface@default:default,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.equinox.app@default:default,org.eclipse.ui.win32@default:false,org.eclipse.text@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.security@default:default,org.eclipse.core.resources.win32.x86@default:false,org.apache.commons.logging@default:default,org.eclipse.core.resources@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.common@2:true,org.apache.commons.codec@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.core.commands@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.core.filesystem@default:default,org.springframework.osgi.log4j.osgi@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.jobs@default:default,org.eclipse.swt@default:default,org.eclipse.core.databinding@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.databinding.property@default:default,org.eclipse.core.variables@default:default,org.eclipse.ui.ide@default:default,org.eclipse.osgi@-1:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.preferences@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="true"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<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/ECF Example Collab 1"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

+<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.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.eclipse.ecf.tests.filetransfer.cancelSupportedOnConnect=false"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent*1.0.200.v20110502@default:default,org.eclipse.equinox.concurrent*1.0.200.v20111010-1614@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/ECF Filetransfer Tests- URLConnection.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- URLConnection.launch
index 80ab019..ad0e450 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- URLConnection.launch
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/ECF Filetransfer Tests- URLConnection.launch
@@ -1,515 +1,515 @@
-<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>
-<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/ECF Example Collab 1"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>
-</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.filetransfer"/>
-<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.MAIN_TYPE" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>
-<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.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.expressions@default:default,org.hamcrest.core@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.help@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,com.ibm.icu@default:default,org.eclipse.jface.text@default:default,org.eclipse.osgi.services@default:default,org.apache.commons.httpclient@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.jface@default:default,org.junit*4.8.1.v4_8_1_v20100114-1600@default:default,org.eclipse.equinox.app@default:default,org.eclipse.ui.win32@default:false,org.eclipse.text@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.security@default:default,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,org.apache.commons.logging@default:default,org.eclipse.core.resources@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.common@2:true,org.apache.commons.codec@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.core.commands@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.net.win32.x86@default:false,org.springframework.osgi.log4j.osgi@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.jobs@default:default,org.eclipse.swt@default:default,org.eclipse.core.databinding@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.databinding.property@default:default,org.eclipse.core.variables@default:default,org.eclipse.ui.ide@default:default,org.eclipse.osgi@-1:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.equinox.preferences@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="true"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="false"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<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/ECF Example Collab 1"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

+<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.MAIN_TYPE" value=""/>

+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.eclipse.ecf.tests.filetransfer.cancelSupportedOnConnect=false"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.filetransfer/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
index 7eba3f4..497257d
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.tests.filetransfer;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
 Bundle-Activator: org.eclipse.ecf.tests.filetransfer.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.httpclient.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.httpclient.launch
new file mode 100644
index 0000000..4ee25ba
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.httpclient.launch
@@ -0,0 +1,591 @@
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<stringAttribute key="bootstrap" value=""/>

+<stringAttribute key="checked" value="org.eclipse.ecf.provider.filetransfer.httpclient4"/>

+<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/org.eclipse.ecf.tests.filetransfer"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-tests"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

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

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

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000&#13;&#10;-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true &#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent*1.0.200.v20110502@default:default,org.eclipse.equinox.concurrent*1.0.200.v20111010-1614@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit*4.8.2.v4_8_2_v20110321-1705@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.transforms.hook@default:false"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/debug/TypeExtensionManager" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/breadcrumb" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/breakpointDeltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/presentationId" value=""/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/containerfinder" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/discoveredservicetracker" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/eventhook" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/containerselector" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionadvertiser" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionlocator" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionreader" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/metadatafactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/packageversioncomparator" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/remoteserviceadmin" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/topologymanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/trace" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/trace/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/trace/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.egit.core/debug" value="false"/>

+<mapEntry key="org.eclipse.egit.core/debug/core" value="false"/>

+<mapEntry key="org.eclipse.egit.core/debug/core/indexdiffcache" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/quickdiff" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/repochangescanner" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui/decoration" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui/historyview" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui/repositoriesview" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/instantiate_all" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/unsigned" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/untrusted" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/engine/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/enginesession/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/profileregistry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.debug/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations/callingThreads" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/jdiEvents" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/jdiRequestTimes" value="false"/>

+<mapEntry key="org.eclipse.jdt.launching/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.launching/debug/classpath/jreContainer" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/objectPool/adds" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/objectPool/dups" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/cachedmanifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apianalyzer" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apidescription" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apifilterstore" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apiprofile" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/classfilevisitor" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/delta" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/descriptor/framework" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/pluginworkspacecomponent" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/profilemanager" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/search" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/tagscanner" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/usereportconverter" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/workspacedeltaprocessor" value="false"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/target/profile" value="false"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/dnd" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/setup" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/sort" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/viewermap" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/perspectives" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/org.eclipse.ecf.tests.filetransfer.httpclient4.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.httpclient4.launch
new file mode 100644
index 0000000..5f2aaec
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.httpclient4.launch
@@ -0,0 +1,43 @@
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>
+<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/org.eclipse.ecf.tests.filetransfer.httpclient4"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-tests"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>
+</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.filetransfer"/>
+<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/J2SE-1.5"/>
+<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"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>
+<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.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000&#13;&#10;-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog&#13;&#10;-Dorg.apache.commons.logging.simplelog.showdatetime=true &#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire.header=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.org.apache.commons.httpclient=debug&#13;&#10;-Dorg.apache.commons.logging.simplelog.log.httpclient.wire=debug"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<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="true"/>
+<booleanAttribute key="useProduct" value="false"/>
+</launchConfiguration>
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.launch b/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.launch
index c40a7f5..0166675 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.launch
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/org.eclipse.ecf.tests.filetransfer.launch
@@ -1,516 +1,591 @@
-<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>
-<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/org.eclipse.ecf.tests.filetransfer"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-tests"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>
-</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.filetransfer"/>
-<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/J2SE-1.5"/>
-<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"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>
-<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.eclipse.ecf.provider.filetransfer.httpclient.retrieve.readTimeout=90000&#13;&#10;-Dorg.eclipse.ecf.provider.filetransfer.httpclient.retrieve.connectTimeout=80000"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.core.expressions@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.jface.text@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.repository@default:default,org.apache.commons.logging@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.hamcrest.core@default:default,org.eclipse.core.databinding@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.osgi.services@default:default,org.eclipse.core.variables@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.help@default:default,org.eclipse.jface@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.commands@default:default,org.apache.commons.httpclient@default:default,org.eclipse.ui.ide@default:default,org.eclipse.osgi@-1:true,org.eclipse.ant.core@default:default,org.eclipse.equinox.security@default:default,org.apache.commons.codec@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.resources@default:default,org.eclipse.text@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.jobs@default:default,org.eclipse.equinox.preferences@default:default,com.ibm.icu@default:default,org.eclipse.core.net@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.ui@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.filetransfer@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<booleanAttribute key="tracing" value="true"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jgroups/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms.weblogic/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.skype/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.equinox.common/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/artifacts/mirrors" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/parseproblems" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/core/removeRepo" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/engine/installregistry" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/generator/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/metadata/parsing" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/operands" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/planner/projector" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/reconciler" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.core/updatechecker" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.garbagecollector/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
-<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
+<?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="bad_container_name" value="\org.eclipse.ecf.tests.filetransfer\A"/>

+<stringAttribute key="bootstrap" value=""/>

+<stringAttribute key="checked" value="org.eclipse.ecf.provider.filetransfer.httpclient4"/>

+<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/org.eclipse.ecf.tests.filetransfer"/>

+<booleanAttribute key="default" value="false"/>

+<booleanAttribute key="includeOptional" value="false"/>

+<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-tests"/>

+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

+<listEntry value="/org.eclipse.ecf.tests.filetransfer"/>

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

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

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

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.filetransfer"/>

+<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.eclipse.ecf.tests.filetransfer.cancelSupportedOnConnect=false"/>

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.sdk.ide"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.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.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,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.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent*1.0.200.v20110502@default:default,org.eclipse.equinox.concurrent*1.0.200.v20111010-1614@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@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.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.swt@default:default,org.eclipse.text@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit*4.8.2.v4_8_2_v20110321-1705@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.transforms.hook@default:false"/>

+<booleanAttribute key="show_selected_only" value="false"/>

+<booleanAttribute key="tracing" value="true"/>

+<mapAttribute key="tracingOptions">

+<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/debug/TypeExtensionManager" value="false"/>

+<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>

+<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>

+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>

+<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>

+<mapEntry key="org.eclipse.core.resources/debug" value="false"/>

+<mapEntry key="org.eclipse.core.resources/history" value="false"/>

+<mapEntry key="org.eclipse.core.resources/natures" value="false"/>

+<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>

+<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>

+<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>

+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>

+<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>

+<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>

+<mapEntry key="org.eclipse.core.resources/strings" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>

+<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>

+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/breadcrumb" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/breakpointDeltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/presentationId" value=""/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>

+<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>

+<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>

+<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.filetransfer/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.internal.provisional.docshare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/containerfinder" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/discoveredservicetracker" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/eventhook" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.distribution/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/containerselector" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionadvertiser" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionlocator" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/endpointdescriptionreader" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/metadatafactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/packageversioncomparator" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/remoteserviceadmin" value="true"/>

+<mapEntry key="org.eclipse.ecf.osgi.services.remoteserviceadmin/debug/topologymanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.datashare/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.discovery/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.dnssd/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer.httpclient4/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/exceptions/catching" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/exceptions/throwing" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/methods/entering" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.filetransfer/debug/methods/exiting" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.irc/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms.activemq/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jms/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/changing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.jslp/debug/methods/tracing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.remoteservice/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.rss/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/trace" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/trace/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.wave.google/trace/flag" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>

+<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.server/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.server/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sharedobject/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.sync/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.tests.osgi.services.distribution/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf.ui/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/catching" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>

+<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/entering" value="false"/>

+<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="false"/>

+<mapEntry key="org.eclipse.egit.core/debug" value="false"/>

+<mapEntry key="org.eclipse.egit.core/debug/core" value="false"/>

+<mapEntry key="org.eclipse.egit.core/debug/core/indexdiffcache" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/quickdiff" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/repochangescanner" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui/decoration" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui/historyview" value="false"/>

+<mapEntry key="org.eclipse.egit.ui/debug/ui/repositoriesview" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/instantiate_all" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>

+<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/unsigned" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/untrusted" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/engine/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/enginesession/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.p2.engine/profileregistry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>

+<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>

+<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>

+<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>

+<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>

+<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>

+<mapEntry key="org.eclipse.help/debug" value="true"/>

+<mapEntry key="org.eclipse.help/debug/context" value="false"/>

+<mapEntry key="org.eclipse.help/debug/search" value="false"/>

+<mapEntry key="org.eclipse.help/debug/toc" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>

+<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>

+<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>

+<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>

+<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>

+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>

+<mapEntry key="org.eclipse.jdt.debug/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations/callingThreads" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/jdiEvents" value="false"/>

+<mapEntry key="org.eclipse.jdt.debug/debug/jdiRequestTimes" value="false"/>

+<mapEntry key="org.eclipse.jdt.launching/debug" value="false"/>

+<mapEntry key="org.eclipse.jdt.launching/debug/classpath/jreContainer" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>

+<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>

+<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>

+<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>

+<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>

+<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>

+<mapEntry key="org.eclipse.osgi/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/objectPool/adds" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/objectPool/dups" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>

+<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>

+<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/cachedmanifest" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>

+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>

+<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>

+<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>

+<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>

+<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>

+<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apianalyzer" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apidescription" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apifilterstore" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/apiprofile" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/builder" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/classfilevisitor" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/delta" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/descriptor/framework" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/pluginworkspacecomponent" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/profilemanager" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/search" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/tagscanner" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/usereportconverter" value="false"/>

+<mapEntry key="org.eclipse.pde.api.tools/debug/workspacedeltaprocessor" value="false"/>

+<mapEntry key="org.eclipse.pde.build/debug" value="false"/>

+<mapEntry key="org.eclipse.pde.core/cache" value="false"/>

+<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>

+<mapEntry key="org.eclipse.pde.core/debug" value="true"/>

+<mapEntry key="org.eclipse.pde.core/target/profile" value="false"/>

+<mapEntry key="org.eclipse.pde.core/validation" value="false"/>

+<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>

+<mapEntry key="org.eclipse.team.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>

+<mapEntry key="org.eclipse.team.core/streams" value="false"/>

+<mapEntry key="org.eclipse.team.core/threading" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>

+<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>

+<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>

+<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>

+<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>

+<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>

+<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>

+<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/dnd" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/resolution" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/setup" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/sort" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/debug/viewermap" value="false"/>

+<mapEntry key="org.eclipse.ui.navigator/perf/explorer/createPartControl" value="1300"/>

+<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>

+<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>

+<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>

+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>

+<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>

+<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>

+<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>

+<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>

+<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/perspectives" value="false"/>

+<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>

+<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug" value="true"/>

+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>

+<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>

+</mapAttribute>

+<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.filetransfer/src/org/eclipse/ecf/tests/filetransfer/AbstractRetrieveTestCase.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/AbstractRetrieveTestCase.java
index 12c7c24..89bd1e3 100755
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/AbstractRetrieveTestCase.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/AbstractRetrieveTestCase.java
@@ -88,9 +88,7 @@
 	protected void handleDoneEvent(IIncomingFileTransferReceiveDoneEvent event) {
 		trace("handleDoneEvent(" + event + ")");
 		doneEvents.add(event);
-		synchronized (lock) {
-			done = true;
-		}
+		setDone(true);
 	}
 
 	protected IFileTransferListener createFileTransferListener() {
@@ -132,10 +130,6 @@
 	 */
 	protected void tearDown() throws Exception {
 		retrieveAdapter = null;
-		startConnectEvents = null;
-		startEvents = null;
-		dataEvents = null;
-		doneEvents = null;
 		super.tearDown();
 	}
 
@@ -144,11 +138,17 @@
 		retrieveAdapter.sendRetrieveRequest(createFileID(fileToRetrieve), createFileTransferListener(), null);
 	}
 
+	protected void setDone(boolean val) {
+		synchronized (lock) {
+			this.done = true;
+		}
+	}
+	
 	protected void waitForDone(int timeout) throws Exception {
 		final long start = System.currentTimeMillis();
 		synchronized (lock) {
 			while (!done && ((System.currentTimeMillis() - start) < timeout)) {
-				lock.wait(timeout / 20);
+				lock.wait(500);
 			}
 			if (!done)
 				throw new TimeoutException(timeout);
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLBrowseTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLBrowseTest.java
index 258b534..2104e8f 100755
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLBrowseTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLBrowseTest.java
@@ -68,20 +68,22 @@
 		}
 		assertHasEventCount(events, IRemoteFileSystemBrowseEvent.class, 3);
 		for (Iterator iterator = events.iterator(); iterator.hasNext();) {
-			IRemoteFileSystemBrowseEvent event = (IRemoteFileSystemBrowseEvent) iterator.next();
+			IRemoteFileSystemBrowseEvent event = (IRemoteFileSystemBrowseEvent) iterator
+					.next();
 			assertNotNull(event);
 			final IRemoteFile[] remoteFiles = event.getRemoteFiles();
 			assertNotNull(remoteFiles);
 			assertEquals(1, remoteFiles.length);
-			if (event.getFileID().getName().equals("https://www.verisign.com/index.html") ||
-			    event.getFileID().getName().equals("http://google.com:80")
-					) {
+			if (event.getFileID().getName()
+					.equals("https://www.verisign.com/index.html")
+					|| event.getFileID().getName()
+							.equals("http://google.com:80")) {
 				verifyRemoteFilesWithoutLastModifiedAndContentLength(remoteFiles);
 			} else {
 				verifyRemoteFiles(remoteFiles);
 			}
 		}
-		
+
 	}
 	
 	public void testBrowseUnknownHost() throws Exception {
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLCancelTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLCancelTest.java
index 934e3cc..55b300b 100755
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLCancelTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLCancelTest.java
@@ -79,7 +79,8 @@
 	 */
 	protected void handleDoneEvent(IIncomingFileTransferReceiveDoneEvent event) {
 		super.handleDoneEvent(event);
-		assertTrue(incomingFileTransfer.getException() != null);
+		if (incomingFileTransfer != null)
+			assertTrue(incomingFileTransfer.getException() != null);
 	}
 
 	protected void testReceive(String url) throws Exception {
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLPartialRetrieveTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLPartialRetrieveTest.java
index 71eeae8..fcbb147 100755
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLPartialRetrieveTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLPartialRetrieveTest.java
@@ -33,7 +33,7 @@
 
 public class URLPartialRetrieveTest extends AbstractRetrieveTestCase {
 
-	private static final String HTTP_RETRIEVE = "http://ftp.osuosl.org/pub/eclipse/rt/ecf/3.2/3.6/site.p2/features/org.eclipse.ecf.core_3.2.0.v20100219-1253.jar";
+	private static final String HTTP_RETRIEVE = "http://ftp.osuosl.org/pub/eclipse/rt/ecf/3.5.6/site.p2/artifacts.jar";
 
 	private static final String FILENAME = "foo.zip";
 
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrievePauseResumeTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrievePauseResumeTest.java
old mode 100755
new mode 100644
index a85bed2..d9023c1
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrievePauseResumeTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrievePauseResumeTest.java
@@ -30,11 +30,14 @@
 
 public class URLRetrievePauseResumeTest extends ContainerAbstractTestCase {
 
-	private static final String HTTP_RETRIEVE = "http://ftp.osuosl.org/pub/eclipse/rt/ecf/3.2/3.6/site.p2/features/org.eclipse.ecf.core_3.2.0.v20100219-1253.jar";
+	private static final String HTTP_RETRIEVE = "http://ftp.osuosl.org/pub/eclipse/rt/ecf/3.5.6/site.p2/artifacts.jar";
+	//private static final String HTTP_RETRIEVE = "http://ftp.osuosl.org/pub/eclipse/rt/ecf/3.5.4/site.p2/plugins/org.eclipse.ecf.doc_1.3.0.v20111230-0120.jar";
+
+	//private static final String HTTP_RETRIEVE = "http://mirror.csclub.uwaterloo.ca/eclipse/eclipse/downloads/drops/R-3.7.1-201109091335/eclipse-platform-3.7.1-win32.zip";
 
 	private static final String FILENAME = "foo.zip";
 
-	private static final int PAUSE_TIME = 4000;
+	private static final int PAUSE_TIME = 10000;
 
 	private IRetrieveFileTransfer transferInstance;
 
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTest.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTest.java
index 65ee5a5..595402a 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTest.java
@@ -43,7 +43,7 @@
 	public static final String HTTP_MALFORMED_URL = "http://malformed:-1";
 	public static final String HTTP_RETRIEVE_NON_CANONICAL_URL = "http://eclipse.saplabs.bg//eclipse///updates/3.4/plugins/org.eclipse.equinox.p2.exemplarysetup.source_1.0.0.v20080427-2136.jar.pack.gz";
 	
-	private static final String FTP_RETRIEVE = "ftp://ftp.osuosl.org/pub/eclipse/rt/ecf/3.2/3.6/site.p2/features/org.eclipse.ecf.core_3.2.0.v20100219-1253.jar";
+	private static final String FTP_RETRIEVE = "ftp://ftp.osuosl.org/pub/eclipse/rt/ecf/3.5.6/org.eclipse.ecf.sdk_3.5.6.v20120610-1946.zip";
 	
 	// See bug 237936
 	private static final String BUG_237936_URL = "http://www.eclipse.org/downloads/download.php?file=/webtools/updates/site.xml&format=xml&countryCode=us&timeZone=-5&responseType=xml";
@@ -131,7 +131,7 @@
 		final IFileID fileID = createFileID(new URL(url));
 		retrieveAdapter.sendRetrieveRequest(fileID, listener, null);
 
-		waitForDone(10000);
+		waitForDone(360000);
 
 		assertHasEvent(startEvents, IIncomingFileTransferReceiveStartEvent.class);
 		assertHasMoreThanEventCount(dataEvents, IIncomingFileTransferReceiveDataEvent.class, 0);
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestCancelConnectJob.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestCancelConnectJob.java
index f84e50e..452a06e 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestCancelConnectJob.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestCancelConnectJob.java
@@ -43,6 +43,10 @@
 	private TrackSocketEvents socketEvents;
 	private SocketInReadWrapper socketInReadWrapper;
 
+	private boolean CANCEL_SUPPORTED_ON_CONNECT = new Boolean(
+			System.getProperty(
+					"org.eclipse.ecf.tests.filetransfer.cancelSupportedOnConnect",
+					"true")).booleanValue();
 
 	/*
 	 * (non-Javadoc)
@@ -68,25 +72,31 @@
 			tmpFile.delete();
 		tmpFile = null;
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.filetransfer.AbstractRetrieveTestCase#handleStartConnectEvent(org.eclipse.ecf.filetransfer.events.IFileTransferConnectStartEvent)
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ecf.tests.filetransfer.AbstractRetrieveTestCase#
+	 * handleStartConnectEvent
+	 * (org.eclipse.ecf.filetransfer.events.IFileTransferConnectStartEvent)
 	 */
 	protected void handleStartConnectEvent(IFileTransferConnectStartEvent event) {
 		super.handleStartConnectEvent(event);
 		this.socketEvents = SocketEventTestUtil.observeSocketEvents(event);
-		ISocketEventSource source = (ISocketEventSource) event.getAdapter(ISocketEventSource.class);
+		ISocketEventSource source = (ISocketEventSource) event
+				.getAdapter(ISocketEventSource.class);
 		source.addListener(new ISocketListener() {
 
 			public void handleSocketEvent(ISocketEvent event) {
 				if (event instanceof ISocketConnectedEvent) {
 					ISocketConnectedEvent connectedEvent = (ISocketConnectedEvent) event;
-					socketInReadWrapper = new SocketInReadWrapper(connectedEvent.getSocket(), startTime);
+					socketInReadWrapper = new SocketInReadWrapper(
+							connectedEvent.getSocket(), startTime);
 					connectedEvent.setSocket(socketInReadWrapper);
 				}
 			}
 		});
-		
+
 	}
 
 	protected void handleDoneEvent(IIncomingFileTransferReceiveDoneEvent event) {
@@ -104,6 +114,10 @@
 	}
 
 	public void testReceiveFile_cancelOnConnectEvent() throws Exception {
+		if (!CANCEL_SUPPORTED_ON_CONNECT) {
+			trace("WARNING:  Cancel not supported by this provider.  testReceiveFile_cancelOnConnectEvent cannot be used");
+			return;
+		}
 		final IFileTransferListener listener = createFileTransferListener();
 		final FileTransferListenerWrapper lw = new FileTransferListenerWrapper(
 				listener) {
@@ -112,6 +126,7 @@
 				assertNotNull(event.getFileID());
 				assertNotNull(event.getFileID().getFilename());
 				assertNull(socketInReadWrapper);
+				setDone(true);
 				event.cancel();
 			}
 		};
@@ -125,7 +140,7 @@
 		assertDoneCancelled();
 
 		assertNull(tmpFile);
-		
+
 		socketEvents.validateNoSocketCreated();
 
 	}
@@ -133,6 +148,10 @@
 	// TODO: add test that cancel without connect job, when server does not
 	// respond
 	public void testReceiveFile_cancelConnectJob() throws Exception {
+		if (!CANCEL_SUPPORTED_ON_CONNECT) {
+			trace("WARNING:  Cancel not supported by this provider.  testReceiveFile_cancelConnectJob cannot be used");
+			return;
+		}
 		final Object[] doCancel = new Object[1];
 
 		final IFileTransferListener listener = createFileTransferListener();
@@ -183,8 +202,8 @@
 			assertHasNoEvent(dataEvents,
 					IIncomingFileTransferReceiveDataEvent.class);
 			IIncomingFileTransferReceiveDoneEvent doneEvent = getDoneEvent();
-			assertTrue(doneEvent.getException().toString(), doneEvent
-					.getException() instanceof UserCancelledException);
+			assertTrue(doneEvent.getException().toString(),
+					doneEvent.getException() instanceof UserCancelledException);
 			assertTrue(doneEvent.getSource().isDone());
 			assertSame(doneEvent.getException(), doneEvent.getSource()
 					.getException());
@@ -193,7 +212,7 @@
 
 			assertFalse(socketInReadWrapper.inRead);
 			socketEvents.validateOneSocketCreatedAndClosed();
-			
+
 		} finally {
 			server.shutdown();
 		}
@@ -207,6 +226,10 @@
 	}
 
 	public void testReceiveFile_cancelTransferJob() throws Exception {
+		if (!CANCEL_SUPPORTED_ON_CONNECT) {
+			trace("WARNING:  Cancel not supported by this provider.  testReceiveFile_cancelTransferJob cannot be used");
+			return;
+		}
 		final Object[] doCancel = new Object[1];
 
 		final IFileTransferListener listener = createFileTransferListener();
@@ -260,9 +283,9 @@
 				synchronized (doCancel) {
 					doCancel[0] = Boolean.TRUE;
 				}
-				
+
 				conn.setKeepAlive(true);
-				// 
+				//
 				return stalledInRequestHandler(doCancel);
 			}
 
@@ -298,16 +321,31 @@
 		}
 		assertTrue(socketInReadWrapper.inRead);
 	}
-	
-	public void testReceiveFile_cancelTransferJobAfterOneBlock() throws Exception {
-		testReceiveFile_cancelTransferJobInMiddle(AbstractRetrieveFileTransfer.DEFAULT_BUF_LENGTH*2, false);
+
+	public void testReceiveFile_cancelTransferJobAfterOneBlock()
+			throws Exception {
+		if (!CANCEL_SUPPORTED_ON_CONNECT) {
+			trace("WARNING:  Cancel not supported by this provider.  testReceiveFile_cancelTransferJobAfterOneBlock cannot be used");
+			return;
+		}
+		testReceiveFile_cancelTransferJobInMiddle(
+				AbstractRetrieveFileTransfer.DEFAULT_BUF_LENGTH * 2, false);
 	}
-	
+
 	public void testReceiveFile_cancelTransferJobInMiddle() throws Exception {
+		if (!CANCEL_SUPPORTED_ON_CONNECT) {
+			trace("WARNING:  Cancel not supported by this provider.  testReceiveFile_cancelTransferJobInMiddle cannot be used");
+			return;
+		}
 		testReceiveFile_cancelTransferJobInMiddle(20000, true);
 	}
-	
-	public void testReceiveFile_cancelTransferJobInMiddle(final long len, final boolean expectedSocketInRead) throws Exception {
+
+	public void testReceiveFile_cancelTransferJobInMiddle(final long len,
+			final boolean expectedSocketInRead) throws Exception {
+		if (!CANCEL_SUPPORTED_ON_CONNECT) {
+			trace("WARNING:  Cancel not supported by this provider.  testReceiveFile_cancelTransferJobInMiddle cannot be used");
+			return;
+		}
 		final Object[] doCancel = new Object[1];
 
 		final IFileTransferListener listener = createFileTransferListener();
@@ -358,7 +396,7 @@
 						"Content-Length: " + len,
 						"Content-Type: text/plain; charset=UTF-8", "" });
 				w.flush();
-				for (int i = 0; i < len/2; i++) {
+				for (int i = 0; i < len / 2; i++) {
 					w.write("x");
 				}
 				w.flush();
@@ -386,11 +424,11 @@
 
 			assertNotNull(tmpFile);
 			assertTrue(tmpFile.exists());
-			assertEquals(len/2, tmpFile.length());
+			assertEquals(len / 2, tmpFile.length());
 
 			assertFalse(socketInReadWrapper.inRead);
 			socketEvents.validateOneSocketCreatedAndClosed();
-			
+
 		} finally {
 			server.shutdown();
 		}
diff --git a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestUnknownHost.java b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestUnknownHost.java
index de77829..7e35d54 100644
--- a/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestUnknownHost.java
+++ b/tests/bundles/org.eclipse.ecf.tests.filetransfer/src/org/eclipse/ecf/tests/filetransfer/URLRetrieveTestUnknownHost.java
@@ -23,7 +23,12 @@
 
 public class URLRetrieveTestUnknownHost extends AbstractRetrieveTestCase {
 
-	public  static final String HTTP_UNKNOWN_HOST_URL = "http://unknown-abcdefghi.eclipse.org/foo";
+	public static final String HTTP_UNKNOWN_HOST_URL = "http://unknown-abcdefghi.eclipse.org/foo";
+
+	private boolean CANCEL_SUPPORTED_ON_CONNECT = new Boolean(
+			System.getProperty(
+					"org.eclipse.ecf.tests.filetransfer.cancelSupportedOnConnect",
+					"true")).booleanValue();
 
 	/*
 	 * (non-Javadoc)
@@ -33,6 +38,7 @@
 	protected void setUp() throws Exception {
 		super.setUp();
 	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -41,7 +47,7 @@
 	protected void tearDown() throws Exception {
 		super.tearDown();
 	}
-	
+
 	protected void testReceive(String url, IFileTransferListener listener)
 			throws Exception {
 		assertNotNull(retrieveAdapter);
@@ -55,8 +61,10 @@
 		try {
 			// path does not matter as server does not respond.
 			testReceive(HTTP_UNKNOWN_HOST_URL, listener);
-			assertHasEvent(startConnectEvents,
-					IFileTransferConnectStartEvent.class);
+			if (CANCEL_SUPPORTED_ON_CONNECT) {
+				assertHasEvent(startConnectEvents,
+						IFileTransferConnectStartEvent.class);
+			}
 			assertHasNoEvent(startEvents,
 					IIncomingFileTransferReceiveStartEvent.class);
 			assertHasNoEvent(dataEvents,
@@ -70,7 +78,7 @@
 			fail(e.toString());
 		}
 	}
-	
+
 	public void testReceiveFile_unknownHostWithConnectJob() throws Exception {
 		final IFileTransferListener listener = createFileTransferListener();
 		final FileTransferListenerWrapper lw = new FileTransferListenerWrapper(
@@ -90,8 +98,11 @@
 			// path does not matter as server does not respond.
 			testReceive(HTTP_UNKNOWN_HOST_URL, lw);
 
-			assertHasEvent(startConnectEvents,
-					IFileTransferConnectStartEvent.class);
+			if (CANCEL_SUPPORTED_ON_CONNECT) {
+				assertHasEvent(startConnectEvents,
+						IFileTransferConnectStartEvent.class);
+			}
+
 			assertHasNoEvent(startEvents,
 					IIncomingFileTransferReceiveStartEvent.class);
 			assertHasNoEvent(dataEvents,
@@ -104,5 +115,4 @@
 		}
 	}
 
-
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.httpservice/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.httpservice/.settings/org.eclipse.jdt.core.prefs
index cd83859..10e8729 100644
--- a/tests/bundles/org.eclipse.ecf.tests.httpservice/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/bundles/org.eclipse.ecf.tests.httpservice/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,74 @@
-#Thu Apr 29 16:13:18 PDT 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.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#Tue Jan 11 19:52:25 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.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/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties
deleted file mode 100644
index cfa3528..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/,\
-               plugin.properties
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/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/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/.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/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/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/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/.gitignore
index e660fd9..f3ffc35 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/.gitignore
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/.gitignore
@@ -1 +1,2 @@
 bin/
+/slewis.org.eclipse.ecf.tests.osgi.services.distribution.generic.launch
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.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericServicePublicationTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericServicePublicationTest.java
deleted file mode 100644
index 8ecf234..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericServicePublicationTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2009 Jan S. Rellermeyer 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:
- *    Jan S. Rellermeyer - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.tests.osgi.services.distribution.generic;
-
-
-import org.eclipse.ecf.core.ContainerFactory;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.tests.osgi.services.distribution.AbstractServicePublicationTest;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
-
-public class GenericServicePublicationTest extends AbstractServicePublicationTest {
-
-	protected IContainer createContainer() throws Exception {
-		return ContainerFactory.getDefault().createContainer("ecf.generic.client");
-	}
-
-	protected String[] createInterfaces() throws Exception {
-		return new String[] { TestServiceInterface1.class.getName() };
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericServiceRegisterListenerTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericTwoRemoteServiceAccessTest.java
similarity index 78%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericServiceRegisterListenerTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericTwoRemoteServiceAccessTest.java
index cd71179..26330ba 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericServiceRegisterListenerTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.generic/src/org/eclipse/ecf/tests/osgi/services/distribution/generic/GenericTwoRemoteServiceAccessTest.java
@@ -1,19 +1,18 @@
 /*******************************************************************************
-* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+* 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:
-*   EclipseSource - initial API and implementation
+*   Composent - initial API and implementation
 ******************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.distribution.generic;
 
-
-import org.eclipse.ecf.tests.osgi.services.distribution.AbstractServiceRegisterListenerTest;
+import org.eclipse.ecf.tests.osgi.services.distribution.AbstractTwoRemoteServiceAccessTest;
 
 
-public class GenericServiceRegisterListenerTest extends AbstractServiceRegisterListenerTest {
+public class GenericTwoRemoteServiceAccessTest extends AbstractTwoRemoteServiceAccessTest {
 
 	/*
 	 * (non-Javadoc)
@@ -38,6 +37,4 @@
 		return "ecf.generic.client";
 	}
 
-
-
 }
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/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/.gitignore
index e660fd9..0e2cc9a 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/.gitignore
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/.gitignore
@@ -1 +1,2 @@
 bin/
+/slewis.org.eclipse.ecf.tests.osgi.services.distribution.r-osgi.launch
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.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiServicePublicationTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiServicePublicationTest.java
deleted file mode 100644
index ab3dd41..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiServicePublicationTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2009 Jan S. Rellermeyer 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:
- *    Jan S. Rellermeyer - initial API and implementation
- *****************************************************************************/
-package org.eclipse.ecf.tests.osgi.services.distribution.r_osgi;
-
-
-import org.eclipse.ecf.core.ContainerFactory;
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.tests.osgi.services.distribution.AbstractServicePublicationTest;
-import org.eclipse.ecf.tests.osgi.services.distribution.TestServiceInterface1;
-
-public class R_OSGiServicePublicationTest extends AbstractServicePublicationTest {
-
-	protected IContainer createContainer() throws Exception {
-		final ID containerID = IDFactory.getDefault().createStringID(
-				"r-osgi://localhost:9278");
-		return ContainerFactory.getDefault().createContainer("ecf.r_osgi.peer",
-				new Object[] { containerID });
-	}
-
-	protected String[] createInterfaces() throws Exception {
-		return new String[] { TestServiceInterface1.class.getName() };
-	}
-
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiServiceRegisterListenerTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiTwoRemoteServiceAccessTest.java
similarity index 89%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiServiceRegisterListenerTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiTwoRemoteServiceAccessTest.java
index 2f57ad9..508fd1d 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiServiceRegisterListenerTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution.r-osgi/src/org/eclipse/ecf/tests/osgi/services/distribution/r_osgi/R_OSGiTwoRemoteServiceAccessTest.java
@@ -1,31 +1,29 @@
 /*******************************************************************************
-* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
+* 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:
-*   EclipseSource - initial API and implementation
+*   Composent - initial API and implementation
 ******************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.distribution.r_osgi;
 
-
 import java.util.Properties;
 
 import org.eclipse.ecf.core.ContainerFactory;
 import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.identity.IDFactory;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
-import org.eclipse.ecf.tests.osgi.services.distribution.AbstractServiceRegisterListenerTest;
+import org.eclipse.ecf.tests.osgi.services.distribution.AbstractTwoRemoteServiceAccessTest;
 
 
-public class R_OSGiServiceRegisterListenerTest extends AbstractServiceRegisterListenerTest {
+public class R_OSGiTwoRemoteServiceAccessTest extends AbstractTwoRemoteServiceAccessTest {
 
 	private static final String CONTAINER_TYPE_NAME = "ecf.r_osgi.peer";
 	
 	private static final String SERVER_IDENTITY = "r-osgi://localhost:9278";
 	
-
 	/*
 	 * (non-Javadoc)
 	 * 
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 e26981b..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
@@ -9,13 +9,13 @@
  ******************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.distribution;
 
+import java.util.Arrays;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Properties;
 
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.util.Trace;
-import org.eclipse.ecf.osgi.services.discovery.RemoteServicePublication;
 import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
 import org.eclipse.ecf.remoteservice.IRemoteService;
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
@@ -35,8 +35,7 @@
 import org.osgi.util.tracker.ServiceTrackerCustomizer;
 
 public abstract class AbstractDistributionTest extends
-		ContainerAbstractTestCase implements IDistributionConstants,
-		RemoteServicePublication {
+		ContainerAbstractTestCase implements IDistributionConstants {
 
 	protected IRemoteServiceContainerAdapter[] adapters = null;
 
@@ -48,6 +47,14 @@
 	 */
 	protected abstract String getClientContainerName();
 
+	protected void startTest(String testname) {
+		System.out.println("====starting "+this.getClass().getName()+"."+testname+"====");
+	}
+
+	protected void endTest(String testname) {
+		System.out.println("====ending "+this.getClass().getName()+"."+testname+"====");
+	}
+
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (adapters != null) {
@@ -185,7 +192,7 @@
 				.getProperty(org.osgi.framework.Constants.OBJECTCLASS);
 		assertTrue(classes != null);
 		// Check object class
-		assertTrue(classname.equals(classes[0]));
+		assertTrue(Arrays.asList(classes).contains(classname));
 	}
 
 	protected void assertReferencesValidAndFirstHasCorrectType(
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 a307a8b..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;
@@ -93,6 +93,7 @@
 
 
 	public void testGetRemoteServiceReference() throws Exception {
+		startTest("testGetRemoteServiceReference");
 		createServiceTrackerAndRegister();
 		
 		// Service Consumer - Get (remote) ervice references
@@ -100,9 +101,11 @@
 		assertReferencesValidAndFirstHasCorrectType(remoteReferences, classname);
 		// Spec requires that the 'service.imported' property be set
 		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
+		endTest("testGetRemoteServiceReference");
 	}
 	
 	public void testGetRemoteServiceReferenceWithExtraProperties() throws Exception {
+		startTest("testGetRemoteServiceReferenceWithExtraProperties");
 		final String TESTPROP1_VALUE = "baz";
 		final String TESTPROP_VALUE = "foobar";
 		final String TESTPROP1_NAME = "org.eclipse.ecf.testprop1";
@@ -124,10 +127,12 @@
 		final String testProp1 = (String) remoteReferences[0].getProperty(TESTPROP1_NAME);
 		assertTrue(TESTPROP_VALUE.equals(testProp));
 		assertTrue(TESTPROP1_VALUE.equals(testProp1));
+		endTest("testGetRemoteServiceReferenceWithExtraProperties");
 	}
 
 
 	public void testProxy() throws Exception {
+		startTest("testProxy");
 		createServiceTrackerAndRegister();
 		
 		// Client - Get service references from service tracker
@@ -142,9 +147,11 @@
 		final String result = proxy.doStuff1();
 		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff1 result=" + result);
 		assertTrue(TestServiceInterface1.TEST_SERVICE_STRING1.equals(result));
+		endTest("testProxy");
 	}
 
 	public void testCallSyncFromProxy() throws Exception {
+		startTest("testCallSyncFromProxy");
 		createServiceTrackerAndRegister();
 		
 		// Client - Get service references from service tracker
@@ -164,9 +171,11 @@
 		final Object result = remoteService.callSync(createRemoteCall());
 		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff1 result=" + result);
 		assertStringResultValid(result, TestServiceInterface1.TEST_SERVICE_STRING1);
+		endTest("testCallSyncFromProxy");
 	}
 
 	public void testCallSync() throws Exception {
+		startTest("testCallSync");
 		createServiceTrackerAndRegister();
 		
 		// Client - Get service references from service tracker
@@ -182,9 +191,11 @@
 		final Object result = rs.callSync(createRemoteCall());
 		Trace.trace(Activator.PLUGIN_ID, "callSync.doStuff1 result=" + result);
 		assertStringResultValid(result, TestServiceInterface1.TEST_SERVICE_STRING1);
+		endTest("testCallSync");
 	}
 
 	public void testCallAsync() throws Exception {
+		startTest("testCallAsync");
 		createServiceTrackerAndRegister();
 		
 		// Client - Get service references from service tracker
@@ -210,9 +221,11 @@
 		});
 
 		syncWaitForNotify(REGISTER_WAIT);
+		endTest("testCallAsync");
 	}
 
 	public void testCallFuture() throws Exception {
+		startTest("testCallFuture");
 		createServiceTrackerAndRegister();
 		
 		// Client - Get service references from service tracker
@@ -230,9 +243,11 @@
 		final Object result = futureResult.get();
 		Trace.trace(Activator.PLUGIN_ID, "callSync.doStuff1 result=" + result);
 		assertStringResultValid(result, TestServiceInterface1.TEST_SERVICE_STRING1);
+		endTest("testCallFuture");
 	}
 
 	public void testFireAsync() throws Exception {
+		startTest("testFireAsync");
 		createServiceTrackerAndRegister();
 		
 		// Client - Get service references from service tracker
@@ -246,5 +261,6 @@
 		// Call asynchronously
 		rs.fireAsync(createRemoteCall());
 		Thread.sleep(REGISTER_WAIT);
+		endTest("testFireAsync");
 	}
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceRegisterTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceRegisterTest.java
index fba70b7..f180b25 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceRegisterTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractRemoteServiceRegisterTest.java
@@ -83,8 +83,10 @@
 	}
 
 	public void testRegisterOnCreatedServer() throws Exception {
+		startTest("testRegisterOnCreatedServer");
 		Properties props = getServiceProperties();
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnCreatedServer");
 	}
 
 	private Properties getServiceProperties() {
@@ -97,23 +99,28 @@
 	}
 
 	public void testRegisterOnCreatedServerWithIdentity() throws Exception {
+		startTest("testRegisterOnCreatedServerWithIdentity");
 		Properties props = getServiceProperties();
 		// set the container factory arguments to the server identity (e.g. ecftcp://localhost:3282/server)
 		props.put(SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS, new String[] { getServerIdentity() } );
 		
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnCreatedServerWithIdentity");
 	}
 
 	public void testRegisterOnExistingServer() throws Exception {
+		startTest("testRegisterOnExistingServer");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
 		Properties props = getServiceProperties();
 		
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnExistingServer");
 	}
 
 	public void testRegisterOnExistingServerWithIntents() throws Exception {
+		startTest("testRegisterOnExistingServerWithIntents");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
@@ -121,9 +128,11 @@
 		// Add intents
 		props.put(SERVICE_INTENTS, "passByValue");
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnExistingServerWithIntents");
 	}
 
 	public void testRegisterOnExistingServerWithMissingIntents() throws Exception {
+		startTest("testRegisterOnExistingServerWithMissingIntents");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
@@ -131,9 +140,11 @@
 		// Add intent that no one actually exposes
 		props.put(SERVICE_INTENTS, "foobar");
 		registerWaitAndUnregister(props, false);
+		endTest("testRegisterOnExistingServerWithMissingIntents");
 	}
 
 	public void testRegisterOnExistingServerWithExportedIntents() throws Exception {
+		startTest("testRegisterOnExistingServerWithExportedIntents");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
@@ -141,9 +152,11 @@
 		// Add intents
 		props.put(SERVICE_EXPORTED_INTENTS, "passByValue");
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnExistingServerWithExportedIntents");
 	}
 
 	public void testRegisterOnExistingServerWithMissingExportedIntents() throws Exception {
+		startTest("testRegisterOnExistingServerWithMissingExportedIntents");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
@@ -151,9 +164,11 @@
 		// Add intent that no one actually exposes
 		props.put(SERVICE_EXPORTED_INTENTS, "foobar");
 		registerWaitAndUnregister(props, false);
+		endTest("testRegisterOnExistingServerWithMissingExportedIntents");
 	}
 
 	public void testRegisterOnExistingServerWithExportedExtraIntents() throws Exception {
+		startTest("testRegisterOnExistingServerWithExportedExtraIntents");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
@@ -161,9 +176,11 @@
 		// Add intents
 		props.put(SERVICE_EXPORTED_INTENTS_EXTRA, "passByValue");
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnExistingServerWithExportedExtraIntents");
 	}
 
 	public void testRegisterOnExistingServerWithMissingExportedExtraIntents() throws Exception {
+		startTest("testRegisterOnExistingServerWithMissingExportedExtraIntents");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
@@ -171,24 +188,29 @@
 		// Add intent that no one actually exposes
 		props.put(SERVICE_EXPORTED_INTENTS_EXTRA, "foobar");
 		registerWaitAndUnregister(props, false);
+		endTest("testRegisterOnExistingServerWithMissingExportedExtraIntents");
 	}
 
 	public void testRegisterOnExistingServerWithContainerID() throws Exception {
+		startTest("testRegisterOnExistingServerWithContainerID");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),new Object[] {createServerID()});
 		
 		final Properties props = getServiceProperties();
 		props.put(SERVICE_EXPORTED_CONTAINER_ID, this.server.getID());
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnExistingServerWithContainerID");
 	}
 
 	public void testRegisterOnExistingServerWithIdentity() throws Exception {
+		startTest("testRegisterOnExistingServerWithIdentity");
 		// Create server container
 		this.server = ContainerFactory.getDefault().createContainer(getServerContainerTypeName(),getServerIdentity());
 		
 		Properties props = getServiceProperties();
 		
 		registerWaitAndUnregister(props, true);
+		endTest("testRegisterOnExistingServerWithIdentity");
 	}
 
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractServicePublicationTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractServicePublicationTest.java
deleted file mode 100644
index 573cfb3..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractServicePublicationTest.java
+++ /dev/null
@@ -1,135 +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.distribution;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-import junit.framework.TestCase;
-
-import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.core.IContainerManager;
-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.tests.internal.osgi.services.distribution.Activator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.util.tracker.ServiceTracker;
-
-public abstract class AbstractServicePublicationTest extends TestCase implements IDistributionConstants, RemoteServicePublication {
-
-	// Member variables that should be set by subclasses
-	protected IContainer container;
-	protected String[] ifaces;
-	protected ServiceRegistration registration;
-	
-	protected abstract IContainer createContainer() throws Exception;
-	protected abstract String[] createInterfaces() throws Exception;
-
-	protected ServiceReference reference;
-	
-	public ServiceReference getReference() {
-		return reference;
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		setContainer(createContainer());
-		setInterfaces(createInterfaces());
-	}
-	
-	void removeFromContainerManager(IContainer container) {
-		ServiceTracker st = new ServiceTracker(Activator.getDefault().getContext(),IContainerManager.class.getName(),null);
-		st.open();
-		IContainerManager containerManager = (IContainerManager) st.getService();
-		if (containerManager != null) {
-			containerManager.removeContainer(container);
-		}
-		st.close();
-	}
-	
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (container != null) {
-			container.dispose();
-			removeFromContainerManager(container);
-			container = null;
-		}
-		if (ifaces != null) {
-			ifaces = null;
-		}
-		if (registration != null) {
-			try {
-			  registration.unregister();
-			  registration = null;
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-	}
-	
-	public IContainer getContainer() {
-		return container;
-	}
-	
-	public String[] getInterfaces() {
-		return ifaces;
-	}
-	
-	public void setContainer(IContainer container) {
-		this.container = container;
-	}
-	
-	public void testServicePublication() throws InterruptedException, InvalidSyntaxException {
-		final BundleContext context = Activator.getDefault().getContext();
-	
-		// register a service with the marker property set
-		final Dictionary props = new Hashtable();
-		props.put(IDistributionConstants.SERVICE_EXPORTED_INTERFACES, getInterfaces());
-		// prepare a service tracker
-		final ServiceTracker tracker = new ServiceTracker(context,
-				TestServiceInterface1.class.getName(), null);
-		tracker.open();
-	
-		// register the (remote-enabled) service
-		registration = context.registerService(TestServiceInterface1.class.getName(),
-				new TestService1(), props);
-	
-		// wait for service to become registered
-		tracker.waitForService(10000);
-	
-		// expected behavior: an endpoint is published
-		final ServiceReference[] refs = context
-				.getServiceReferences(ServicePublication.class.getName(), null);
-		assertTrue(refs != null);
-		
-		for (int i = 0; i < refs.length; i++) {
-			ServiceReference ref = refs[i];
-			
-			// check the service publication properties
-			final Object o = ref
-				.getProperty(ServicePublication.SERVICE_INTERFACE_NAME);
-			assertTrue(o instanceof Collection);
-			final Collection refIfaces = (Collection) o;
-			if(Arrays.equals(getInterfaces(), (String []) refIfaces.toArray(new String[] {}))) {
-				return;
-			}
-		}
-		fail("registered service not found.");
-	}
-	public void setInterfaces(String [] interfaces) {
-		this.ifaces = interfaces;
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractServiceRegisterListenerTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractServiceRegisterListenerTest.java
deleted file mode 100644
index 8d52d99..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractServiceRegisterListenerTest.java
+++ /dev/null
@@ -1,87 +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.distribution;
-
-import org.eclipse.ecf.osgi.services.discovery.IRemoteServiceEndpointDescription;
-import org.eclipse.ecf.osgi.services.distribution.IHostDistributionListener;
-import org.eclipse.ecf.osgi.services.distribution.IProxyDistributionListener;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
-import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
-import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
-import org.eclipse.ecf.tests.internal.osgi.services.distribution.Activator;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-public abstract class AbstractServiceRegisterListenerTest extends AbstractRemoteServiceAccessTest {
-
-	ServiceRegistration hostDistributionListenerRegistration;
-	ServiceRegistration proxyDistributionListenerRegistration;
-	
-	protected IHostDistributionListener createHostDistributionListener() {
-		return new IHostDistributionListener() {
-
-			public void registered(ServiceReference serviceReference,
-					IRemoteServiceContainer remoteServiceContainer, IRemoteServiceRegistration remoteRegistration) {
-				System.out.println("hostRegistered\n\tserviceReference="+serviceReference+"\n\tremoteServiceContainer="+remoteServiceContainer+"\n\tremoteRegistration="+remoteRegistration);
-			}
-
-			public void unregistered(ServiceReference serviceReference, IRemoteServiceRegistration remoteRegistration) {
-				System.out.println("hostUnregistered\n\tserviceReference="+serviceReference+"\n\tremoteRegistration="+remoteRegistration);
-			}
-			
-		};
-	}
-
-	protected IProxyDistributionListener createProxyDistributionListener() {
-		return new IProxyDistributionListener() {
-
-			public void registered(
-					IRemoteServiceEndpointDescription endpointDescription,
-					IRemoteServiceContainer remoteServiceContainer,
-					IRemoteServiceReference remoteServiceReference,
-					ServiceRegistration proxyServiceRegistration) {
-				System.out.println("proxyRegistered\n\tendpointDescription="+endpointDescription+"\n\tremoteServiceContainer="+remoteServiceContainer+"\n\tremoteServiceReference="+remoteServiceReference+"\n\tproxyServiceRegistration="+proxyServiceRegistration);		
-			}
-
-			public void retrievingRemoteServiceReferences(
-					IRemoteServiceEndpointDescription endpointDescription,
-					IRemoteServiceContainer remoteServiceContainer) {
-				System.out.println("proxyRetrievingRemoteServiceReferences\n\tendpointDescription="+endpointDescription+"\n\tremoteServiceContainer="+remoteServiceContainer);
-			}
-
-			public void registering(
-					IRemoteServiceEndpointDescription endpointDescription,
-					IRemoteServiceContainer remoteServiceContainer,
-					IRemoteServiceReference remoteServiceReference) {
-				System.out.println("proxyRegistering\n\tendpointDescription="+endpointDescription+"\n\tremoteServiceContainer="+remoteServiceContainer+"\n\tremoteServiceReference="+remoteServiceReference);		
-			}
-
-			public void unregistered(
-					IRemoteServiceEndpointDescription endpointDescription,
-					ServiceRegistration proxyServiceRegistration) {
-				System.out.println("proxyUnregistered\n\tendpointDescription="+endpointDescription+"\n\tproxyServiceRegistration="+proxyServiceRegistration);		
-			}
-			
-		};
-	}
-
-	protected void setUp() throws Exception {
-		// Register listeners
-		hostDistributionListenerRegistration = Activator.getDefault().getContext().registerService(IHostDistributionListener.class.getName(), createHostDistributionListener(), null);
-		proxyDistributionListenerRegistration = Activator.getDefault().getContext().registerService(IProxyDistributionListener.class.getName(), createProxyDistributionListener(), null);
-		super.setUp();
-	}
-	
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		hostDistributionListenerRegistration.unregister();
-		proxyDistributionListenerRegistration.unregister();
-	}
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractTwoRemoteServiceAccessTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractTwoRemoteServiceAccessTest.java
new file mode 100644
index 0000000..52c627e
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/AbstractTwoRemoteServiceAccessTest.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * 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:
+ *   Composent - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.distribution;
+
+import java.util.Properties;
+
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.remoteservice.IRemoteCall;
+import org.eclipse.ecf.tests.internal.osgi.services.distribution.Activator;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTracker;
+
+public abstract class AbstractTwoRemoteServiceAccessTest extends
+		AbstractDistributionTest {
+
+	protected static final int REGISTER_WAIT = Integer.parseInt(System.getProperty("waittime","15000"));
+
+	private final String[] classes = new String[] { TestServiceInterface1.class.getName(), TestServiceInterface2.class.getName() };
+	
+	private ServiceTracker st;
+	private ServiceRegistration registration;
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.tests.osgi.services.distribution.AbstractDistributionTest#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		// Unregister on server
+		if (registration != null) {
+			registration.unregister();
+			registration = null;
+		}
+		if (st != null) {
+			st.close();
+			st = null;
+		}
+		Thread.sleep(REGISTER_WAIT);
+
+		super.tearDown();
+	}
+
+	protected void createServiceTrackerAndRegister(String lookupClass, final Properties props) throws Exception {
+		// Setup service tracker for client
+		st = createProxyServiceTracker(lookupClass);
+
+		// Actually register
+		registration = registerService(classes,
+				new TestService1(), props);
+
+		// Wait
+		Thread.sleep(REGISTER_WAIT);
+	}
+
+	protected void createServiceTrackerAndRegister(String lookupClass) throws Exception {
+		createServiceTrackerAndRegister(lookupClass, getServiceProperties());
+	}
+
+	protected Properties getServiceProperties() {
+		final Properties props = new Properties();
+		props.put(SERVICE_EXPORTED_CONFIGS, getServerContainerName());
+		props.put(SERVICE_EXPORTED_INTERFACES, SERVICE_EXPORTED_INTERFACES_WILDCARD);
+		return props;
+	}
+
+	protected IRemoteCall createRemoteCall() {
+		return new IRemoteCall() {
+
+			public String getMethod() {
+				return "doStuff1";
+			}
+
+			public Object[] getParameters() {
+				return new Object[] {};
+			}
+
+			public long getTimeout() {
+				return 30000;
+			}
+
+		};
+	}
+
+	public void testGetRemoteService1Reference() throws Exception {
+		startTest("testGetRemoteService1Reference");
+		String lookupClass = TestServiceInterface1.class.getName();
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Service Consumer - Get (remote) service references
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+		// Spec requires that the 'service.imported' property be set
+		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
+		endTest("testGetRemoteService1Reference");
+	}
+
+	public void testGetRemoteService2Reference() throws Exception {
+		startTest("testGetRemoteService2Reference");
+		String lookupClass = TestServiceInterface2.class.getName();
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Service Consumer - Get (remote) service references
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+		// Spec requires that the 'service.imported' property be set
+		assertTrue(remoteReferences[0].getProperty(SERVICE_IMPORTED) != null);
+		endTest("testGetRemoteService2Reference");
+	}
+	
+
+	public void testProxyWithService1() throws Exception {
+		startTest("testProxyWithService1");
+		String lookupClass = TestServiceInterface1.class.getName();
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Client - Get service references from service tracker
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+
+		// Get proxy/service
+		final TestServiceInterface1 proxy = (TestServiceInterface1) getContext()
+				.getService(remoteReferences[0]);
+		assertNotNull(proxy);
+		// Now use proxy
+		final String result = proxy.doStuff1();
+		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff1 result=" + result);
+		assertTrue(TestServiceInterface1.TEST_SERVICE_STRING1.equals(result));
+		endTest("testProxyWithService1");
+	}
+
+	public void testProxyWithService2() throws Exception {
+		startTest("testProxyWithService2");
+		String lookupClass = TestServiceInterface2.class.getName();
+		
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Client - Get service references from service tracker
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+
+		// Get proxy/service
+		final TestServiceInterface2 proxy = (TestServiceInterface2) getContext()
+				.getService(remoteReferences[0]);
+		assertNotNull(proxy);
+		// Now use proxy
+		String result = proxy.doStuff1();
+		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff1 result=" + result);
+		assertTrue(TestServiceInterface1.TEST_SERVICE_STRING1.equals(result));
+		
+		// Now use proxy
+		result = proxy.doStuff2();
+		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff2 result=" + result);
+		assertTrue(TestServiceInterface2.TEST_SERVICE_STRING2.equals(result));
+		endTest("testProxyWithService2");
+	}
+
+}
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestService1.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestService1.java
index e1e8962..d5b3dca 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestService1.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestService1.java
@@ -10,10 +10,14 @@
  *****************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.distribution;
 
-public final class TestService1 implements TestServiceInterface1 {
+public final class TestService1 implements TestServiceInterface1, TestServiceInterface2 {
 
 	public String doStuff1() {
 		return TestServiceInterface1.TEST_SERVICE_STRING1;
 	}
 
+	public String doStuff2() {
+		return TestServiceInterface2.TEST_SERVICE_STRING2;
+	}
+
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestServiceInterface2.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestServiceInterface2.java
index eded5680..dbbd1bd 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestServiceInterface2.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/TestServiceInterface2.java
@@ -10,8 +10,10 @@
  *****************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.distribution;
 
-public interface TestServiceInterface2 {
+public interface TestServiceInterface2 extends TestServiceInterface1 {
 
-	void doStuff2();
+	public static final String TEST_SERVICE_STRING2 = "TestService2";
+	
+	String doStuff2();
 	
 }
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/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.classpath b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.classpath
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.classpath
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.classpath
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.gitignore b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.gitignore
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.gitignore
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.gitignore
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.project b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.project
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.project
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.project
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.jdt.core.prefs
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.core.prefs
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/.settings/org.eclipse.pde.prefs
diff --git a/incubation/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
similarity index 90%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 5ca4362..926cbb1 100644
--- a/incubation/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
@@ -19,9 +19,9 @@
  org.eclipse.ecf.tests.remoteservice,
  org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.osgi.framework;version="1.3.0",
- org.osgi.service.remoteserviceadmin;version="1.0.0",
+ org.osgi.service.remoteserviceadmin;version="5.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
+Export-Package: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;version="1.1.1"
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/about.html b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/about.html
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/about.html
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/about.html
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/build.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/build.properties
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/build.properties
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/build.properties
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/bundle.properties b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/bundle.properties
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/bundle.properties
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/bundle.properties
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-extra.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-extra.xml
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-extra.xml
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-extra.xml
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-minimal.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-minimal.xml
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-minimal.xml
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/ecf-remote-service-minimal.xml
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-extra.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-extra.xml
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-extra.xml
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-extra.xml
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-minimal.xml b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-minimal.xml
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-minimal.xml
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/rsvcs/osgi-remote-service-minimal.xml
diff --git a/incubation/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
similarity index 98%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractDistributionTest.java
index 5e6cee7..7e46e98 100644
--- a/incubation/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
@@ -9,6 +9,7 @@
  ******************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;
 
+import java.util.Arrays;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Properties;
@@ -181,7 +182,7 @@
 				.getProperty(org.osgi.framework.Constants.OBJECTCLASS);
 		assertTrue(classes != null);
 		// Check object class
-		assertTrue(classname.equals(classes[0]));
+		assertTrue(Arrays.asList(classes).contains(classname));
 	}
 
 	protected void assertReferencesValidAndFirstHasCorrectType(
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionWriterTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionWriterTest.java
new file mode 100644
index 0000000..8c6c3ec
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionWriterTest.java
@@ -0,0 +1,90 @@
+package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;

+

+import java.io.IOException;

+import java.io.StringWriter;

+import java.util.Properties;

+

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

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

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription;

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionWriter;

+import org.eclipse.ecf.osgi.services.remoteserviceadmin.IEndpointDescriptionAdvertiser;

+import org.osgi.framework.ServiceRegistration;

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

+

+public abstract class AbstractEndpointDescriptionWriterTest extends

+		AbstractDistributionTest {

+

+	protected static final int REGISTER_WAIT = 2000;

+	private ServiceRegistration registration;

+

+	private ServiceRegistration writerEndpointDescriptionAdvertiser;

+	private EndpointDescriptionWriter writer;

+	

+	protected void setUp() throws Exception {

+		super.setUp();

+		writer = new EndpointDescriptionWriter();

+		writerEndpointDescriptionAdvertiser = getContext().registerService(IEndpointDescriptionAdvertiser.class.getName(), createStandardOutputWriterServiceInfoFactory(), null);

+	}

+

+	private IEndpointDescriptionAdvertiser createStandardOutputWriterServiceInfoFactory() {

+		return new IEndpointDescriptionAdvertiser() {

+

+			@Override

+			public IStatus advertise(EndpointDescription endpointDescription) {

+				// TODO Auto-generated method stub

+				try {

+					StringWriter sr = new StringWriter();

+					sr.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append("\n");

+					writer.writeEndpointDescriptions(sr, new EndpointDescription[] { (EndpointDescription) endpointDescription });

+					System.out.print(sr.toString());

+				} catch (IOException e) {

+					// TODO Auto-generated catch block

+					e.printStackTrace();

+				}

+

+				return Status.OK_STATUS;

+			}

+

+			@Override

+			public IStatus unadvertise(EndpointDescription endpointDescription) {

+				// TODO Auto-generated method stub

+				return Status.OK_STATUS;

+			}

+		};

+	}

+

+	protected void tearDown() throws Exception {

+		if (registration != null) {

+			registration.unregister();

+			registration = null;

+		}

+		if (writerEndpointDescriptionAdvertiser != null) {

+			writerEndpointDescriptionAdvertiser.unregister();

+			writerEndpointDescriptionAdvertiser = null;

+		}

+		super.tearDown();

+	}

+

+	public void testRegisterOnCreatedServer() throws Exception {

+		Properties props = getServiceProperties();

+		// Actually register with default service (IConcatService)

+		registration = registerDefaultService(props);

+		// Wait a while

+		Thread.sleep(REGISTER_WAIT);

+	}

+

+	protected abstract String getServerContainerTypeName();

+		

+	private Properties getServiceProperties() {

+		Properties props = new Properties();

+		// Set config to the server container name/provider config name (e.g.

+		// ecf.generic.server)

+		props.put(RemoteConstants.SERVICE_EXPORTED_CONFIGS,

+				getServerContainerTypeName());

+		// Set the service exported interfaces to all

+		props.put(RemoteConstants.SERVICE_EXPORTED_INTERFACES, "*");

+		return props;

+	}

+

+}

diff --git a/incubation/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
similarity index 90%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractMetadataFactoryTest.java
index 866f330..094e4ba 100644
--- a/incubation/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
@@ -94,11 +94,10 @@
 		Map<String,Object> props = new HashMap<String,Object>();

 		// Add required OSGi properties

 		addRequiredOSGiProperties(props);

-		ID containerID = createECFContainerID(props);

 		createECFRemoteServiceId(props);

 		// Add extra properties

 		addExtraProperties(props);

-		return new EndpointDescription(props,containerID.getNamespace().getName(),null,null,null);

+		return new EndpointDescription(props);

 	}

 	

 	protected EndpointDescription createFullEndpointDescription() {

@@ -108,14 +107,9 @@
 		// Add full OSGi properties

 		addOptionalOSGiProperties(props);

 		// required ECF properties

-		ID containerID = createECFContainerID(props);

-		createECFRemoteServiceId(props);

-		ID targetID = createECFTargetID(props);

-		ID[] idFilter = createECFIDFilterIDs(props);

-		String rsFilter = createECFRSFilter(props);

 		// Add extra properties

 		addExtraProperties(props);

-		return new EndpointDescription(props,containerID.getNamespace().getName(), targetID,idFilter,rsFilter);

+		return new EndpointDescription(props);

 	}

 

 	protected void addExtraProperties(Map<String, Object> props) {

@@ -127,10 +121,9 @@
 		Map<String,Object> props = new HashMap<String,Object>();

 		// Add only ECF properties

 		// no OSGi properties

-		ID containerID = createECFContainerID(props);

 		createECFRemoteServiceId(props);

 		// This should throw a runtime exception 

-		return new EndpointDescription(props,containerID.getNamespace().getName(),null,null,null);

+		return new EndpointDescription(props);

 	}

 	

 	protected EndpointDescription createBadECFEndpointDescrption() throws Exception {

@@ -142,7 +135,7 @@
 		

 		// No ECF required properties

 		// This should throw a runtime exception 

-		return new EndpointDescription(props,null,null,null,null);

+		return new EndpointDescription(props);

 	}

 

 	protected String createOSGiServiceImportedConfig() {

@@ -193,7 +186,7 @@
 	}

 

 	protected IServiceInfo createServiceInfoForDiscovery(EndpointDescription endpointDescription) {

-		return serviceInfoFactory.createServiceInfoForDiscovery(discoveryAdvertiser, endpointDescription);

+		return serviceInfoFactory.createServiceInfo(discoveryAdvertiser, endpointDescription);

 	}

 	

 	protected org.osgi.service.remoteserviceadmin.EndpointDescription createEndpointDescriptionFromDiscovery(

diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceAccessTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceAccessTest.java
similarity index 99%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceAccessTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceAccessTest.java
index c4c776d..b4815dd 100644
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceAccessTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceAccessTest.java
@@ -46,7 +46,6 @@
 			st = null;
 		}
 		Thread.sleep(REGISTER_WAIT);
-
 		super.tearDown();
 	}
 
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceRegisterTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceRegisterTest.java
similarity index 82%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceRegisterTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceRegisterTest.java
index e95abdc..56e703c 100644
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceRegisterTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractRemoteServiceRegisterTest.java
@@ -10,6 +10,7 @@
 package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;
 
 import java.util.Properties;
+import java.util.Vector;
 
 import org.eclipse.ecf.core.ContainerFactory;
 import org.eclipse.ecf.core.ContainerTypeDescription;
@@ -20,16 +21,20 @@
 import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.remoteserviceadmin.RemoteConstants;
+import org.osgi.service.remoteserviceadmin.RemoteServiceAdminEvent;
+import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;
 
 public abstract class AbstractRemoteServiceRegisterTest extends
 		AbstractDistributionTest {
 
 	protected static final int REGISTER_WAIT = 2000;
 	private ServiceRegistration registration;
-
+	protected Vector<RemoteServiceAdminEvent> remoteServiceAdminEvents = new Vector<RemoteServiceAdminEvent>();
+	
 	protected abstract String getServerContainerTypeName();
 	
 	protected void tearDown() throws Exception {
+		remoteServiceAdminEvents.clear();
 		// Then unregister
 		if(registration != null) {
 			registration.unregister();
@@ -193,5 +198,45 @@
 		
 		registerWaitAndUnregister(props, true);
 	}
+	
+	protected boolean containsEventType(int eventType) {
+		for(RemoteServiceAdminEvent event: remoteServiceAdminEvents) if (event.getType() == eventType) return true;
+		return false;
+	}
+	
+	protected RemoteServiceAdminListener createRemoteServiceAdminListener() {
+		return new RemoteServiceAdminListener() {
+			public void remoteAdminEvent(RemoteServiceAdminEvent event) {
+				System.out.println("remoteAdminEvent event="+event);
+				remoteServiceAdminEvents.add(event);
+			}
+		};
+	}
+	
+	public void testRemoteServiceAdminListener() throws Exception {
+		RemoteServiceAdminListener listener = createRemoteServiceAdminListener();
+		ServiceRegistration listenerReg = getContext().registerService(RemoteServiceAdminListener.class.getName(), listener, null);
+		
+		Properties props = getServiceProperties();
+		registration = registerDefaultService(props);
+		// Wait a while
+		Thread.sleep(REGISTER_WAIT);
+
+		assertTrue(remoteServiceAdminEvents.size() > 0);
+		assertTrue(containsEventType(RemoteServiceAdminEvent.EXPORT_REGISTRATION));
+		
+		// Now bring down
+		registration.unregister();
+		registration = null;
+		
+		// Wait a while
+		Thread.sleep(REGISTER_WAIT);
+
+		assertTrue(remoteServiceAdminEvents.size() > 2);
+		assertTrue(containsEventType(RemoteServiceAdminEvent.EXPORT_UNREGISTRATION));
+		
+		// finally unregister the listenerReg
+		listenerReg.unregister();
+	}
 
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractTwoRemoteServiceAccessTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractTwoRemoteServiceAccessTest.java
new file mode 100644
index 0000000..54add6c
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/AbstractTwoRemoteServiceAccessTest.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * 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:
+ *   Composent - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;
+
+import java.util.Properties;
+
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.remoteservice.IRemoteCall;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.remoteserviceadmin.RemoteConstants;
+import org.osgi.util.tracker.ServiceTracker;
+
+public abstract class AbstractTwoRemoteServiceAccessTest extends
+		AbstractDistributionTest {
+
+	protected static final int REGISTER_WAIT = Integer.parseInt(System.getProperty("waittime","15000"));
+
+	private final String[] classes = new String[] { TestServiceInterface1.class.getName(), TestServiceInterface2.class.getName() };
+	
+	private ServiceTracker st;
+	private ServiceRegistration registration;
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ecf.tests.osgi.services.distribution.AbstractDistributionTest#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		// Unregister on server
+		if (registration != null) {
+			registration.unregister();
+			registration = null;
+		}
+		if (st != null) {
+			st.close();
+			st = null;
+		}
+		Thread.sleep(REGISTER_WAIT);
+
+		super.tearDown();
+	}
+
+	protected void createServiceTrackerAndRegister(String lookupClass, final Properties props) throws Exception {
+		// Setup service tracker for client
+		st = createProxyServiceTracker(lookupClass);
+
+		// Actually register
+		registration = registerService(classes,
+				new TestService1(), props);
+
+		// Wait
+		Thread.sleep(REGISTER_WAIT);
+	}
+
+	protected void createServiceTrackerAndRegister(String lookupClass) throws Exception {
+		createServiceTrackerAndRegister(lookupClass, getServiceProperties());
+	}
+
+	protected Properties getServiceProperties() {
+		final Properties props = new Properties();
+		props.put(RemoteConstants.SERVICE_EXPORTED_CONFIGS, getServerContainerName());
+		props.put(RemoteConstants.SERVICE_EXPORTED_INTERFACES, "*");
+		return props;
+	}
+
+	protected IRemoteCall createRemoteCall() {
+		return new IRemoteCall() {
+
+			public String getMethod() {
+				return "doStuff1";
+			}
+
+			public Object[] getParameters() {
+				return new Object[] {};
+			}
+
+			public long getTimeout() {
+				return 30000;
+			}
+
+		};
+	}
+
+
+	public void testGetRemoteService1Reference() throws Exception {
+		String lookupClass = TestServiceInterface1.class.getName();
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Service Consumer - Get (remote) ervice references
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+		// Spec requires that the 'service.imported' property be set
+		assertTrue(remoteReferences[0].getProperty(RemoteConstants.SERVICE_IMPORTED) != null);
+	}
+
+	public void testGetRemoteService2Reference() throws Exception {
+		String lookupClass = TestServiceInterface2.class.getName();
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Service Consumer - Get (remote) ervice references
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+		// Spec requires that the 'service.imported' property be set
+		assertTrue(remoteReferences[0].getProperty(RemoteConstants.SERVICE_IMPORTED) != null);
+	}
+	
+
+	public void testProxyWithService1() throws Exception {
+		String lookupClass = TestServiceInterface1.class.getName();
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Client - Get service references from service tracker
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+
+		// Get proxy/service
+		final TestServiceInterface1 proxy = (TestServiceInterface1) getContext()
+				.getService(remoteReferences[0]);
+		assertNotNull(proxy);
+		// Now use proxy
+		final String result = proxy.doStuff1();
+		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff1 result=" + result);
+		assertTrue(TestServiceInterface1.TEST_SERVICE_STRING1.equals(result));
+	}
+
+	public void testProxyWithService2() throws Exception {
+		
+		String lookupClass = TestServiceInterface2.class.getName();
+		
+		createServiceTrackerAndRegister(lookupClass);
+		
+		// Client - Get service references from service tracker
+		final ServiceReference[] remoteReferences = st.getServiceReferences();
+		assertReferencesValidAndFirstHasCorrectType(remoteReferences, lookupClass);
+
+		// Get proxy/service
+		final TestServiceInterface2 proxy = (TestServiceInterface2) getContext()
+				.getService(remoteReferences[0]);
+		assertNotNull(proxy);
+		// Now use proxy
+		String result = proxy.doStuff1();
+		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff1 result=" + result);
+		assertTrue(TestServiceInterface1.TEST_SERVICE_STRING1.equals(result));
+		
+		// Now use proxy
+		result = proxy.doStuff2();
+		Trace.trace(Activator.PLUGIN_ID, "proxy.doStuff2 result=" + result);
+		assertTrue(TestServiceInterface2.TEST_SERVICE_STRING2.equals(result));
+
+	}
+
+}
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/Activator.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/Activator.java
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/Activator.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/Activator.java
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointDescriptionFactoryTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointDescriptionFactoryTest.java
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointDescriptionFactoryTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointDescriptionFactoryTest.java
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointListenerTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointListenerTest.java
similarity index 93%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointListenerTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointListenerTest.java
index 6c16a20..af75cbb 100644
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointListenerTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/EndpointListenerTest.java
@@ -1,5 +1,6 @@
 package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;

 

+import java.util.Dictionary;

 import java.util.Properties;

 

 import org.osgi.framework.ServiceRegistration;

@@ -30,7 +31,7 @@
 	public void testEndpointListenerNotification() throws Exception {

 		Properties props = new Properties();

 		props.put(org.osgi.service.remoteserviceadmin.EndpointListener.ENDPOINT_LISTENER_SCOPE,"("+RemoteConstants.ENDPOINT_ID+"=*)");

-		ServiceRegistration endpointListenerRegistration = Activator.getDefault().getContext().registerService(EndpointListener.class.getName(), createEndpointListener(), props);

+		ServiceRegistration endpointListenerRegistration = Activator.getDefault().getContext().registerService(EndpointListener.class.getName(), createEndpointListener(), (Dictionary) props);

 		Thread.sleep(5000);

 		endpointListenerRegistration.unregister();

 	}

diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/ServiceInfoFactoryTest.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/ServiceInfoFactoryTest.java
similarity index 85%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/ServiceInfoFactoryTest.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/ServiceInfoFactoryTest.java
index f864286..f1bb631 100644
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/ServiceInfoFactoryTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/ServiceInfoFactoryTest.java
@@ -13,7 +13,7 @@
 import org.eclipse.ecf.discovery.IServiceInfo;

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

 

-public class ServiceInfoFactoryTest extends AbstractMetadataFactoryTest {

+public abstract class ServiceInfoFactoryTest extends AbstractMetadataFactoryTest {

 

 	protected void setUp() throws Exception {

 		super.setUp();

@@ -41,13 +41,4 @@
 		}

 	}

 	

-	public void testCreateBadECFEndpointDescription() throws Exception {

-		try{

-			createBadECFEndpointDescrption();

-			fail();

-		} catch (Exception e) {

-			// this is test success

-		}

-	}

-

 }

diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
similarity index 86%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
index d1bfb77..40644d7 100644
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
@@ -10,10 +10,14 @@
  *****************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;
 
-public final class TestService1 implements TestServiceInterface1 {
+public final class TestService1 implements TestServiceInterface1, TestServiceInterface2 {
 
 	public String doStuff1() {
 		return TestServiceInterface1.TEST_SERVICE_STRING1;
 	}
 
+	public String doStuff2() {
+		return TestServiceInterface2.TEST_SERVICE_STRING2;
+	}
+
 }
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1.java
similarity index 100%
rename from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1.java
rename to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1.java
diff --git a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface2.java
similarity index 78%
copy from incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
copy to tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface2.java
index d1bfb77..313d224 100644
--- a/incubation/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestService1.java
+++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface2.java
@@ -10,10 +10,11 @@
  *****************************************************************************/
 package org.eclipse.ecf.tests.osgi.services.remoteserviceadmin;
 
-public final class TestService1 implements TestServiceInterface1 {
+public interface TestServiceInterface2 extends TestServiceInterface1 {
 
-	public String doStuff1() {
-		return TestServiceInterface1.TEST_SERVICE_STRING1;
-	}
+	public static final String TEST_SERVICE_STRING2 = "TestService2";
+	
 
+	String doStuff2();
+	
 }
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/.project b/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
deleted file mode 100644
index f9bafca..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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>
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 e68c015..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery.local/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Tue May 04 19:23:53 PDT 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.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/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.dnssd/build.properties b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/build.properties
index fdf49d6..346912c 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/build.properties
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/build.properties
@@ -3,4 +3,5 @@
 bin.includes = META-INF/,\
                .
 jre.compilation.profile = J2SE-1.4
+additional.bundles = org.eclipse.equinox.concurrent
                
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.xmpp/src/org/eclipse/ecf/tests/provider/xmpp/RosterTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.xmpp/src/org/eclipse/ecf/tests/provider/xmpp/RosterTest.java
index a2eab4d..f7c84b9 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.xmpp/src/org/eclipse/ecf/tests/provider/xmpp/RosterTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.xmpp/src/org/eclipse/ecf/tests/provider/xmpp/RosterTest.java
@@ -3,10 +3,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 
-import org.eclipse.ecf.core.ContainerFactory;
-import org.eclipse.ecf.core.IContainer;
 import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.security.IConnectContext;
 import org.eclipse.ecf.presence.roster.IRoster;
 import org.eclipse.ecf.presence.roster.IRosterEntry;
 import org.eclipse.ecf.presence.roster.IRosterGroup;
@@ -108,11 +105,11 @@
 	/**
 	 * Counts the entries that match the username in the roster.
 	 */
-	private int countMatchingEntries(IRoster roster, String username) {
+	protected int countMatchingEntries(IRoster roster, String username) {
 		return countMatchingItems(roster.getItems(), username);
 	}
 	
-	private int countMatchingItems(Collection items, String username) {
+	protected int countMatchingItems(Collection items, String username) {
 		int sum = 0;
 		for (Iterator i = items.iterator(); i.hasNext();) {
 			IRosterItem item = (IRosterItem) i.next();
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.remoteservice.generic/.gitignore b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/.gitignore
old mode 100755
new mode 100644
index ba077a4..e0360b0
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/.gitignore
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/.gitignore
@@ -1 +1,3 @@
 bin
+/slewis.org.eclipse.ecf.tests.remoteservice.generic.host.launch
+/slewis.org.eclipse.ecf.tests.remoteservice.generic.launch
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/ServiceTrackerTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/ServiceTrackerTest.java
deleted file mode 100755
index 565d3fa..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/ServiceTrackerTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2008 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.remoteservice.generic;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-import org.eclipse.ecf.remoteservice.Constants;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.ecf.tests.remoteservice.AbstractServiceTrackerTest;
-import org.eclipse.ecf.tests.remoteservice.Activator;
-import org.eclipse.ecf.tests.remoteservice.IConcatService;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- *
- */
-public class ServiceTrackerTest extends AbstractServiceTrackerTest {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest#getClientContainerName()
-	 */
-	protected String getClientContainerName() {
-		return Generic.CONSUMER_CONTAINER_TYPE;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	protected void setUp() throws Exception {
-		super.setUp();
-		setClientCount(2);
-		createServerAndClients();
-		connectClients();
-		setupRemoteServiceAdapters();
-		addRemoteServiceListeners();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	protected void tearDown() throws Exception {
-		cleanUpServerAndClients();
-		super.tearDown();
-	}
-
-	public void testServiceTracker() throws Exception {
-		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
-		// client [0]/adapter[0] is the service 'server'
-		// client [1]/adapter[1] is the service target (client)
-		final Dictionary props = new Hashtable();
-		props.put(Constants.SERVICE_REGISTRATION_TARGETS, getClients()[1].getConnectedID());
-		props.put(Constants.AUTOREGISTER_REMOTE_PROXY, "true");
-		// Register
-		adapters[0].registerRemoteService(new String[] {IConcatService.class.getName()}, createService(), props);
-		// Give some time for propagation
-		sleep(3000);
-
-		final ServiceTracker st = new ServiceTracker(Activator.getDefault().getContext(), IConcatService.class.getName(), null);
-		assertNotNull(st);
-		st.open();
-		final IConcatService concatService = (IConcatService) st.getService();
-		assertNotNull(concatService);
-		System.out.println("proxy call start");
-		final String result = concatService.concat("OSGi ", "is cool");
-		System.out.println("proxy call end. result=" + result);
-		sleep(3000);
-		st.close();
-		sleep(3000);
-	}
-
-	/*
-	public void testRemoteServiceWithServiceTracker() throws Exception {
-		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
-		// client [0]/adapter[0] is the service 'server'
-		// client [1]/adapter[1] is the service target (client)
-		final Dictionary props = new Hashtable();
-		props.put(Constants.SERVICE_REGISTRATION_TARGETS, getClients()[1].getConnectedID());
-		props.put(Constants.AUTOREGISTER_REMOTE_PROXY, "true");
-		// Register
-		adapters[0].registerRemoteService(new String[] {IConcatService.class.getName()}, createService(), props);
-		// Give some time for propagation
-		sleep(3000);
-
-		final ServiceTracker st = new ServiceTracker(Activator.getDefault().getContext(), IConcatService.class.getName(), null);
-		assertNotNull(st);
-		st.open();
-		final ServiceReference ref = st.getServiceReference();
-		assertNotNull(ref);
-		final IRemoteService remoteService = (IRemoteService) ref.getProperty(Constants.REMOTE_SERVICE);
-		assertNotNull(remoteService);
-		// Call it asynch with listener
-		remoteService.callAsynch(createRemoteConcat("OSGi ", "Sucks (sic)"), createRemoteCallListener());
-
-		sleep(3000);
-		st.close();
-	}
-	*/
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatClient.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatClient.java
index 7fed938..5821f46 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatClient.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatClient.java
@@ -39,7 +39,7 @@
 		return remoteService;
 	}
 	
-	public void start() throws Exception {
+	public void start(int port) throws Exception {
 		IContainer client = ContainerFactory.getDefault().createContainer(
 				CLIENT_TYPE);
 		// Get adapter for accessing remote services
@@ -51,7 +51,7 @@
 		System.out.println("Client created with ID=" + client.getID());
 
 		ID connectTargetID = IDFactory.getDefault().createStringID(
-				NLS.bind(SERVER_ID, new Integer(SimpleConcatServer.PORT)));
+				NLS.bind(SERVER_ID, new Integer(port)));
 		
 		System.out.println("Attempting connect to id="+connectTargetID);
 		client.connect(connectTargetID, null);
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatServer.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatServer.java
index 8ee9c9f..2d42b92 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatServer.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleConcatServer.java
@@ -18,7 +18,6 @@
 
 public class SimpleConcatServer {
 
-	public static final int PORT = 9988;
 	public static final String PATH = "/server";
 	public static final String HOST = "localhost";
 	public static final int KEEPALIVE = 30000;
@@ -34,9 +33,9 @@
 		}
 		
 	}
-	public void start() throws Exception {
+	public void start(int port) throws Exception {
 		// Start server
-		server = new SimpleGenericServer(HOST,PORT);
+		server = new SimpleGenericServer(HOST,port);
 		server.start(PATH, KEEPALIVE);
 		
 		GenericServerContainer serverContainer = server.getServerContainer(0);
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleTest.java
index 765ffac..2ba5d99 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/SimpleTest.java
@@ -9,6 +9,9 @@
 ******************************************************************************/
 package org.eclipse.ecf.tests.remoteservice.generic;
 
+import java.io.IOException;
+import java.net.ServerSocket;
+
 import org.eclipse.ecf.remoteservice.IRemoteCall;
 import org.eclipse.ecf.remoteservice.IRemoteCallListener;
 import org.eclipse.ecf.remoteservice.IRemoteService;
@@ -29,12 +32,26 @@
 	
 	protected void setUp() throws Exception {
 		super.setUp();
+		int freePort = getFreePort();
+		if (freePort == -1) throw new Exception("could not run test because could not find open port for server");
 		server = new SimpleConcatServer();
-		server.start();
+		server.start(freePort);
 		client = new SimpleConcatClient();
-		client.start();
+		client.start(freePort);
 	}
 	
+	private int getFreePort() {
+		int port = -1;
+		try {
+			ServerSocket ss = new ServerSocket(0);
+			port = ss.getLocalPort();
+			ss.close();
+		} catch (IOException e) {
+			return -1;
+		}
+		return port;
+	}
+
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		client.stop();
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/TransparentProxyTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/TransparentProxyTest.java
deleted file mode 100755
index 2471997..0000000
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/src/org/eclipse/ecf/tests/remoteservice/generic/TransparentProxyTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
- * 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.tests.remoteservice.generic;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-import org.eclipse.ecf.remoteservice.Constants;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
-import org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest;
-import org.eclipse.ecf.tests.remoteservice.Activator;
-import org.eclipse.ecf.tests.remoteservice.IConcatService;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-public class TransparentProxyTest extends AbstractRemoteServiceTest {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ecf.tests.remoteservice.AbstractRemoteServiceTest#getClientContainerName()
-	 */
-	protected String getClientContainerName() {
-		return Generic.CONSUMER_CONTAINER_TYPE;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see junit.framework.TestCase#setUp()
-	 */
-	protected void setUp() throws Exception {
-		super.setUp();
-		setClientCount(2);
-		createServerAndClients();
-		connectClients();
-		setupRemoteServiceAdapters();
-		addRemoteServiceListeners();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see junit.framework.TestCase#tearDown()
-	 */
-	protected void tearDown() throws Exception {
-		cleanUpServerAndClients();
-		super.tearDown();
-	}
-
-	public void testTransparentProxy() throws Exception {
-		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
-		// client [0]/adapter[0] is the service 'server'
-		// client [1]/adapter[1] is the service target (client)
-		final Dictionary props = new Hashtable();
-		props.put(Constants.SERVICE_REGISTRATION_TARGETS, getClients()[1].getConnectedID());
-		props.put(Constants.AUTOREGISTER_REMOTE_PROXY, "true");
-		// Register
-		adapters[0].registerRemoteService(new String[] {IConcatService.class.getName()}, createService(), props);
-		// Give some time for propagation
-		sleep(2000);
-
-		final BundleContext bc = Activator.getDefault().getContext();
-		assertNotNull(bc);
-		final ServiceReference ref = bc.getServiceReference(IConcatService.class.getName());
-		assertNotNull(ref);
-		final IConcatService concatService = (IConcatService) bc.getService(ref);
-		assertNotNull(concatService);
-		System.out.println("proxy call start");
-		final String result = concatService.concat("OSGi ", "is cool");
-		System.out.println("proxy call end. result=" + result);
-		bc.ungetService(ref);
-	}
-
-	/*
-	public void testIRemoteService() throws Exception {
-		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
-		// client [0]/adapter[0] is the service 'server'
-		// client [1]/adapter[1] is the service target (client)
-		final Dictionary props = new Hashtable();
-		props.put(Constants.SERVICE_REGISTRATION_TARGETS, getClients()[1].getConnectedID());
-		props.put(Constants.AUTOREGISTER_REMOTE_PROXY, "true");
-		// Register
-		adapters[0].registerRemoteService(new String[] {IConcatService.class.getName()}, createService(), props);
-		// Give some time for propagation
-		sleep(3000);
-
-		final BundleContext bc = Activator.getDefault().getContext();
-		assertNotNull(bc);
-		final ServiceReference ref = bc.getServiceReference(IConcatService.class.getName());
-		assertNotNull(ref);
-		final IRemoteService remoteService = (IRemoteService) ref.getProperty(Constants.REMOTE_SERVICE);
-		assertNotNull(remoteService);
-		// Call it asynch with listener
-		remoteService.callAsynch(createRemoteConcat("OSGi ", "Sucks (sic)"), createRemoteCallListener());
-		sleep(3000);
-	}
-	*/
-}
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/src/org/eclipse/ecf/tests/remoteservice/rest/RestPutServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/src/org/eclipse/ecf/tests/remoteservice/rest/RestPutServiceTest.java
new file mode 100644
index 0000000..f4a4bb5
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/src/org/eclipse/ecf/tests/remoteservice/rest/RestPutServiceTest.java
@@ -0,0 +1,82 @@
+package org.eclipse.ecf.tests.remoteservice.rest;

+

+import java.io.NotSerializableException;

+import java.util.Map;

+

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

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

+import org.eclipse.ecf.remoteservice.IRemoteCall;

+import org.eclipse.ecf.remoteservice.IRemoteService;

+import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

+import org.eclipse.ecf.remoteservice.client.IRemoteCallParameter;

+import org.eclipse.ecf.remoteservice.client.IRemoteCallable;

+import org.eclipse.ecf.remoteservice.client.IRemoteResponseDeserializer;

+import org.eclipse.ecf.remoteservice.client.IRemoteServiceClientContainerAdapter;

+import org.eclipse.ecf.remoteservice.client.RemoteCallParameter;

+import org.eclipse.ecf.remoteservice.rest.RestCallFactory;

+import org.eclipse.ecf.remoteservice.rest.RestCallableFactory;

+import org.eclipse.ecf.remoteservice.rest.client.HttpPutRequestType;

+

+@SuppressWarnings("unused")

+public class RestPutServiceTest extends AbstractRestTestCase {

+

+	private String username = System.getProperty("rest.test.username","p126371rw");

+	private String password = System.getProperty("rest.test.password","demo");

+	private String uri = System.getProperty("rest.test.uri","http://phprestsql.sourceforge.net");

+	private String resourcePath = System.getProperty("rest.test.resourcePath","/tutorial/user/7");

+	private String method = System.getProperty("rest.test.method","putUser");

+	

+	private IContainer container;

+	private IRemoteServiceRegistration registration;

+	

+	@Override

+	protected void setUp() throws Exception {

+		super.setUp();

+		// Create container for service URI

+		container = createRestContainer(uri);

+		// Get adapter and set authentication info

+		IRemoteServiceClientContainerAdapter adapter = (IRemoteServiceClientContainerAdapter) getRemoteServiceClientContainerAdapter(container);

+		

+		// Setup authentication

+		adapter.setConnectContextForAuthentication(ConnectContextFactory.createUsernamePasswordConnectContext(username, password));

+		// Setup response deserializer to do absolutely nothing (return null).  Note this is specific to this service.

+		adapter.setResponseDeserializer(new IRemoteResponseDeserializer() {

+			public Object deserializeResponse(String endpoint,

+					IRemoteCall call, IRemoteCallable callable,

+					Map responseHeaders, String responseBody)

+					throws NotSerializableException {

+				return null;

+			}});

+

+		// Create callable and register

+		IRemoteCallable callable = RestCallableFactory.createCallable(method,resourcePath,

+				new IRemoteCallParameter[] { new RemoteCallParameter("body")} ,

+				new HttpPutRequestType(HttpPutRequestType.STRING_REQUEST_ENTITY,"application/xml",-1,"UTF-8"));

+		// register callable

+		registration = adapter.registerCallables(new IRemoteCallable[] { callable } , null);

+		

+	}

+	

+	

+	public void testPutCallSync() throws Exception {

+//		IRemoteService restClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registration.getReference());

+//		System.out.println("put uri="+uri+resourcePath);

+//		String body = createBody();

+//		System.out.println("body="+body);

+//		System.out.print("making remote method call="+method+"...");

+//		Object result = restClientService.callSync(RestCallFactory.createRestCall(method, new String[] { body }));

+//		System.out.println("received result="+result);

+	}

+	

+	

+	private String createBody() {

+		return "firstname=Scott\nsurname=Example\nemail=slewis@example.org\ncompany_uid=1";

+	}

+	

+	@Override

+	protected void tearDown() throws Exception {

+		super.tearDown();

+		registration.unregister();

+		container.disconnect();

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..7cea4b4
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Tue Jan 25 17:13:34 MSK 2011

+eclipse.preferences.version=1

+formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile

+formatter_settings_version=12

+org.eclipse.jdt.ui.ignorelowercasenames=true

+org.eclipse.jdt.ui.importorder=;

+org.eclipse.jdt.ui.javadoc=false

+org.eclipse.jdt.ui.ondemandthreshold=99

+org.eclipse.jdt.ui.staticondemandthreshold=99

+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2010-2011 Naumen. All rights reserved. This\r\n * program and the accompanying materials are made available under the terms of\r\n * the Eclipse Public License v1.0 which accompanies this distribution, and is\r\n * available at http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\: Pavel Samolisov - initial API and implementation\r\n ******************************************************************************/\r\n${package_declaration}\r\n\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF
index 0917e3b..7d261b3 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF
@@ -10,6 +10,19 @@
  org.eclipse.ecf.tests;bundle-version="2.1.0",
  org.eclipse.ecf.tests.remoteservice;bundle-version="2.0.0",
  org.junit;bundle-version="3.8.2",
- org.eclipse.ecf.remoteservice.rpc;bundle-version="1.0.0"
+ org.eclipse.ecf.remoteservice.rpc;bundle-version="1.0.0",
+ org.apache.commons.logging;bundle-version="1.0.4",
+ org.apache.ws.commons.util;bundle-version="1.0.0",
+ org.apache.xmlrpc;bundle-version="3.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
+Import-Package: javax.servlet;version="2.5.0",
+ javax.servlet.http;version="2.5.0",
+ org.eclipse.ecf.remoteservice;version="6.0.0",
+ org.eclipse.ecf.remoteservice.client;version="6.0.0",
+ org.eclipse.ecf.remoteservice.events;version="6.0.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
+ org.eclipse.equinox.http.jetty;version="1.1.0",
+ org.osgi.service.http;version="1.2.1"
+Bundle-Localization: plugin
+Export-Package: org.eclipse.ecf.tests.remoteservice.rpc.common
diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/about.html
similarity index 100%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/about.html
rename to tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/about.html
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/build.properties b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/build.properties
index 34d2e4d..94ae8e3 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/build.properties
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/build.properties
@@ -1,4 +1,12 @@
+############################################################################
+# 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
+############################################################################
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               plugin.properties
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.remoteservice.rpc/org.eclipse.ecf.tests.remoteservice.rpc.launch
similarity index 60%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery.local/org.eclipse.ecf.tests.osgi.services.discovery.local.launch
rename to tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/org.eclipse.ecf.tests.remoteservice.rpc.launch
index 4e0529b..202cb31 100644
--- 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.remoteservice.rpc/org.eclipse.ecf.tests.remoteservice.rpc.launch
@@ -1,44 +1,42 @@
-<?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>
+<?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="true"/>

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

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

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

+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.ecf.tests.remoteservice.rpc"/>

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

+<stringAttribute key="pde.version" value="3.3"/>

+<stringAttribute key="product" value="org.eclipse.epp.package.rcp.product"/>

+<booleanAttribute key="run_in_ui_thread" value="true"/>

+<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/plugin.properties b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/plugin.properties
similarity index 76%
rename from tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties
rename to tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/plugin.properties
index 1a272bc..f367ca0 100644
--- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.discovery/plugin.properties
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/plugin.properties
@@ -1,11 +1,9 @@
 ############################################################################
-# Copyright (c) 2009 Eclipsesource and others.
+# 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
-#
 ############################################################################
-plugin.name=ECF Distribution Tests
-plugin.provider=Eclipse.org - ECF
-
+pluginName = ECF XML-RPC API
+providerName = Eclipse.org - ECF
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties
new file mode 100644
index 0000000..9d5ba59
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties
@@ -0,0 +1,10 @@
+############################################################################

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

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

+Echo = org.eclipse.ecf.internal.tests.remoteservice.rpc.server.EchoHandler

+Calc = org.eclipse.ecf.internal.tests.remoteservice.rpc.server.CalcHandler

+org.eclipse.ecf.tests.remoteservice.rpc.common.IEcho = org.eclipse.ecf.internal.tests.remoteservice.rpc.server.EchoHandler
\ No newline at end of file
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java
index f8c918d..5112194 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java
@@ -1,11 +1,36 @@
+/******************************************************************************* 
+ * 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.tests.remoteservice.rpc;
 
+import org.eclipse.equinox.http.jetty.JettyConfigurator;
+
+import java.util.Hashtable;
+
+import java.util.Dictionary;
+
+import org.apache.xmlrpc.webserver.XmlRpcServlet;
+
+import org.eclipse.ecf.tests.remoteservice.rpc.RpcConstants;
+
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
 public class Activator implements BundleActivator {
 
+    private static final String HTTP_PORT_KEY = "http.port"; //$NON-NLS-1$
+
+    private static final String SERVER_NAME = "xmlrpcserver"; //$NON-NLS-1$
+	
 	private static BundleContext context;
+	
+	private HttpServiceConnector httpServiceConnector;
 
 	static BundleContext getContext() {
 		return context;
@@ -17,6 +42,11 @@
 	 */
 	public void start(BundleContext bundleContext) throws Exception {
 		Activator.context = bundleContext;
+		httpServiceConnector = new HttpServiceConnector(context, RpcConstants.TEST_SERVLETS_PATH, new XmlRpcServlet());
+		
+		Dictionary<String, Object> properties = new Hashtable<String, Object>();
+        properties.put(HTTP_PORT_KEY, RpcConstants.HTTP_PORT);
+        JettyConfigurator.startServer(SERVER_NAME, properties);
 	}
 
 	/*
@@ -25,6 +55,11 @@
 	 */
 	public void stop(BundleContext bundleContext) throws Exception {
 		Activator.context = null;
+		JettyConfigurator.stopServer(SERVER_NAME);
+		
+		if (httpServiceConnector != null) {
+			httpServiceConnector.close();
+			httpServiceConnector = null;
+		}
 	}
-
 }
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/HttpServiceConnector.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/HttpServiceConnector.java
new file mode 100644
index 0000000..03d2a65
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/HttpServiceConnector.java
@@ -0,0 +1,58 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

+import javax.servlet.http.HttpServlet;

+import org.osgi.framework.BundleContext;

+import org.osgi.framework.ServiceReference;

+import org.osgi.service.http.HttpService;

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

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

+

+@SuppressWarnings("rawtypes")

+public class HttpServiceConnector extends ServiceTracker implements ServiceTrackerCustomizer {

+

+	private String path;

+

+    private HttpServlet servlet;

+

+    @SuppressWarnings("unchecked")

+	public HttpServiceConnector(BundleContext context, String path, HttpServlet servlet) {

+        super(context, HttpService.class.getName(), null);

+        this.path = path;

+        this.servlet = servlet;

+        

+        open();

+    }

+

+    public Object addingService(ServiceReference reference) {

+        @SuppressWarnings("unchecked")

+		HttpService httpService = (HttpService) super.addingService(reference);

+        if (httpService == null)

+          return null;

+

+        try {

+          httpService.registerServlet(path, servlet, null, null);

+        }

+        catch (Exception e) {

+          e.printStackTrace();

+        }

+        

+        return httpService;

+    }

+

+    @SuppressWarnings("unchecked")

+	public void removedService(ServiceReference reference, Object service) {

+        HttpService httpService = (HttpService) service;

+        httpService.unregister(path);

+

+        super.removedService(reference, service);

+    }

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/server/CalcHandler.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/server/CalcHandler.java
new file mode 100644
index 0000000..f405b80
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/server/CalcHandler.java
@@ -0,0 +1,21 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc.server;

+

+public class CalcHandler {

+	

+	public int add(int i1, int i2) {

+		return i1 + i2;

+	}

+	

+	public int sub(int i1, int i2) {

+		return i1 - i2;

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/server/EchoHandler.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/server/EchoHandler.java
new file mode 100644
index 0000000..6970607
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/server/EchoHandler.java
@@ -0,0 +1,20 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc.server;

+

+import org.eclipse.ecf.tests.remoteservice.rpc.common.IEcho;

+

+public class EchoHandler implements IEcho {

+	

+	public String echo(String str) {

+		System.out.println(str); // TODO using logger		

+		return str;

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java
new file mode 100644
index 0000000..3657b78
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/AbstractRpcTestCase.java
@@ -0,0 +1,47 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

+import java.util.Dictionary;

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

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

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

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

+import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

+import org.eclipse.ecf.remoteservice.client.IRemoteCallable;

+import org.eclipse.ecf.remoteservice.client.IRemoteServiceClientContainerAdapter;

+import org.eclipse.ecf.tests.ECFAbstractTestCase;

+

+public abstract class AbstractRpcTestCase extends ECFAbstractTestCase {

+	

+	protected IContainer createRpcContainer(String uri) throws ContainerCreateException {

+		return getContainerFactory().createContainer(RpcConstants.RPC_CONTAINER_TYPE, uri);

+	}

+

+	protected IContainer createRpcContainer(ID rpcId) throws ContainerCreateException {

+		return getContainerFactory().createContainer(RpcConstants.RPC_CONTAINER_TYPE, rpcId);

+	}

+	

+	protected ID createRpcID(String id) throws IDCreateException {

+		return getIDFactory().createID(RpcConstants.NAMESPACE, id);

+	}

+

+	protected IRemoteServiceClientContainerAdapter getRemoteServiceClientContainerAdapter(IContainer container) {

+		return (IRemoteServiceClientContainerAdapter) container.getAdapter(IRemoteServiceClientContainerAdapter.class);

+	}

+	

+	protected IRemoteServiceRegistration registerCallable(IContainer container, IRemoteCallable callable, Dictionary<String, Object> properties) {

+		return getRemoteServiceClientContainerAdapter(container).registerCallables(new IRemoteCallable[] { callable }, properties);

+	}

+

+	protected IRemoteServiceRegistration registerCallable(IContainer container, IRemoteCallable[] callables, Dictionary<String, Object> properties) {

+		return getRemoteServiceClientContainerAdapter(container).registerCallables(callables, properties);

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcConstants.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcConstants.java
new file mode 100644
index 0000000..18e8378
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcConstants.java
@@ -0,0 +1,37 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

+public interface RpcConstants {

+

+	public static final String RPC_CONTAINER_TYPE = "ecf.xmlrpc.client"; //$NON-NLS-1$

+

+	public static final String NAMESPACE = "ecf.xmlrpc.namespace"; //$NON-NLS-1$	

+	

+	public static final int HTTP_PORT = 8085;

+	

+	public static final String TEST_SERVLETS_PATH = "/xmlrpc"; //$NON-NLS-1$

+	

+	public static final String TEST_ECHO_TARGET = "http://localhost:" + HTTP_PORT + TEST_SERVLETS_PATH; //$NON-NLS-1$ //$NON-NLS-2$

+	

+	public static final String TEST_ECHO_METHOD = "Echo.echo"; //$NON-NLS-1$

+	

+	public static final String TEST_ECHO_METHOD_NAME = "echo"; //$NON-NLS-1$

+	

+	public static final String TEST_ECHO_METHOD_PARAM = "text"; //$NON-NLS-1$

+	

+	public static final String TEST_CALC_PLUS_METHOD = "Calc.add"; //$NON-NLS-1$

+	

+	public static final String TEST_CALC_PLUS_METHOD_NAME = "plus"; //$NON-NLS-1$

+	

+	public static final String TEST_CALC_PLUS_METHOD_PARAM1 = "val1"; //$NON-NLS-1$

+	

+	public static final String TEST_CALC_PLUS_METHOD_PARAM2 = "val2"; //$NON-NLS-1$

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RPCContainerInstantiatorTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcContainerInstantiatorTest.java
similarity index 74%
rename from tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RPCContainerInstantiatorTest.java
rename to tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcContainerInstantiatorTest.java
index fff0845..8c77a75 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RPCContainerInstantiatorTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcContainerInstantiatorTest.java
@@ -1,3 +1,12 @@
+/******************************************************************************* 
+ * 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.tests.remoteservice.rpc;
 
 import java.util.Date;
@@ -8,17 +17,15 @@
 import org.eclipse.ecf.core.IContainerFactory;
 import org.eclipse.ecf.tests.ECFAbstractTestCase;
 
-public class RPCContainerInstantiatorTest extends ECFAbstractTestCase {
-
-	private static final String RPC_CONTAINER_TYPE = "ecf.xmlrpc.client";
-	
+public class RpcContainerInstantiatorTest extends ECFAbstractTestCase {
+		
 	private IContainerFactory containerFactory;
     
     private ContainerTypeDescription description;
 
     protected void setUp() throws Exception {
         containerFactory = getContainerFactory();
-        description = containerFactory.getDescriptionByName(RPC_CONTAINER_TYPE);
+        description = containerFactory.getDescriptionByName(RpcConstants.RPC_CONTAINER_TYPE);
     }
     
     public void testSupportedParameterTypes() {     
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcContainerTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcContainerTest.java
new file mode 100644
index 0000000..ae8ef46
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcContainerTest.java
@@ -0,0 +1,53 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

+import java.net.URI;

+import java.net.URL;

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

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

+import org.eclipse.ecf.remoteservice.rpc.client.RpcClientContainer;

+

+public class RpcContainerTest extends AbstractRpcTestCase {

+

+	protected void tearDown() throws Exception {

+		getContainerManager().removeAllContainers();

+	}

+

+	public void testCreateContainer() throws Exception {

+		IContainer container = createRpcContainer(RpcConstants.TEST_ECHO_TARGET);

+		assertNotNull(container);

+		assertTrue(container instanceof RpcClientContainer);

+	}

+

+	public void testCreateContainer1() throws Exception {

+		IContainer container = createRpcContainer(RpcConstants.TEST_ECHO_TARGET);

+		assertNotNull(container);

+		assertTrue(container instanceof RpcClientContainer);

+	}

+

+	public void testCreateContainer2() throws Exception {

+		ContainerTypeDescription description = getContainerFactory()

+				.getDescriptionByName(RpcConstants.RPC_CONTAINER_TYPE);

+		IContainer container = getContainerFactory().createContainer(description,

+				new Object[] { new URL(RpcConstants.TEST_ECHO_TARGET) });

+		assertNotNull(container);

+		assertTrue(container instanceof RpcClientContainer);

+	}

+

+	public void testCreateContainer3() throws Exception {

+		ContainerTypeDescription description = getContainerFactory()

+				.getDescriptionByName(RpcConstants.RPC_CONTAINER_TYPE);

+		IContainer container = getContainerFactory().createContainer(description,

+				new Object[] { new URI(RpcConstants.TEST_ECHO_TARGET) });

+		assertNotNull(container);

+		assertTrue(container instanceof RpcClientContainer);

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcNamespaceTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcNamespaceTest.java
new file mode 100644
index 0000000..62fabe1
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcNamespaceTest.java
@@ -0,0 +1,43 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

+import java.net.MalformedURLException;

+import java.net.URL;

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

+import org.eclipse.ecf.remoteservice.rpc.identity.RpcNamespace;

+

+public class RpcNamespaceTest extends AbstractRpcTestCase {

+

+	public void testCreation() {

+		String desc = "description";

+		RpcNamespace namespace = new RpcNamespace(RpcNamespace.NAME, desc);

+		assertEquals(RpcNamespace.NAME, namespace.getName());

+		assertEquals(desc, namespace.getDescription());

+	}

+	

+	public void testCreateInstance() {

+		RpcNamespace namespace = new RpcNamespace(RpcNamespace.NAME, null);

+		Object[] parameters;

+		try {			

+			String url = RpcConstants.TEST_ECHO_TARGET;

+			parameters = new Object[] {new URL(url)};

+			ID id = namespace.createInstance(parameters);

+			assertEquals(url, id.getName());

+		} catch (MalformedURLException e) {

+			fail();

+		}		

+	}

+	

+	public void testGetScheme() {

+		RpcNamespace namespace = new RpcNamespace(RpcNamespace.NAME, null);

+		assertEquals(RpcNamespace.SCHEME, namespace.getScheme());

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcRemoteServiceAdapterTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcRemoteServiceAdapterTest.java
new file mode 100644
index 0000000..c7a63ae
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcRemoteServiceAdapterTest.java
@@ -0,0 +1,99 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

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

+import org.eclipse.ecf.remoteservice.Constants;

+import org.eclipse.ecf.remoteservice.IRemoteFilter;

+import org.eclipse.ecf.remoteservice.IRemoteService;

+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.client.IRemoteCallable;

+import org.eclipse.ecf.remoteservice.client.IRemoteServiceClientContainerAdapter;

+import org.eclipse.ecf.remoteservice.client.RemoteCallableFactory;

+import org.eclipse.ecf.remoteservice.events.IRemoteServiceEvent;

+import org.eclipse.ecf.remoteservice.events.IRemoteServiceRegisteredEvent;

+import org.osgi.framework.InvalidSyntaxException;

+

+public class RpcRemoteServiceAdapterTest extends AbstractRpcTestCase {

+	

+	IContainer container;

+	

+	protected void setUp() throws Exception {

+		super.setUp();

+		container = createRpcContainer(RpcConstants.TEST_ECHO_TARGET);

+	}

+

+	protected void tearDown() throws Exception {

+		super.tearDown();

+		container.disconnect();

+		container.dispose();

+		getContainerManager().removeAllContainers();

+	}

+

+	IRemoteServiceClientContainerAdapter getRemoteServiceClientContainerAdapter() {

+		return super.getRemoteServiceClientContainerAdapter(container);

+	}

+	

+	IRemoteServiceRegistration createRpcRegistration(String method) {

+		IRemoteCallable callable = RemoteCallableFactory.createCallable(method);		

+		return registerCallable(container, callable, null);

+	}

+	

+	public void testGetRemoteService() {

+		IRemoteServiceRegistration registration = createRpcRegistration(RpcConstants.TEST_ECHO_METHOD);

+		IRemoteServiceReference reference = registration.getReference();

+		assertNotNull(reference);

+		IRemoteService remoteService = getRemoteServiceClientContainerAdapter().getRemoteService(reference);

+		assertNotNull(remoteService);

+	}

+	

+	public void testGetRemoteServiceReference() {

+		IRemoteServiceRegistration registration = createRpcRegistration(RpcConstants.TEST_ECHO_METHOD);

+		IRemoteServiceReference remoteServiceReference = getRemoteServiceClientContainerAdapter().getRemoteServiceReference(registration.getID());

+		assertEquals(registration.getReference(), remoteServiceReference);

+	}

+	

+	public void testUngetRemoteService() {

+		IRemoteServiceRegistration registration = createRpcRegistration(RpcConstants.TEST_ECHO_METHOD);

+		IRemoteServiceReference reference = registration.getReference();

+		getRemoteServiceClientContainerAdapter().getRemoteService(reference);

+		assertTrue(getRemoteServiceClientContainerAdapter().ungetRemoteService(reference));

+	}

+

+	public void testRemoteServiceRegisteredEvent() {

+		IRemoteServiceClientContainerAdapter adapter = getRemoteServiceClientContainerAdapter();

+		adapter.addRemoteServiceListener(new IRemoteServiceListener() {

+			public void handleServiceEvent(IRemoteServiceEvent event) {

+				assertTrue(event instanceof IRemoteServiceRegisteredEvent);

+			}

+		});

+		createRpcRegistration(RpcConstants.TEST_ECHO_METHOD);

+	}

+	

+	public void testCreateRemoteFilter() {

+		String filter = "(" + Constants.OBJECTCLASS + "=" + IRemoteService.class.getName() + ")";

+		try {

+			IRemoteFilter remoteFilter = getRemoteServiceClientContainerAdapter().createRemoteFilter(filter);

+			assertNotNull(remoteFilter);

+		} catch (InvalidSyntaxException e) {

+			fail();

+		}		

+	}

+	

+	public void testGetRemoteServiceID() {

+		IRemoteServiceRegistration registration = createRpcRegistration(RpcConstants.TEST_ECHO_METHOD);

+		long containerRelativeID = registration.getID().getContainerRelativeID();

+		IRemoteServiceID remoteServiceID = getRemoteServiceClientContainerAdapter().getRemoteServiceID(container.getID(), containerRelativeID);

+		assertEquals(registration.getID(), remoteServiceID);

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcRemoteServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcRemoteServiceTest.java
new file mode 100644
index 0000000..37589d8
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/RpcRemoteServiceTest.java
@@ -0,0 +1,143 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc;

+

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

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

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

+import org.eclipse.ecf.internal.tests.remoteservice.rpc.Activator;

+import org.eclipse.ecf.remoteservice.IRemoteCall;

+import org.eclipse.ecf.remoteservice.IRemoteCallListener;

+import org.eclipse.ecf.remoteservice.IRemoteService;

+import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;

+import org.eclipse.ecf.remoteservice.RemoteCallFactory;

+import org.eclipse.ecf.remoteservice.client.IRemoteCallParameter;

+import org.eclipse.ecf.remoteservice.client.IRemoteCallable;

+import org.eclipse.ecf.remoteservice.client.RemoteCallParameter;

+import org.eclipse.ecf.remoteservice.client.RemoteCallableFactory;

+import org.eclipse.ecf.remoteservice.events.IRemoteCallCompleteEvent;

+import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent;

+import org.eclipse.ecf.tests.remoteservice.rpc.common.IEcho;

+import org.eclipse.equinox.concurrent.future.IFuture;

+

+@SuppressWarnings("restriction")

+public class RpcRemoteServiceTest extends AbstractRpcTestCase {

+

+	private static final String ECHO_TEST_DATA = "Hello, world";

+	

+	IContainer container;

+	

+	IRemoteServiceRegistration registrationEcho;

+	

+	IRemoteServiceRegistration registrationEchoProxy;

+	

+	IRemoteServiceRegistration registrationCalc;

+	

+	protected void setUp() throws Exception {

+		container = createRpcContainer(RpcConstants.TEST_ECHO_TARGET);

+		

+		IRemoteCallable callableEcho = RemoteCallableFactory.createCallable(RpcConstants.TEST_ECHO_METHOD_NAME, RpcConstants.TEST_ECHO_METHOD, 

+				new IRemoteCallParameter[]{new RemoteCallParameter(RpcConstants.TEST_ECHO_METHOD_PARAM)});

+		registrationEcho = registerCallable(container, callableEcho, null);

+		

+		IRemoteCallable callableEchoProxy = RemoteCallableFactory.createCallable(IEcho.class.getName());

+		registrationEchoProxy = registerCallable(container, callableEchoProxy, null);

+		

+		IRemoteCallable callableCalc = RemoteCallableFactory.createCallable(RpcConstants.TEST_CALC_PLUS_METHOD_NAME, RpcConstants.TEST_CALC_PLUS_METHOD, 

+				new IRemoteCallParameter[]{

+					new RemoteCallParameter(RpcConstants.TEST_CALC_PLUS_METHOD_PARAM1),

+					new RemoteCallParameter(RpcConstants.TEST_CALC_PLUS_METHOD_PARAM2)});

+		registrationCalc = registerCallable(container, callableCalc, null);

+	}

+

+	protected void tearDown() throws Exception {

+		registrationEcho.unregister();

+		registrationEchoProxy.unregister();

+		registrationCalc.unregister();

+		container.disconnect();

+	}

+

+	public void testCallViaProxy() {

+		IRemoteService rpcClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registrationEchoProxy.getReference());

+		try {

+			IEcho echo = (IEcho) rpcClientService.getProxy(Activator.class.getClassLoader(), new Class[]{IEcho.class});

+			assertNotNull(echo);

+			Object result = echo.echo(ECHO_TEST_DATA);

+			assertNotNull(result);

+			assertEquals(result, ECHO_TEST_DATA);

+		}

+		catch (ECFException e) {

+			e.printStackTrace();

+			fail("Could not contact the service");

+		}

+	}

+	

+	public void testCallViaProxy2() {

+		IRemoteService rpcClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registrationEchoProxy.getReference());

+		try {

+			IEcho echo = (IEcho) rpcClientService.getProxy();

+			assertNotNull(echo);

+			Object result = echo.echo(ECHO_TEST_DATA);

+			assertNotNull(result);

+			assertEquals(result, ECHO_TEST_DATA);

+		}

+		catch (ECFException e) {

+			e.printStackTrace();

+			fail("Could not contact the service");

+		}

+	}

+	

+	public void testSyncCall() {

+		IRemoteService rpcClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registrationEcho.getReference());		

+		try {

+			Object result = rpcClientService.callSync(getEchoCall());

+			assertNotNull(result);

+			assertTrue(ECHO_TEST_DATA.equals(result));

+		} catch (ECFException e) {

+			fail("Could not contact the service");

+		}

+	}

+

+	public void testAsynCall() {

+		IRemoteService rpcClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registrationCalc.getReference());

+		IFuture future = rpcClientService.callAsync(getCalcPlusCall());

+		try {

+			Object response = future.get();

+			assertTrue(response instanceof Integer);

+		} catch (OperationCanceledException e) {

+			fail(e.getMessage());

+		} catch (InterruptedException e) {

+			fail(e.getMessage());

+		}

+	}

+	

+	public void testAsyncCallWithListener() throws Exception {

+		IRemoteService rpcClientService = getRemoteServiceClientContainerAdapter(container).getRemoteService(registrationCalc.getReference());

+		rpcClientService.callAsync(getCalcPlusCall(), new IRemoteCallListener() {

+			public void handleEvent(IRemoteCallEvent event) {

+				if (event instanceof IRemoteCallCompleteEvent) {

+					IRemoteCallCompleteEvent cce = (IRemoteCallCompleteEvent) event;

+					Object response = cce.getResponse();

+					assertTrue(response instanceof Integer);

+					syncNotify();

+				}

+			}

+		});

+		syncWaitForNotify(10000);

+	}

+	

+	private IRemoteCall getEchoCall() {

+		return RemoteCallFactory.createRemoteCall(RpcConstants.TEST_ECHO_METHOD_NAME, new Object[]{ECHO_TEST_DATA});

+	}

+	

+	private IRemoteCall getCalcPlusCall() {

+		return RemoteCallFactory.createRemoteCall(RpcConstants.TEST_CALC_PLUS_METHOD_NAME, new Object[]{new Integer(2), new Integer(3)});

+	}

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/common/IEcho.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/common/IEcho.java
new file mode 100644
index 0000000..7f96f2b
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/tests/remoteservice/rpc/common/IEcho.java
@@ -0,0 +1,15 @@
+/******************************************************************************* 

+ * 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.tests.remoteservice.rpc.common;

+

+public interface IEcho {

+	

+	public String echo(String str);

+}

diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF
old mode 100755
new mode 100644
index de3895f..4475db2
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF
@@ -11,7 +11,7 @@
  org.eclipse.ecf.remoteservice,
  org.junit,
  org.eclipse.equinox.app;bundle-version="1.2.0"
-Export-Package: org.eclipse.ecf.tests.remoteservice
+Export-Package: org.eclipse.ecf.tests.remoteservice;version="2.0.0"
 Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
  org.eclipse.osgi.util,
  org.osgi.framework;version="1.4.0",
@@ -19,3 +19,4 @@
 Bundle-RequiredExecutionEnvironment: J2SE-1.4
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.ecf.tests.remoteservice.Activator
+
diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice/src/org/eclipse/ecf/tests/remoteservice/AbstractRemoteServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.remoteservice/src/org/eclipse/ecf/tests/remoteservice/AbstractRemoteServiceTest.java
index 8e309f6..7371f59 100644
--- a/tests/bundles/org.eclipse.ecf.tests.remoteservice/src/org/eclipse/ecf/tests/remoteservice/AbstractRemoteServiceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice/src/org/eclipse/ecf/tests/remoteservice/AbstractRemoteServiceTest.java
@@ -19,12 +19,14 @@
 import org.eclipse.ecf.core.identity.ID;
 import org.eclipse.ecf.core.identity.Namespace;
 import org.eclipse.ecf.core.util.ECFException;
+import org.eclipse.ecf.remoteservice.Constants;
 import org.eclipse.ecf.remoteservice.IRemoteCall;
 import org.eclipse.ecf.remoteservice.IRemoteCallListener;
 import org.eclipse.ecf.remoteservice.IRemoteService;
 import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
 import org.eclipse.ecf.remoteservice.IRemoteServiceID;
 import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
+import org.eclipse.ecf.remoteservice.IRemoteServiceProxy;
 import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
 import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
 import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent;
@@ -299,13 +301,31 @@
 
 	public void testGetService() throws Exception {
 		final IRemoteService service = registerAndGetRemoteService();
-
-		if (service == null)
-			return;
 		assertNotNull(service);
 		Thread.sleep(SLEEPTIME);
 	}
 
+	public void testGetProxy() throws Exception {
+		final IRemoteService service = registerAndGetRemoteService();
+		assertNotNull(service);
+		Object proxy = service.getProxy();
+		assertTrue(proxy instanceof IRemoteServiceProxy);
+		Thread.sleep(SLEEPTIME);
+	}
+
+	public void testGetProxyNoRemoteServiceProxy() throws Exception {
+		final IRemoteServiceContainerAdapter[] adapters = getRemoteServiceAdapters();
+		Properties props = new Properties();
+		props.put(Constants.SERVICE_PREVENT_RSPROXY,"true");
+		final IRemoteService service = registerAndGetRemoteService(adapters[0], adapters[1],
+				getClient(0).getConnectedID(), getIDFilter(),
+				IConcatService.class.getName(), customizeProperties(props), SLEEPTIME);
+		assertNotNull(service);
+		Object proxy = service.getProxy();
+		assertTrue(!(proxy instanceof IRemoteServiceProxy));
+		Thread.sleep(SLEEPTIME);
+	}
+
 	protected IRemoteCall createRemoteConcat(String first, String second) {
 		return createRemoteCall("concat", new Object[] { first, second });
 	}
diff --git a/tests/bundles/org.eclipse.ecf.tests.server.generic/.settings/org.eclipse.jdt.core.prefs b/tests/bundles/org.eclipse.ecf.tests.server.generic/.settings/org.eclipse.jdt.core.prefs
index 0efa8ab..7add194 100644
--- a/tests/bundles/org.eclipse.ecf.tests.server.generic/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/bundles/org.eclipse.ecf.tests.server.generic/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,74 @@
-#Thu Apr 09 21:04:13 PDT 2009
-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
+#Tue Jan 11 19:49:54 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.sharedobject/src/org/eclipse/ecf/tests/sharedobject/util/reflection/ClassUtilTest.java b/tests/bundles/org.eclipse.ecf.tests.sharedobject/src/org/eclipse/ecf/tests/sharedobject/util/reflection/ClassUtilTest.java
new file mode 100644
index 0000000..d70a7a5
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests.sharedobject/src/org/eclipse/ecf/tests/sharedobject/util/reflection/ClassUtilTest.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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.sharedobject.util.reflection;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+import junit.framework.TestCase;
+
+import org.eclipse.ecf.core.util.reflection.ClassUtil;
+
+public class ClassUtilTest extends TestCase {
+
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetPrimitiveMethodWithPrimitive() {
+		testGetMethod(new Class[] {int.class}, new Class[] {int.class}, new Object[]{new Integer(1)});		
+	}
+	
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetPrimitiveMethodWithObject() {
+		testGetMethod(new Class[] {Integer.class}, new Class[] {int.class}, new Object[]{new Integer(1)});
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetObjectMethodWithObject() {
+		testGetMethod(new Class[] {Long.class}, new Class[]{Long.class}, new Object[]{new Long(1L)});
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetObjectMethodWithPrimitive() {
+		testGetMethod(new Class[] {long.class}, new Class[]{Long.class}, new Object[]{new Long(1L)});
+	}
+	
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetObjectMethodWhenBoth() {
+		testGetMethod(new Class[] {Boolean.class}, new Class[]{Boolean.class}, new Object[]{new Boolean(true)});
+	}
+	
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetPrimitiveMethodWhenBoth() {
+		testGetMethod(new Class[] {boolean.class}, new Class[]{boolean.class}, new Object[]{new Boolean(true)});
+	}
+	
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetMethodWithoutParams() {
+		testGetMethod(new Class[]{}, new Class[]{}, null);
+	}
+	
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetObjectMethodFromSuperclassWithPrimitive() {
+		testGetMethod(new Class[]{float.class}, new Class[]{Float.class}, new Object[]{new Float(1.0)});
+	}
+	
+	/**
+	 * Test method for {@link org.eclipse.ecf.core.util.reflection.ClassUtil#getMethod(java.lang.Class, java.lang.String, java.lang.Class[])}.
+	 */
+	public void testGetPrimitiveMethodFromSuperclassWithObject() {
+		testGetMethod(new Class[]{Float.class}, new Class[]{Float.class}, new Object[]{new Float(1.0)});
+	}
+	
+	// helper
+	private void testGetMethod(Class[] searchParameterTypes, Class[] expectedParameterTypes, Object[] params) {
+		Method method = null;
+		try {
+			method = ClassUtil.getMethod(TestClass.class, "foo", searchParameterTypes);
+		} catch (NoSuchMethodException e) {
+			fail("failed to match expected the method: " + e.getMessage());
+		}
+		
+		final Class[] someParameterTypes = method.getParameterTypes();
+		assertTrue("Parameters don't match", Arrays.equals(expectedParameterTypes, someParameterTypes));
+		
+		try {
+			assertNotNull("executed method from superclass", method.invoke(new TestClass(), params));
+		} catch (IllegalArgumentException e) {
+			fail(e.getMessage());
+		} catch (IllegalAccessException e) {
+			fail(e.getMessage());
+		} catch (InvocationTargetException e) {
+			fail(e.getMessage());
+		}
+	}
+
+	// helper class 
+	class TestClass extends AbstractTestClass {
+		public String foo() {return "";}
+		public String foo(final int i) {return "";}
+		public String foo(final Long i) {return "";}
+		public String foo(final boolean b) {return "";}
+		public String foo(final Boolean b) {return "";}
+	}
+	
+	abstract class AbstractTestClass {
+		public String foo(final Float f) {return "";}
+		public String foo() {throw new UnsupportedOperationException();}
+		public String foo(final int i) {throw new UnsupportedOperationException();}
+		public String foo(final Long i) {throw new UnsupportedOperationException();}
+		public String foo(final boolean b) {throw new UnsupportedOperationException();};
+		public String foo(final Boolean b) {throw new UnsupportedOperationException();};
+	}
+}
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..7509f5c
--- /dev/null
+++ b/tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java
@@ -0,0 +1,135 @@
+/****************************************************************************
+* 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 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.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);
+		return IDFactory.getDefault().createStringID(val);
+	}
+
+	// The tests below are commented out because the Platform is using an older version of ECF
+	// core identity, and these tests are not supported in that older version
+	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));
+	}
+	*/
+}