Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2014-03-27 00:55:31 +0000
committerslewis2014-03-27 00:55:31 +0000
commit20964f407f28056294dae2ec4885a81c96f55284 (patch)
tree61f8ccdf866f3c690450719a6e20b684f4a98968
parent69a9eeac0aa150a75ecf70bac5be9750c39eb90a (diff)
parentea88e73ed7fcf5ecbe7e7e9e004ced274e530417 (diff)
downloadorg.eclipse.ecf-20964f407f28056294dae2ec4885a81c96f55284.tar.gz
org.eclipse.ecf-20964f407f28056294dae2ec4885a81c96f55284.tar.xz
org.eclipse.ecf-20964f407f28056294dae2ec4885a81c96f55284.zip
Merge remote-tracking branch 'origin/master' into bug421569
-rw-r--r--applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF2
-rw-r--r--applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java13
-rw-r--r--compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties4
-rw-r--r--doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java3
-rw-r--r--doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java13
-rw-r--r--doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java2
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/.classpath7
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/.gitignore1
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/.project28
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF9
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/build.properties4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java26
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java23
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath7
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore1
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project33
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF10
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml5
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties6
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java24
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties1
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch2
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF6
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties2
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch2
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF7
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch8
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch2
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch2
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF4
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF8
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF6
-rw-r--r--examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF4
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch381
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch340
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch336
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/internal/example/collab/start/Discovery.java11
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/META-INF/MANIFEST.MF2
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml4
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/products/Hello Service Consumer RS.product5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (edef,generic).product3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,generic).product5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,r-osgi).product5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,generic).product5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,r-osgi).product5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS (zeroconf,generic).product3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/META-INF/MANIFEST.MF2
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host (zeroconf,generic).product3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF2
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/products/Hello Service Host RS.product4
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (edef,generic).product3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,generic).product4
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,rosgi).product6
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,generic).product3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,rosgi).product5
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/src/org/eclipse/ecf/internal/examples/remoteservices/hello/host/HelloHostApplication.java2
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java3
-rw-r--r--examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.console/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.discovery.ui.model/src/org/eclipse/ecf/discovery/ui/model/resource/ServiceResource.java71
-rw-r--r--framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF5
-rw-r--r--framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java67
-rw-r--r--framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java9
-rw-r--r--framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryServiceListener.java4
-rw-r--r--framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java24
-rw-r--r--framework/bundles/org.eclipse.ecf.identity/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java1
-rw-r--r--framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties1
-rw-r--r--framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/MultiRosterView.java32
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java14
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java3
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java11
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java58
-rw-r--r--framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java55
-rw-r--r--framework/bundles/org.eclipse.ecf.provider/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.provider/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/GenericContainerInstantiator.java23
-rw-r--r--framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java23
-rw-r--r--framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java8
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rest.synd/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF17
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/client/TrivialParameterServializer.java2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java42
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF12
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties5
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java192
-rw-r--r--framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/Constants.java7
-rw-r--r--framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties2
-rw-r--r--framework/bundles/org.eclipse.ecf.sharedobject/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java3
-rw-r--r--framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF2
-rw-r--r--framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java52
-rw-r--r--framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java256
-rw-r--r--framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF1
-rw-r--r--framework/bundles/org.eclipse.ecf/javadoc.xml2
-rw-r--r--framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java128
-rw-r--r--incubation/bundles/org.eclipse.ecf.provider.endpointdescription.localdiscovery/META-INF/MANIFEST.MF2
-rw-r--r--incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF2
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy/META-INF/MANIFEST.MF2
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF2
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties2
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java23
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java51
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java136
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java4
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java48
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java97
-rw-r--r--osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeDiscoveryContainer.java64
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeServiceContainerEvent.java10
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF8
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java47
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientFileSystemBrowser.java12
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientRetrieveFileTransfer.java12
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/ConnectingSocketMonitor.java47
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientFileSystemBrowser.java26
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java13
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF4
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath7
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore1
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project28
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF17
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html (renamed from releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html)0
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties8
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties10
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml75
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java67
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java58
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java19
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java67
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java25
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java19
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java25
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java9
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF4
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java96
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java11
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF4
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/feature.xml40
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.console.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.core.feature/buckminster.cspex40
-rw-r--r--releng/features/org.eclipse.ecf.core.feature/build.properties7
-rw-r--r--releng/features/org.eclipse.ecf.core.feature/feature.xml11
-rw-r--r--releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery35
-rw-r--r--releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec15
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/build.properties10
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml40
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.core.ssl.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.core/feature.properties2
-rw-r--r--releng/features/org.eclipse.ecf.core/feature.xml53
-rw-r--r--releng/features/org.eclipse.ecf.datashare.feature/feature.xml23
-rw-r--r--releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml4
-rw-r--r--releng/features/org.eclipse.ecf.discovery.feature/feature.xml12
-rw-r--r--releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml4
-rw-r--r--releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml4
-rw-r--r--releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml20
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/feature.xml62
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.docshare.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.eventadmin.examples.feature/feature.xml11
-rw-r--r--releng/features/org.eclipse.ecf.eventadmin.feature/feature.xml20
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.feature/feature.xml40
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.feature/feature.xml28
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/about.html306
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/asl-v20.txt202
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.properties141
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/feature.xml41
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/license.html107
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient.ssl.feature/notice.html86
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml36
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/about.html275
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/asl-v20.txt202
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/feature.xml38
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.httpclient4.ssl.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/about.html275
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/asl-v20.txt202
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/buckminster.cspex34
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/build.properties14
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/feature.xml50
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.cquery13
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.p2.feature/org.eclipse.ecf.filetransfer.p2.mspec11
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/about.html306
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/feature.xml40
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.filetransfer.ssl.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.osgi.services.feature/feature.xml21
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/feature.xml41
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.presence.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.properties138
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/feature.xml47
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.datashare.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/buckminster.cspex35
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/feature.xml38
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.cquery19
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.feature/org.eclipse.ecf.provider.generic.mspec16
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/buckminster.cspex39
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/feature.xml39
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.cquery19
-rw-r--r--releng/features/org.eclipse.ecf.provider.generic.remoteservice.feature/org.eclipse.ecf.provider.generic.remoteservice.mspec16
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.examples.feature/build.properties3
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.examples.feature/feature.xml28
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.feature/buckminster.cspex5
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml51
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.feature/feature.xml36
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/feature.xml54
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rest.synd.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rosgi.feature/feature.xml11
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.rpc.feature/feature.xml26
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/buckminster.cspex37
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/build.properties13
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/feature.xml42
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.cquery15
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/org.eclipse.ecf.remoteservice.sdk.examples.feature.mspec16
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/epl-v10.html262
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/license.html107
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/notice.html86
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplateFeature/plugin.properties6
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/about.html305
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/build.properties6
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.examples.feature/sourceTemplatePlugin/plugin.properties2
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/build.properties2
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.properties2
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml69
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.cquery74
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/org.eclipse.ecf.remoteservice.sdk.feature.mspec20
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.properties2
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/feature.xml92
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/plugin.properties6
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/about.html305
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/build.properties6
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplatePlugin/plugin.properties2
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/feature.xml58
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.servlet.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.remoteservice.soap.feature/feature.xml10
-rw-r--r--releng/features/org.eclipse.ecf.sdk/build.properties25
-rw-r--r--releng/features/org.eclipse.ecf.sdk/feature.xml26
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/.project17
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/about.html28
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/buckminster.cspex36
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/build.properties12
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/epl-v10.html261
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/feature.properties142
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/feature.xml39
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/license.html108
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/notice.html108
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.cquery35
-rw-r--r--releng/features/org.eclipse.ecf.sharedobject.feature/org.eclipse.ecf.sharedobject.mspec15
-rw-r--r--releng/features/org.eclipse.ecf.tests.feature/buckminster.cspex7
-rw-r--r--releng/features/org.eclipse.ecf.tests.feature/feature.xml32
-rw-r--r--releng/features/org.eclipse.ecf.xmpp.feature/feature.xml17
-rw-r--r--releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/karaf-features-rssdk.xml297
-rw-r--r--releng/org.eclipse.ecf.releng.bm/karaf/templates/rssdk/saxparserfactory/org.eclipse.ecf.saxparserfactory_1.0.0.v20130605-1748.jarbin0 -> 3056 bytes
-rw-r--r--server-side/bundles/org.eclipse.ecf.server/plugin.properties5
-rw-r--r--server-side/features/org.eclipse.ecf.server.feature/feature.xml2
-rw-r--r--server-side/features/org.eclipse.ecf.server.generic.feature/feature.xml8
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/.classpath7
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/.gitignore1
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/.project28
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.jdt.core.prefs11
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/META-INF/MANIFEST.MF17
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/build.properties4
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/org.eclipse.ecf.tests.core.launch44
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/internal/tests/core/Activator.java100
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryAbstractTestCase.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryAbstractTestCase.java)0
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryCreateTest.java)36
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryDescriptionsTest.java)3
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceAbstractTestCase.java)2
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceCreateTest.java)186
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerFactoryServiceDescriptionsTest.java)3
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ContainerManagerServiceTest.java)102
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/GUIDTest.java)25
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartTest.java)42
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryServiceTest.java)4
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDFactoryTest.java)2
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IIDNamespaceTest.java)2
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/LongIDTest.java)25
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/NamespaceTest.java)44
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/StringIDTest.java)25
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java99
-rw-r--r--[-rwxr-xr-x]tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/Base64Test.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/Base64Test.java)26
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/SerializableStatusTest.java)26
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.core/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java (renamed from tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/util/StringUtilsTest.java)16
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/AbstractDiscoveryTest.java12
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java80
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java9
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/RndStatsTestCase.java198
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java39
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java41
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF1
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/EndpointDescriptionTest.java126
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/src/org/eclipse/ecf/tests/osgi/services/distribution/async/TestServiceInterface1Async.java3
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/tests/osgi/services/remoteserviceadmin/TestServiceInterface1Async.java4
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/AllTests.java33
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/CompositeDiscoveryServiceContainerTest.java37
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/SingleCompositeDiscoveryServiceContainerTest.java22
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceRegistryTest.java6
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.zookeeper/src/org/eclipse/ecf/tests/provider/zookeeper/ZooDiscoveryServiceTest.java6
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/src/org/eclipse/ecf/internal/tests/remoteservice/rpc/Activator.java56
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/bundles/org.eclipse.ecf.tests/org.eclipse.ecf.tests.launch44
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/ECFStartup.java34
-rw-r--r--tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/GenericServerCreateTest.java89
-rwxr-xr-xtests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/IDAbstractTestCase.java45
-rw-r--r--tests/bundles/org.eclipse.ecf.tests/src/org/eclipse/ecf/tests/core/identity/URIIDTest.java135
-rw-r--r--tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/.gitignore1
-rw-r--r--tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/Activator.classbin1001 -> 0 bytes
-rw-r--r--tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Template.classbin5645 -> 0 bytes
-rw-r--r--tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceConsumerExample1Wizard.classbin1696 -> 0 bytes
-rw-r--r--tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Template.classbin5565 -> 0 bytes
-rw-r--r--tooling/plugins/org.eclipse.ecf.remoteservices.tooling.pde/bin/org/eclipse/ecf/remoteservices/internal/tooling/pde/RemoteServiceHostExample1Wizard.classbin1596 -> 0 bytes
426 files changed, 17503 insertions, 2753 deletions
diff --git a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF
index 670697ecb..228afba1b 100644
--- a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF
+++ b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.presence.bot.kosmos;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.200.qualifier
Bundle-Vendor: %pluginProvider
Bundle-Provider: %providerName
Bundle-Localization: plugin
diff --git a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java
index d4b0f5ea6..3a8ce9a1c 100644
--- a/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java
+++ b/applications/kosmos/bundles/org.eclipse.ecf.presence.bot.kosmos/src/org/eclipse/ecf/internal/presence/bot/kosmos/ChatRoomMessageHandler.java
@@ -85,6 +85,12 @@ public class ChatRoomMessageHandler implements IChatRoomMessageHandler {
+ NEWLINE
+ "# Markus Kuppe <mkuppe@versant.com> - bug 184036" //$NON-NLS-1$
+ NEWLINE
+ +" * Nick Boldt <codeslave@ca.ibm.com> - bug 206528, 209410" //$NON-NLS-1$
+ + NEWLINE
+ +" * Dominik Goepel <dominik.goepel@gmx.de> - bug 216644" //$NON-NLS-1$
+ + NEWLINE
+ +" * Nitin Dahyabhai <nitind@us.ibm.com> - bug 308908"
+ + NEWLINE
+ "################################################################################"; //$NON-NLS-1$
private static final String BUG_DATABASE_PREFIX = "https://bugs.eclipse.org/bugs/show_bug.cgi?id="; //$NON-NLS-1$
@@ -213,12 +219,17 @@ public class ChatRoomMessageHandler implements IChatRoomMessageHandler {
try {
parseCommands();
- writeCommandsToHTML();
} catch (Exception e) {
commands = new Properties();
}
try {
+ writeCommandsToHTML();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ try {
parseNewsgroup();
} catch (Exception e) {
newsgroups = Collections.EMPTY_MAP;
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties
index e8fb76b71..6c3f3a9e6 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/plugin.properties
@@ -4,7 +4,7 @@
# the Eclipse Public License v1.0 which accompanies this distribution, and is
#
# Contributors:
-# EclipseSource - initial API and implementation
+# Composent, Inc. - initial API and implementation
#################################################################################
-pluginName=ECF OSGi R4.2 Compendium Distribution
+pluginName=ECF RemoteServiceAdmin Topology Manager
pluginProvider=Eclipse.org - ECF \ No newline at end of file
diff --git a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java
index f2f25434c..0f6add71b 100644
--- a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java
+++ b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client3.java
@@ -21,8 +21,7 @@ public class Client3 extends XMPPChatClient {
private static final String DEFAULT_USERNAME = "eclipsecon@ecf.eclipse.org";
public Client3() {
- super();
- setMessageReceiver(new IMessageReceiver() {
+ super(new IMessageReceiver() {
public void handleMessage(final IChatMessage chatMessage) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
diff --git a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java
index 283e89ca7..09a6cb9fe 100644
--- a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java
+++ b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/basic/Client4.java
@@ -15,7 +15,6 @@ import org.eclipse.ecf.example.clients.XMPPChatClient;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresenceListener;
import org.eclipse.ecf.presence.im.IChatMessage;
-import org.eclipse.ecf.presence.roster.IRosterEntry;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
@@ -25,8 +24,7 @@ public class Client4 extends XMPPChatClient {
private static final String DEFAULT_USERNAME = "eclipsecon@ecf.eclipse.org";
public Client4() {
- super();
- setMessageReceiver(new IMessageReceiver() {
+ super(new IMessageReceiver() {
public void handleMessage(final IChatMessage chatMessage) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
@@ -34,16 +32,9 @@ public class Client4 extends XMPPChatClient {
+ chatMessage.getFromID().getName(), chatMessage.getBody());
}
});
- }});
- setPresenceListener(new IPresenceListener(){
+ }},new IPresenceListener(){
public void handlePresence(ID fromID, IPresence presence) {
System.out.println("handlePresence("+fromID+","+presence+")");
- }
- public void handleRosterEntryAdd(IRosterEntry entry) {
- System.out.println("handleRosterEntryAdd("+entry+")");
- }
- public void handleRosterEntryRemove(IRosterEntry entry) {
- System.out.println("handleRosterEntryRemove("+entry+")");
}});
}
public void createAndConnect() throws ECFException {
diff --git a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java
index c23f573c6..6dd85b40b 100644
--- a/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java
+++ b/doc/bundles/org.eclipse.ecf.tutorial/src/org/eclipse/ecf/tutorial/datashare/MyChannel.java
@@ -34,7 +34,7 @@ public class MyChannel extends BaseChannel {
if (event instanceof IContainerConnectedEvent) {
IContainerConnectedEvent ccevent = (IContainerConnectedEvent) event;
// Check to make sure it's a client...not the groupID
- if (!ccevent.getTargetID().equals(getGroupID())) sendHelloMessage();
+ if (!ccevent.getTargetID().equals(getConnectedID())) sendHelloMessage();
}
return false;
}});
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.classpath b/examples/bundles/com.mycorp.examples.timeservice.async/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.classpath
@@ -0,0 +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/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.gitignore b/examples/bundles/com.mycorp.examples.timeservice.async/.gitignore
new file mode 100644
index 000000000..5e56e040e
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.project b/examples/bundles/com.mycorp.examples.timeservice.async/.project
new file mode 100644
index 000000000..62d0c40c5
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>com.mycorp.examples.timeservice.async</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 000000000..f29e940a0
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..41f0c112c
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ECF RS Example Timeservice Async API
+Bundle-SymbolicName: com.mycorp.examples.timeservice.async
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: com.mycorp.examples.timeservice;version="2.0.0"
+Bundle-ActivationPolicy: lazy
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/build.properties b/examples/bundles/com.mycorp.examples.timeservice.async/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java
new file mode 100644
index 000000000..4149d5bb0
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeService.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the 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 com.mycorp.examples.timeservice;
+
+/**
+ * Example OSGi service for retrieving current time in milliseconds from January
+ * 1, 1970.
+ *
+ */
+public interface ITimeService {
+
+ /**
+ * Get current time.
+ *
+ * @return Long current time in milliseconds since Jan 1, 1970. Will not
+ * return <code>null</code>.
+ */
+ public Long getCurrentTime();
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java
new file mode 100644
index 000000000..299871f70
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.async/src/com/mycorp/examples/timeservice/ITimeServiceAsync.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the 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 com.mycorp.examples.timeservice;
+
+import java.util.concurrent.CompletableFuture;
+
+public interface ITimeServiceAsync {
+
+ /**
+ * Get current time using Java 8 {@link CompletableFuture}.
+ *
+ * @return CompletableFuture<Long> The future value time in milliseconds since Jan 1, 1970. Will not
+ * return <code>null</code>.
+ */
+ public CompletableFuture<Long> getCurrentTimeAsync();
+
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.classpath
@@ -0,0 +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/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore
new file mode 100644
index 000000000..5e56e040e
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.gitignore
@@ -0,0 +1 @@
+/bin
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project
new file mode 100644
index 000000000..b08382269
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>com.mycorp.examples.timeservice.consumer.ds.async</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.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 000000000..f29e940a0
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..1f3a05e60
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Async
+Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.ds.async
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: MYCORP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: com.mycorp.examples.timeservice;version="2.0.0"
+Service-Component: OSGI-INF/timeservicecomponentasync.xml
+Bundle-ActivationPolicy: lazy
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml
new file mode 100644
index 000000000..2e13191e2
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/OSGI-INF/timeservicecomponentasync.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" enabled="true" name="com.mycorp.examples.timeservice.consumer.ds.async">
+ <implementation class="com.mycorp.examples.timeservice.consumer.ds.async.TimeServiceComponentAsync"/>
+ <reference bind="bindTimeService" cardinality="1..n" interface="com.mycorp.examples.timeservice.ITimeServiceAsync" name="ITimeServiceAsync" policy="dynamic"/>
+</scr:component> \ No newline at end of file
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties
new file mode 100644
index 000000000..67f08c89b
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/build.properties
@@ -0,0 +1,6 @@
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/timeservicecomponentasync.xml,\
+ OSGI-INF/
+source.. = src/
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java
new file mode 100644
index 000000000..8a038f9f4
--- /dev/null
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds.async/src/com/mycorp/examples/timeservice/consumer/ds/async/TimeServiceComponentAsync.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Composent, Inc. All rights reserved. This
+ * program and the accompanying materials are made available under the 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 com.mycorp.examples.timeservice.consumer.ds.async;
+
+import java.util.concurrent.CompletableFuture;
+
+import com.mycorp.examples.timeservice.ITimeServiceAsync;
+
+public class TimeServiceComponentAsync {
+
+ void bindTimeService(ITimeServiceAsync timeService) {
+ System.out.println("Discovered ITimeServiceAsync via DS");
+ // Get the CompletableFuture...no blocking here
+ CompletableFuture<Long> cf = timeService.getCurrentTimeAsync();
+ // print out time when done...no blocking anywhere!
+ cf.thenAccept((time) -> System.out.println("Remote time is: " + time));
+ }
+}
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
index 8a6c53c42..5b418d6df 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice Consumer Declarative Services Example
+Bundle-Name: ECF RS Example Timeservice Consumer DS
Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.ds
Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Service-Component: OSGI-INF/timeservicecomponent.xml
Import-Package: com.mycorp.examples.timeservice;version="1.0.0"
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
index ed9702d9e..c15aec9ca 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/build.properties
@@ -4,3 +4,4 @@ bin.includes = META-INF/,\
OSGI-INF/timeservicecomponent.xml,\
OSGI-INF/
source.. = src/
+src.includes = launch/
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch
index a297d1202..c53e2d9b9 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.ds/launch/TimeServiceConsumer DS.launch
@@ -18,7 +18,7 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-DverboseRemoteServiceAdmin=true"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
+<stringAttribute key="target_bundles" value="com.mycorp.examples.timeservice.consumer.ds@default:default,com.mycorp.examples.timeservice@default:default,javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF
index 5b3c4cc88..4c9a4ca8b 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/META-INF/MANIFEST.MF
@@ -1,8 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice Consuemr FileDiscovery Rest
+Bundle-Name: ECF RS Example REST Timeservice Consumer FileDiscovery
Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.filediscovery.rest
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Remote-Service: timeservicerestendpointdescription.xml
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties
index 24e86ec65..bf0a7416b 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/build.properties
@@ -3,3 +3,5 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
timeservicerestendpointdescription.xml
+src.includes = launch/,\
+ timeservicerestendpointdescription.xml
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch
index 4c543a9eb..496dfe822 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/launch/TimeServiceRestConsumer DS.launch
@@ -18,7 +18,7 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-DverboseRemoteServiceAdmin=true"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
+<stringAttribute key="target_bundles" value="com.mycorp.examples.timeservice.consumer.ds@default:default,com.mycorp.examples.timeservice.consumer.filediscovery.rest@default:default,com.mycorp.examples.timeservice.provider.rest.common@default:default,com.mycorp.examples.timeservice.provider.rest.consumer@default:default,com.mycorp.examples.timeservice@default:default,javax.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice.rest@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.json@default:default"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml
index feaff8b67..452732a74 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery.rest/timeservicerestendpointdescription.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
<endpoint-description>
+ <property name="ecf.endpoint.id" value-type="String" value="http://localhost:8181"/>
<property name="ecf.endpoint.id.ns" value-type="String" value="com.mycorp.examples.timeservice.provider.rest.namespace"/>
+ <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
<property name="endpoint.framework.uuid" value-type="String" value="20cc5d57-e8f0-0012-192b-c570b422d1f9"/>
- <property name="endpoint.id" value-type="String" value="http://localhost:8181"/>
+ <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9eb"/>
<property name="endpoint.package.version.com.mycorp.examples.timeservice" value-type="String" value="1.0.0"/>
<property name="endpoint.service.id" value-type="Long" value="0"/>
<property name="objectClass" value-type="String">
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
index bf5a41a95..8e686d299 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/META-INF/MANIFEST.MF
@@ -1,9 +1,8 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: TimeService Consumer Filediscovery
+Bundle-Name: ECF RS Example TimeService Consumer FileDiscovery
Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer.filediscovery
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Remote-Service: timeserviceendpointdescription.xml
-
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch
index 0e42f51fb..29d09447e 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/launch/TimeServiceConsumer.launch
@@ -5,7 +5,7 @@
<booleanAttribute key="automaticValidate" value="false"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearConfig" value="true"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/TimeServiceConsumer"/>
<booleanAttribute key="default" value="true"/>
<booleanAttribute key="default_auto_start" value="true"/>
@@ -15,12 +15,12 @@
<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.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-DverboseRemoteServiceAdmin=true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m -Declipse.ignoreApp=true -Dosgi.noShutdown=true -DverboseRemoteServiceAdmin=true"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
+<stringAttribute key="target_bundles" value="com.mycorp.examples.timeservice.consumer.ds@default:default,com.mycorp.examples.timeservice.consumer.filediscovery@default:false,com.mycorp.examples.timeservice.consumer@default:default,com.mycorp.examples.timeservice@default:default,javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@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="com.mycorp.examples.timeservice.consumer.filediscovery@default:false,com.mycorp.examples.timeservice.consumer@default:default,com.mycorp.examples.timeservice@default:default"/>
+<stringAttribute key="workspace_bundles" value="com.mycorp.examples.timeservice.consumer.ds@default:default,com.mycorp.examples.timeservice.consumer.filediscovery@default:false,com.mycorp.examples.timeservice.consumer@default:default,com.mycorp.examples.timeservice@default:default"/>
</launchConfiguration>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
index 180533dc6..156b0743b 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer.filediscovery/timeserviceendpointdescription.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
<endpoint-description>
+ <property name="ecf.endpoint.id" value-type="String" value="ecftcp://localhost:3288/server"/>
<property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
+ <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
<property name="endpoint.framework.uuid" value-type="String" value="20cc5d57-e8f0-0012-192b-c570b422d1f9"/>
- <property name="endpoint.id" value-type="String" value="ecftcp://localhost:3288/server"/>
+ <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9ea"/>
<property name="endpoint.package.version.com.mycorp.examples.timeservice" value-type="String" value="1.0.0"/>
<property name="endpoint.service.id" value-type="Long" value="0"/>
<property name="objectClass" value-type="String">
diff --git a/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF
index 9f2cb57fc..e8d068e0c 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.consumer/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Consumer
+Bundle-Name: ECF RS Example Timeservice Consumer
Bundle-SymbolicName: com.mycorp.examples.timeservice.consumer
Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Bundle-Activator: com.mycorp.examples.timeservice.consumer.Activator
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF
index bc892795b..dda00a364 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Host
+Bundle-Name: ECF RS Example Timeservice Host
Bundle-SymbolicName: com.mycorp.examples.timeservice.host
Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Import-Package: com.mycorp.examples.timeservice;version="1.0.0",
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch
index ca03f3c0d..a25894910 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceHost.launch
@@ -18,7 +18,7 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true &#13;&#10;-DverboseRemoteServiceAdmin=true"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.jobs@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@2:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
+<stringAttribute key="target_bundles" value="com.mycorp.examples.timeservice.host@default:default,com.mycorp.examples.timeservice@default:default,javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.jmdns@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.event@2:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch
index bcb1fc8fb..202108ceb 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch
+++ b/examples/bundles/com.mycorp.examples.timeservice.host/launch/TimeServiceRestHost.launch
@@ -18,7 +18,7 @@
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true &#13;&#10;-DverboseRemoteServiceAdmin=true&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8181&#13;&#10;-Dservice.exported.configs=com.mycorp.examples.timeservice.rest.host"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="javax.servlet@default:default,javax.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@2:default,org.eclipse.equinox.http.jetty@3:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true"/>
+<stringAttribute key="target_bundles" value="com.mycorp.examples.timeservice.host@default:default,com.mycorp.examples.timeservice.provider.rest.common@default:default,com.mycorp.examples.timeservice.provider.rest.host@default:default,com.mycorp.examples.timeservice@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy@default:default,org.eclipse.ecf.osgi.services.remoteserviceadmin@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.remoteservice.rest@default:default,org.eclipse.ecf.remoteservice.servlet@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@2:default,org.eclipse.equinox.http.jetty@2:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services.remoteserviceadmin@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.json@default:default"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF
index baf07f427..d47056967 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.common/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Timerservice Rest Provider Common
+Bundle-Name: ECF RS Example Timeservice REST Provider Common
Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.common;singleton:=true
Bundle-Version: 2.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.eclipse.ecf.core.identity,
org.eclipse.ecf.remoteservice.rest.identity;version="2.2.200"
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF
index fd2794e10..062825854 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.consumer/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice Provider Rest Consumer
+Bundle-Name: ECF RS Example Timeservice REST Provider Consumer
Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.consumer;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Import-Package: com.mycorp.examples.timeservice;version="1.0.0",
@@ -17,4 +17,4 @@ Import-Package: com.mycorp.examples.timeservice;version="1.0.0",
org.json,
org.osgi.framework
Require-Bundle: org.eclipse.ecf,
- org.eclipse.equinox.common;bundle-version="3.6.200"
+ org.eclipse.equinox.common
diff --git a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF
index d92c669da..65d9c49d3 100644
--- a/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice.provider.rest.host/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: ECF TimeService Rest Provider Host
+Bundle-Name: ECF RS Example TimeService REST Provider Host
Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.host;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp
+Bundle-Version: 1.1.0.qualifier
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.eclipse.equinox.common,
org.eclipse.ecf
diff --git a/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF b/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF
index 54763bc07..ca40035b8 100644
--- a/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF
+++ b/examples/bundles/com.mycorp.examples.timeservice/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Timeservice
+Bundle-Name: ECF RS Example Timeservice API
Bundle-SymbolicName: com.mycorp.examples.timeservice
Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: MyCorp, Inc.
+Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Export-Package: com.mycorp.examples.timeservice;version="1.0.0"
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch b/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch
deleted file mode 100644
index 3fe96ea7e..000000000
--- a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 1.launch
+++ /dev/null
@@ -1,381 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<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="false"/>
-<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="true"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab1"/>
-<stringAttribute key="location1" value="C:\eclipse3.1m4\eclipse\runtime-workspace"/>
-<stringAttribute key="location2" value="C:\eclipse3.1m4\eclipse\second-runtime-workspace"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<mapAttribute key="org.eclipse.debug.core.environmentVariables">
-<mapEntry key="smack.debugEnabled" value="true"/>
-</mapAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console -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="-Xms512m -Xmx512m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value="C:\Documents and Settings\slewis\workspace.ecf\org.eclipse.ecf.example.collab\launchconfigs\config\config.ini"/>
-<booleanAttribute key="tracing" value="false"/>
-<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/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="true"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/commands" 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/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.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="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="false"/>
-<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="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/exceptions/throwing" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/entering" value="true"/>
-<mapEntry key="org.eclipse.ecf.identity/debug/methods/exiting" 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.irc/debug" value="true"/>
-<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/irccontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/ircrootcontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="true"/>
-<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.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.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/XMPPClientSOContainer" value="true"/>
-<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/smackconnection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackdebug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmppgroupchatsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmpppresencesharedobject" 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="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/exceptions/catching" value="true"/>
-<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="false"/>
-<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="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" 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.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="true"/>
-<mapEntry key="org.eclipse.ecf/debug/exceptions/throwing" value="true"/>
-<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="true"/>
-<mapEntry key="org.eclipse.ecf/debug/methods/exiting" value="true"/>
-<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.help.base/debug" value="true"/>
-<mapEntry key="org.eclipse.help.base/debug/search" 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/protocols" 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/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/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" 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/formatter/enable_new" 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/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/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/monitorbundles" 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/grouping" 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/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.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/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/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/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/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="useNamedJRE" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch b/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch
deleted file mode 100644
index 440ca6b4b..000000000
--- a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 2.launch
+++ /dev/null
@@ -1,340 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="org.eclipse.ecf.provider"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Example Collab 2"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab2"/>
-<stringAttribute key="location1" value="C:\eclipse3.1m4\eclipse\second-runtime-workspace"/>
-<stringAttribute key="location2" value="C:\eclipse3.1m4\eclipse\runtime-workspace"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dch.ethz.iks.slp.debug=true&#13;&#10;-Dnet.slp.traceMsg=true&#13;&#10;-Dnet.slp.traceReg=true"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value=""/>
-<booleanAttribute key="tracing" value="false"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/requests" value="true"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filetransfersharedobject" value="true"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/gmm" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/progsharedobject" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewer_cache_debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/textchatcomposite" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmpppresencesharedobject" value="true"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/debug" value="true"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/sharedobjectcontainerfactory" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
-<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug/packages" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showSystemJobs" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/connectionfactory" value="true"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.help.base/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/genericsharedobject" value="true"/>
-<mapEntry key="org.eclipse.team.ftp/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="true"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/formatter/enable_new" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.ecf/debug/factoryinit" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/abstractsharedobject" value="true"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/brokercontainer" value="true"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackconnection" value="true"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/SharedDataGraph" value="true"/>
-<mapEntry key="org.eclipse.ecf.datashare/OrderedMulticaster" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/DataGraphSharingFactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin/timing" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/ConsistentMulticaster" value="true"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="true"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.yahoo/debug" value="true"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/channel" value="true"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/monitorbundles" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/twophasecommiteventprocessor" value="true"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf/debug/idfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/XMPPClientSOContainer" value="true"/>
-<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/responses" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectcontext" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmppgroupchatsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug/irccontainer" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/EMFUpdateManager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/clientcontainer" value="true"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackdebug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="true"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/list" value="true"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/servercontainer" value="true"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" 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.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ecf.datashare/SimpleMulticaster" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.irc/debug" value="true"/>
-</mapAttribute>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useNamedJRE" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch b/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch
deleted file mode 100644
index 11c348f3c..000000000
--- a/examples/bundles/org.eclipse.ecf.example.collab/launchconfigs/ECF Example Collab 3.launch
+++ /dev/null
@@ -1,336 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<booleanAttribute key="askclear" value="true"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="org.eclipse.ecf,org.eclipse.ecf.example.collab,org.eclipse.ecf.provider,org.eclipse.ecf.provider.jms"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="false"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/ECF Example Collab 3"/>
-<booleanAttribute key="default" value="false"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace-collab3"/>
-<stringAttribute key="location1" value="C:\eclipse3.1m4\eclipse\third-runtime-workspace"/>
-<stringAttribute key="location2" value="C:\eclipse3.1m4\eclipse\second-runtime-workspace"/>
-<stringAttribute key="location3" value="C:\eclipse3.1m4\eclipse\runtime-workspace"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<stringAttribute key="selectedPlugin" value="org.eclipse.ecf.provider"/>
-<stringAttribute key="selected_target_plugins" value="org.eclipse.ui.views@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.expressions@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.search@default:default,org.eclipse.help@default:default,org.eclipse.ui@default:default,org.eclipse.ui.forms@default:default,org.eclipse.jface.text@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.ant.core@default:default,org.eclipse.debug.ui@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.jdt.core@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.ui.win32@default:false,org.eclipse.text@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.navigator@default:default,org.junit*3.8.2.v20090203-1005@default:default,org.eclipse.team.ui@default:default,org.eclipse.core.resources@default:default,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.team.core@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.help.base@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.common@2:true,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.update.core@default:default,org.eclipse.help.appserver@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.debug.core@default:default,org.eclipse.update.configurator@3:true,org.eclipse.swt@default:default,org.eclipse.update.ui@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.core.runtime@default:true,org.apache.lucene@default:default,org.eclipse.jdt.debug@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,org.eclipse.compare@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ltk.core.refactoring@default:default"/>
-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.ecf.provider.twitter.ui.hub@default:default,org.eclipse.ecf.provider.filetransfer.httpclient@default:default,org.eclipse.ecf.services.quotes.oldskool@default:default,osgi.cloud.node@default:default,org.eclipse.ecf.client.jgroups@default:default,eclipse.p2@default:default,org.eclipse.ecf.server@default:default,org.jivesoftware.smack@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted2@default:default,ch.ethz.iks.r_osgi.remote@default:default,org.eclipse.ecf.provider.jms.qpid@default:default,org.eclipse.ecf.mgmt.framework@default:default,org.eclipse.ecf.tests.provider.filetransfer.scp@default:default,org.eclipse.ecf.presence.bot@default:default,org.eclipse.ecf.tests.osgi.services.distribution.localdiscovery@default:default,org.eclipse.ecf.examples.loadbalancing.consumer@default:default,org.eclipse.ecf.console@default:default,org.eclipse.ecf.tests.mgmt.ds@default:default,org.eclipse.ecf.examples.remoteservices.dictionary.common@default:default,org.eclipse.ecf.server.generic@default:default,org.eclipse.ecf.tests.sharedobject@default:default,org.eclipse.ecf.provider.r_osgi@default:default,org.eclipse.ecf.tests.mgmt.app@default:default,org.eclipse.ecf.tests.presence@default:default,org.eclipse.ecf.tests.provider.jms.weblogic@default:default,org.eclipse.ecf.tests.filetransfer.httpserver@default:default,org.eclipse.ecf.telephony.call@default:default,org.eclipse.ecf.provider.xmpp@default:default,org.eclipse.ecf.provider.nntp.ui@default:false,org.eclipse.ecf.mgmt.app@default:default,org.eclipse.ecf.tests.provider.datashare.nio@default:false,org.eclipse.ecf.tests.discovery@default:default,org.eclipse.ecf.provider.jms@default:default,org.eclipse.ecf.provider.twitter.ui@default:default,org.eclipse.team.ecf.core@default:default,org.eclipse.ecf.examples.remoteservices.hello.dm.host@default:default,org.eclipse.ecf.examples.remoteservices.hello2@default:default,org.eclipse.ecf.provider.localdiscovery@default:default,org.eclipse.ecf.remoteservice.soap.host@default:default,org.eclipse.ecf.examples.datashare.app@default:default,org.eclipse.ecf.examples.loadbalancing@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local@default:default,org.json@default:default,org.eclipse.ecf.provider.twitter.ui.hub.product@default:default,org.eclipse.ecf.osgi.services.distribution@default:default,org.eclipse.ecf.ui.capabilities@default:default,org.eclipse.ecf.services.quotes.eclipsetwitter@default:default,org.eclipse.ecf.tests.mgmt.p2@default:default,org.eclipse.ecf.examples.loadbalancing.servicehost@default:default,org.eclipse.ecf.protocol.bittorrent@default:default,org.eclipse.ecf.protocol.nntp.store.filesystem@default:default,org.eclipse.ecf.provider.yahoo@default:default,org.eclipse.ecf.examples.remoteservices.hello.dm.config.log4j@default:false,org.eclipse.emf.edit.ui@default:default,org.eclipse.ecf.mgmt.p2.install.host@default:default,org.eclipse.ecf.provider.nntp.security@default:default,org.eclipse.ecf.provider.skype@default:default,org.eclipse.ecf.mgmt.ds.host@default:default,org.eclipse.ecf.tests.provider.filetransfer.xmpp@default:default,org.eclipse.ecf.remoteservice.soap@default:default,org.eclipse.ecf.tests.provider.discovery@default:default,org.eclipse.ecf.remoteservice.eventadmin@default:default,org.eclipse.ecf.tests.provider.jms.activemq@default:default,org.eclipse.emf@default:default,org.eclipse.ecf.provider.remoteservice@default:default,org.eclipse.ecf.provider.xmpp.ui@default:default,org.eclipse.ecf.examples.updatesite.server@default:default,org.eclipse.ecf.provider.msn.ui@default:default,org.eclipse.ecf.provider.bittorrent@default:default,org.eclipse.ecf.examples.remoteservices.common@default:default,org.eclipse.ecf.provider.zookeeper@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.ecf.examples.tests.remoteservice.soap.host.hello@default:default,org.apache.httpcomponents.httpcore@default:default,ch.ethz.iks.slp@default:default,org.eclipse.ecf.mgmt.app.host@default:default,org.eclipse.ecf.provider.irc@default:default,org.eclipse.ecf.examples.remoteservices.hello.ds.consumer@default:default,org.eclipse.ecf.example.clients@default:default,org.eclipse.ecf.protocol.nntp.model.test@default:false,org.eclipse.ecf.provider.jms.activemq@default:default,org.eclipse.ecf.tests.provider.jslp@default:default,org.eclipse.ecf.provider.filetransfer.scp@default:default,org.eclipse.ecf.protocol.msn@default:default,org.eclipse.emf.common@default:default,org.eclipse.ecf.provider.jms.weblogic.ui@default:default,org.eclipse.ecf.examples.eventadmin.app@default:default,org.eclipse.team.ecf.ui@default:default,org.eclipse.ecf.discovery.ui.properties@default:false,org.eclipse.ecf.tests.protocol.msn@default:false,org.eclipse.ecf.examples.provider.dictionary.soap.client@default:default,org.eclipse.ecf.provider.msn@default:default,eclipse.p2.host@default:default,org.eclipse.ecf.doc@default:default,org.eclipse.ecf.tests.provider.twitter@default:default,org.eclipse.ecf.tests.datashare@default:default,org.eclipse.ecf.tests.remoteservice@default:default,org.eclipse.ecf.services.quotes.starwars@default:default,org.eclipse.ecf.tests.osgi.services.discovery@default:default,org.eclipse.ecf.provider.datashare@default:default,org.example.processor.assignment2@default:default,org.eclipse.ecf.examples.provider.trivial@default:default,org.eclipse.ecf.presence.ui@default:default,org.eclipse.ecf.provider.bittorrent.ui@default:default,org.eclipse.ecf.discovery.ui.browser@default:default,org.eclipse.ecf.provider.jms.activemq.ui@default:default,org.eclipse.ecf.sharedobject@default:default,org.eclipse.helios.tools@default:default,org.eclipse.ecf.provider.filetransfer.httpclient.ssl@default:false,org.eclipse.ecf.tests.sync@default:default,org.eclipse.ecf.provider.rss@default:default,org.eclipse.ecf.example.collab@default:default,com.skype@default:default,org.eclipse.ecf.examples.updatesite.client@default:default,org.eclipse.ecf.remoteservice.apt.java6@default:default,org.eclipse.ecf.tests.provider.xmpp@default:default,org.eclipse.ecf.provider.nntp@default:default,org.eclipse.ecf.remoteservice.rest@default:default,org.eclipse.ecf.provider.filetransfer.sharedobject@default:default,org.eclipse.ecf.tests.protocol.nntp.store.derby.tests@default:false,org.eclipse.ecf.discovery.ui@default:default,org.eclipse.ecf.provider.riena@default:default,org.eclipse.ecf.provider.ui@default:default,org.example.processor.solution@default:default,org.eclipse.ecf.springframework@default:default,org.eclipse.ecf.provider.jms.weblogic@default:default,org.eclipse.ecf.protocol.nntp.store.derby@default:default,org.eclipse.ecf.examples.remoteservice.discovery.local@default:default,org.eclipse.ecf.tests.remoteservice.rest@default:default,org.eclipse.ecf.protocol.nntp.core@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.remoteservice.ui.dosgi@default:false,org.eclipse.ecf.provider.twitter@default:default,org.eclipse.ecf.provider.yahoo.ui@default:default,org.example.processor.assignment3@default:default,osgi.cloud.node.client@default:default,org.eclipse.ecf.ui@default:default,org.apache.zookeeper@default:default,org.eclipse.ecf.examples.loadbalancing.ds.consumer@default:default,org.eclipse.ecf.salvo.application@default:default,org.eclipse.ecf.tests.server.generic@default:default,org.eclipse.ecf.tests.storage@default:default,org.eclipse.ecf.tests.osgi.services.distribution@default:default,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.tests.filetransfer.jreprovider@default:default,org.eclipse.ecf.mgmt.p2.profile.host@default:default,org.eclipse.ecf.examples.remoteservices.hello@default:default,org.eclipse.ecf.examples.remoteservices.hello.host@default:default,org.eclipse.ecf.tests.provider.jmdns@default:default,org.eclipse.ecf.provider.irc.bot@default:default,org.eclipse.ecf.provider.discovery@default:default,org.eclipse.ecf.presence.collab.ui@default:default,org.eclipse.ecf.tests.provider.filetransfer.efs@default:default,org.eclipse.ecf.examples.loadbalancing.server@default:default,org.eclipse.ecf.tests.filetransfer@default:default,org.eclipse.ecf.osgi.services.discovery@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.telephony.call.ui@default:default,org.eclipse.ecf.server.jgroups@default:default,org.eclipse.ecf.salvo.ui@default:default,org.eclipse.ecf.osgi.services.discovery.local@default:default,org.eclipse.ecf.examples.tests.remoteservices.dictionary.soap.client@default:default,org.eclipse.ecf.services.quotes@default:default,org.eclipse.ecf.storage@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf.protocol.nntp.model@default:default,org.eclipse.ecf.provider.datashare.nio@default:default,org.apache.mime4j@default:default,org.eclipse.ecf.tests.provider.jms@default:default,org.eclipse.ecf.examples.remoteservice.rest.twitter@default:default,org.eclipse.ecf.sync@default:default,org.eclipse.ecf.discovery.ui.edit@default:default,org.eclipse.ecf.tests.provider.discovery.local@default:default,org.eclipse.ecf.provider.jslp@default:default,org.eclipse.ecf.mgmt.p2@default:default,org.eclipse.ecf.tests.provider.jgroups@default:default,org.eclipse.ecf.examples.remoteservices.client@default:false,org.apache.log4j@default:default,org.eclipse.ecf.docshare@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.ecf.examples.remoteservices.hello.consumer@default:default,org.example.processor@default:default,org.eclipse.ecf.tests.mgmt.framework@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.ecf.provider.skype.ui@default:default,com.skype.win32.win32.x86@default:false,org.eclipse.ecf.provider@default:default,org.eclipse.ecf.discovery@default:default,org.eclipse.ecf.examples.remoteservices.hello.ds.host@default:default,org.eclipse.ecf.remoteservice.ui@default:default,org.eclipse.ecf.protocol.nntp.store.filesystem.tests@default:false,org.eclipse.ecf.provider.jgroups@default:default,org.eclipse.ecf.examples.remoteservices.server@default:default,org.eclipse.ecf.mgmt.ds@default:default,org.eclipse.ecf.examples.remoteservices.hello.dm.consumer@default:default,org.eclipse.ecf.provider.filetransfer.efs@default:default,org.eclipse.ecf@default:default,org.eclipse.ecf.example.collab.editor@default:default,org.eclipse.ecf.example.remoteservice.soap.host.hello@default:default,org.apache.httpcomponents.httpcore.nio@default:default,org.eclipse.ecf.tests.apache.httpclient.server@default:default,org.eclipse.ecf.presence@default:default,org.eclipse.ecf.salvo.ui.navigator@default:false,org.eclipse.ecf.mgmt.p2.repository.host@default:default,org.eclipse.ecf.tests.osgi.services.discovery.local.poststarted@default:default,org.eclipse.ecf.provider.irc.ui@default:default,com.commonsense.backstop.tests.client.axis@default:default,org.eclipse.ecf.mgmt.framework.host@default:default,org.eclipse.ecf.tests.call@default:default,org.eclipse.ecf.samples.nntp@default:default,org.eclipse.emf.edit@default:default,org.eclipse.helios.tests@default:default,org.eclipse.ecf.provider.aim@default:default,org.eclipse.ecf.discovery.ui.model@default:default,org.eclipse.ecf.datashare@default:default,org.eclipse.ecf.remoteservice@default:default,org.eclipse.ecf.provider.jmdns@default:default,com.commonsense.backstop.client.axis@default:default,org.eclipse.ecf.tests.provider.skype@default:default,org.example.processor.assignment1@default:default,org.eclipse.ecf.discovery.ui.properties.tabbed@default:false,org.eclipse.ecf.tests.httpservice.util@default:default,org.eclipse.ecf.tests@default:default,org.eclipse.ecf.filetransfer.ui@default:default,com.skype.examples@default:default,org.eclipse.ecf.tests.provider.nntp@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value=""/>
-<booleanAttribute key="tracing" value="true"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" 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/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" 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/config/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/contenttypes/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/debug/pluginstopper" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/actions" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/activateplugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/create" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/failure" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/class" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/loader" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/native" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/filter/resource" value="*"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/failure" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/prefixes/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/properties" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/loader/debug/success" 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/general" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/get" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/set" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/dump" value=""/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/events/extension" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/events/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/registry/debug/resolve" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/timing/startup" 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="true"/>
-<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="true"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.discovery/debug/flag" value="true"/>
-<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="false"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/transactionsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.example.collab/debug/urlsharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jmdns/debug/jmdns" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/brokercontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/channel" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.jms/debug/clientcontainer" value="true"/>
-<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/servercontainer" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug" value="true"/>
-<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/smackconnection" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/smackdebug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmpppresencesharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider.xmpp/debug/xmppsharedobject" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/basesharedobject" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/connection" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/container" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/containerfactory" 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/sharedobjectcontext" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectmanager" value="true"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/sharedobjectwrapper" value="false"/>
-<mapEntry key="org.eclipse.ecf.provider/debug/transactioneventprocessor" value="false"/>
-<mapEntry key="org.eclipse.ecf.sdo/DataGraphSharingFactory" value="true"/>
-<mapEntry key="org.eclipse.ecf.sdo/EMFUpdateManager" value="true"/>
-<mapEntry key="org.eclipse.ecf.sdo/SharedDataGraph" value="true"/>
-<mapEntry key="org.eclipse.ecf.sdo/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf.ui/debug" value="true"/>
-<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/textchatcomposite" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/connectionfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/containerfactory" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/factoryinit" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/filter" value="*"/>
-<mapEntry key="org.eclipse.ecf/debug/flag" value="true"/>
-<mapEntry key="org.eclipse.ecf/debug/idfactory" value="true"/>
-<mapEntry key="org.eclipse.help.base/debug" value="true"/>
-<mapEntry key="org.eclipse.help.base/debug/search" 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/protocols" value="false"/>
-<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/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/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" 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/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/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/allTypesCache" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/checkCoreBindingGetJavaElement" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/checkCoreBindingIsEqualTo" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/useUIBindingGetJavaElement" value="false"/>
-<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/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" 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/monitorbundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin/timing" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packages" 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/grouping" 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/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.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.team.ftp/debug" value="false"/>
-<mapEntry key="org.eclipse.team.ftp/list" value="true"/>
-<mapEntry key="org.eclipse.team.ftp/requests" value="true"/>
-<mapEntry key="org.eclipse.team.ftp/responses" value="true"/>
-<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.intro/debug" value="true"/>
-<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/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/showSystemJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" 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/contexts" 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.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/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" 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"/>
-<mapEntry key="ort.eclipse.ecf/debug/sharedobjectcontainerfactory" value="true"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-<booleanAttribute key="usefeatures" value="false"/>
-</launchConfiguration>
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/internal/example/collab/start/Discovery.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/internal/example/collab/start/Discovery.java
index e3da7cd04..1f5526731 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/internal/example/collab/start/Discovery.java
+++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/internal/example/collab/start/Discovery.java
@@ -12,11 +12,7 @@ package org.eclipse.ecf.internal.example.collab.start;
import org.eclipse.ecf.core.ContainerFactory;
import org.eclipse.ecf.core.IContainer;
-import org.eclipse.ecf.discovery.IDiscoveryContainerAdapter;
-import org.eclipse.ecf.discovery.IServiceEvent;
-import org.eclipse.ecf.discovery.IServiceListener;
-import org.eclipse.ecf.discovery.IServiceTypeEvent;
-import org.eclipse.ecf.discovery.IServiceTypeListener;
+import org.eclipse.ecf.discovery.*;
public class Discovery {
@@ -59,5 +55,10 @@ public class Discovery {
// TODO Auto-generated method stub
}
+
+ public boolean triggerDiscovery() {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
}
diff --git a/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java b/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java
index 8df7cd69f..df6f922c9 100644
--- a/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java
+++ b/examples/bundles/org.eclipse.ecf.examples.loadbalancing/src/org/eclipse/ecf/examples/loadbalancing/IDataProcessorAsync.java
@@ -8,9 +8,8 @@
package org.eclipse.ecf.examples.loadbalancing;
import org.eclipse.ecf.remoteservice.IAsyncCallback;
-import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
-public interface IDataProcessorAsync extends IAsyncRemoteServiceProxy {
+public interface IDataProcessorAsync {
public void processDataAsync(String data, IAsyncCallback<String> callback);
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
index 734f0f6e3..f932ed101 100644
--- 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
@@ -2,8 +2,7 @@ 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-Version: 1.1.0.qualifier
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.eclipse.ecf.core;version="3.0.0",
org.eclipse.ecf.core.events,
@@ -16,7 +15,7 @@ Import-Package: org.eclipse.ecf.core;version="3.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"
+Require-Bundle: org.eclipse.equinox.common
Export-Package: org.eclipse.ecf.examples.provider.remoteservice.identity;version="1.0.0",
org.eclipse.ecf.internal.examples.provider.remoteservice.container;x-internal:=true
Bundle-Localization: plugin
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
index fa04dd81d..eb74872fd 100644
--- 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
@@ -2,7 +2,7 @@ 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-Version: 1.1.0.qualifier
Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Remote-Service: generic_hello.xml
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
index 79573e466..c113c9bf5 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.edef/generic_hello.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
<endpoint-description>
+ <property name="ecf.endpoint.id" value-type="String" value="ecftcp://localhost:3787/server"/>
<property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
+ <property name="ecf.endpoint.ts" value-type="Long" value="1387233380373"/>
<property name="endpoint.framework.uuid" value-type="String" value="70cd3d4b-4931-0010-1b63-d64101cefd5e"/>
- <property name="endpoint.id" value-type="String" value="ecftcp://localhost:3787/server"/>
+ <property name="endpoint.id" value-type="String" value="87d3ef4f-8e8f-4187-873e-166dcc58c9ed"/>
<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">
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 c553973e6..31a938294 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
@@ -14,12 +14,12 @@
<plugins>
<plugin id="ch.ethz.iks.r_osgi.remote"/>
+ <plugin id="javax.xml"/>
<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"/>
@@ -30,11 +30,11 @@
<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.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -45,6 +45,7 @@
<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.equinox.event" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
</configurations>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (edef,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (edef,generic).product
index 6fa56c3ed..b3758862a 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (edef,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (edef,generic).product
@@ -22,6 +22,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -45,6 +46,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -55,6 +57,7 @@
<configurations>
<plugin id="org.eclipse.ecf" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.ecf.osgi.services.remoteserviceadmin" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
</configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,generic).product
index 35229a676..d75287105 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,generic).product
@@ -22,6 +22,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -45,6 +46,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -52,5 +54,8 @@
<plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
</plugins>
+ <configurations>
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+ </configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,r-osgi).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,r-osgi).product
index 64a0976b6..76aa066b0 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,r-osgi).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zeroconf,r-osgi).product
@@ -26,6 +26,7 @@
<plugins>
<plugin id="ch.ethz.iks.r_osgi.remote"/>
<plugin id="ch.ethz.iks.slp"/>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -49,6 +50,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -57,5 +59,8 @@
<plugin id="org.objectweb.asm"/>
</plugins>
+ <configurations>
+ <plugin id="org.eclipse.equinox.event" autoStart="false" startLevel="0" />
+ </configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,generic).product
index 5759b3e4d..107ef041c 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,generic).product
@@ -30,6 +30,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -55,6 +56,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -62,5 +64,8 @@
<plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
</plugins>
+ <configurations>
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+ </configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,r-osgi).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,r-osgi).product
index a18c8fc64..06419d7e0 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,r-osgi).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer/products/Hello Service Consumer (zookeeper,r-osgi).product
@@ -29,6 +29,7 @@
<plugins>
<plugin id="ch.ethz.iks.r_osgi.remote"/>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -54,6 +55,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -62,5 +64,8 @@
<plugin id="org.objectweb.asm"/>
</plugins>
+ <configurations>
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+ </configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS (zeroconf,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS (zeroconf,generic).product
index 04f57ca56..d92f93f8d 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS (zeroconf,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.consumer/products/Hello Service Consumer DS (zeroconf,generic).product
@@ -22,6 +22,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -46,6 +47,7 @@
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
<plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.util"/>
@@ -66,6 +68,7 @@
<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" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
</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 2e9073a46..2d080803d 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
@@ -12,4 +12,4 @@ Import-Package: org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0",
Service-Component: OSGI-INF/hello.xml
Bundle-Localization: bundle
Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host (zeroconf,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host (zeroconf,generic).product
index 5183f5464..1c558739b 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host (zeroconf,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.ds.host/products/Hello Service DS Host (zeroconf,generic).product
@@ -24,6 +24,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -48,6 +49,7 @@
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
<plugin id="org.eclipse.equinox.ds"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.equinox.util"/>
@@ -65,6 +67,7 @@
<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" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
</configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF
index a1e45f081..a3918b08b 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host.rs/META-INF/MANIFEST.MF
@@ -15,5 +15,5 @@ Import-Package: org.eclipse.ecf.core;version="3.0.0",
org.eclipse.ecf.remoteservice,
org.osgi.framework;version="1.3.0",
org.osgi.util.tracker
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.5.0"
+Require-Bundle: org.eclipse.equinox.common
Bundle-Localization: bundle
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 ab199fb43..e4037af32 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
@@ -24,6 +24,7 @@
<plugins>
<plugin id="ch.ethz.iks.r_osgi.remote"/>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -38,10 +39,10 @@
<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.event"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.osgi.services"/>
@@ -51,6 +52,7 @@
<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.equinox.event" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
</configurations>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (edef,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (edef,generic).product
index 182c824f4..e4dc2a7c3 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (edef,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (edef,generic).product
@@ -24,6 +24,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -46,6 +47,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -56,6 +58,7 @@
<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.equinox.event" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
</configurations>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,generic).product
index 5376fe1ff..b825cc356 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,generic).product
@@ -25,6 +25,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -48,9 +49,11 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
<plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
</plugins>
@@ -58,6 +61,7 @@
<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.equinox.event" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
</configurations>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,rosgi).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,rosgi).product
index 6b7bff3d3..3c7c2669c 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,rosgi).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zeroconf,rosgi).product
@@ -24,6 +24,7 @@
<plugins>
<plugin id="ch.ethz.iks.r_osgi.remote"/>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -47,13 +48,18 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
<plugin id="org.eclipse.osgi.services.remoteserviceadmin"/>
<plugin id="org.objectweb.asm"/>
</plugins>
+ <configurations>
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+ </configurations>
</product>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,generic).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,generic).product
index 993683f9e..cecd2ec25 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,generic).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,generic).product
@@ -31,6 +31,7 @@
</vm>
<plugins>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -56,6 +57,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -66,6 +68,7 @@
<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.equinox.event" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
</configurations>
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,rosgi).product b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,rosgi).product
index 5aef240fa..d20040d4d 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,rosgi).product
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products/Hello Service Host (zookeeper,rosgi).product
@@ -29,6 +29,7 @@
<plugins>
<plugin id="ch.ethz.iks.r_osgi.remote"/>
+ <plugin id="javax.xml"/>
<plugin id="org.apache.felix.gogo.command"/>
<plugin id="org.apache.felix.gogo.runtime"/>
<plugin id="org.apache.felix.gogo.shell"/>
@@ -54,6 +55,7 @@
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.concurrent"/>
<plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.osgi"/>
@@ -62,5 +64,8 @@
<plugin id="org.objectweb.asm"/>
</plugins>
+ <configurations>
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+ </configurations>
</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 524de1013..0fe44903d 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
@@ -15,6 +15,7 @@ import java.util.Hashtable;
import java.util.Properties;
import org.eclipse.ecf.examples.remoteservices.hello.IHello;
+import org.eclipse.ecf.examples.remoteservices.hello.IHelloAsync;
import org.eclipse.ecf.examples.remoteservices.hello.impl.Hello;
import org.eclipse.ecf.osgi.services.distribution.IDistributionConstants;
import org.eclipse.equinox.app.IApplication;
@@ -72,6 +73,7 @@ public class HelloHostApplication implements IApplication,
props.put(
IDistributionConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGUMENTS,
containerId);
+ props.put("ecf.exported.async.objectClass",new String[] { IHelloAsync.class.getName() });
// register remote service
helloRegistration = bundleContext.registerService(
IHello.class.getName(), new Hello(), props);
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java
index ef2900ca2..e2282a3b7 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello/src/org/eclipse/ecf/examples/remoteservices/hello/IHelloAsync.java
@@ -10,13 +10,12 @@
package org.eclipse.ecf.examples.remoteservices.hello;
import org.eclipse.ecf.remoteservice.IAsyncCallback;
-import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
import org.eclipse.equinox.concurrent.future.IFuture;
/**
* @since 2.0
*/
-public interface IHelloAsync extends IAsyncRemoteServiceProxy {
+public interface IHelloAsync {
public void helloAsync(String from, IAsyncCallback<String> callback);
public IFuture helloAsync(String from);
diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF
index 1ef999c86..b6d48786e 100644
--- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF
+++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.rest.rss/META-INF/MANIFEST.MF
@@ -20,5 +20,5 @@ Import-Package: com.sun.syndication.feed.synd;version="0.9.0",
org.osgi.framework;version="1.3.0",
org.osgi.util.tracker
Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.console/plugin.properties b/framework/bundles/org.eclipse.ecf.console/plugin.properties
index 4a010e46b..02c8ca196 100644
--- a/framework/bundles/org.eclipse.ecf.console/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.console/plugin.properties
@@ -6,5 +6,5 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-plugin.name=ECF OSGi Console Provider
+plugin.name=ECF Console Provider
plugin.provider=Eclipse.org - ECF
diff --git a/framework/bundles/org.eclipse.ecf.discovery.ui.model/src/org/eclipse/ecf/discovery/ui/model/resource/ServiceResource.java b/framework/bundles/org.eclipse.ecf.discovery.ui.model/src/org/eclipse/ecf/discovery/ui/model/resource/ServiceResource.java
index 621dc6ac6..fe31f73fc 100644
--- a/framework/bundles/org.eclipse.ecf.discovery.ui.model/src/org/eclipse/ecf/discovery/ui/model/resource/ServiceResource.java
+++ b/framework/bundles/org.eclipse.ecf.discovery.ui.model/src/org/eclipse/ecf/discovery/ui/model/resource/ServiceResource.java
@@ -74,11 +74,10 @@ public class ServiceResource extends ResourceImpl implements Resource {
ModelPlugin
.getDefault()
.getLog()
- .log(
- new Status(
- IStatus.WARNING,
- ModelPlugin.PLUGIN_ID,
- Messages.ServiceResource_NO_DISCOVERY_CONTAINER_AVAILABLE));
+ .log(new Status(
+ IStatus.WARNING,
+ ModelPlugin.PLUGIN_ID,
+ Messages.ServiceResource_NO_DISCOVERY_CONTAINER_AVAILABLE));
}
} catch (ContainerCreateException e1) {
container = null;
@@ -86,16 +85,17 @@ public class ServiceResource extends ResourceImpl implements Resource {
ModelPlugin
.getDefault()
.getLog()
- .log(
- new Status(
- IStatus.WARNING,
- ModelPlugin.PLUGIN_ID,
- Messages.ServiceResource_NO_DISCOVERY_CONTAINER_AVAILABLE,
- e1));
+ .log(new Status(
+ IStatus.WARNING,
+ ModelPlugin.PLUGIN_ID,
+ Messages.ServiceResource_NO_DISCOVERY_CONTAINER_AVAILABLE,
+ e1));
return;
} catch (ContainerConnectException e) {
- ModelPlugin.getDefault().getLog().log(
- new Status(IStatus.ERROR, ModelPlugin.PLUGIN_ID, e
+ ModelPlugin
+ .getDefault()
+ .getLog()
+ .log(new Status(IStatus.ERROR, ModelPlugin.PLUGIN_ID, e
.getMessage(), e));
} finally {
lock.release();
@@ -169,18 +169,18 @@ public class ServiceResource extends ResourceImpl implements Resource {
ModelPlugin
.getDefault()
.getLog()
- .log(
- new Status(
- IStatus.INFO,
- ModelPlugin.PLUGIN_ID,
- NLS
- .bind(
- Messages.ServiceResource_NoEMFServiceModel,
- anUri)));
+ .log(new Status(
+ IStatus.INFO,
+ ModelPlugin.PLUGIN_ID,
+ NLS.bind(
+ Messages.ServiceResource_NoEMFServiceModel,
+ anUri)));
} else {
- ModelPlugin.getDefault().getLog().log(
- new Status(IStatus.INFO, ModelPlugin.PLUGIN_ID, e
- .getMessage()));
+ ModelPlugin
+ .getDefault()
+ .getLog()
+ .log(new Status(IStatus.INFO,
+ ModelPlugin.PLUGIN_ID, e.getMessage()));
}
}
emfIServiceInfo = ModelFactory.eINSTANCE.createIServiceInfo();
@@ -214,9 +214,9 @@ public class ServiceResource extends ResourceImpl implements Resource {
// set Authority to host and port of the service
final java.net.URI location = anIServiceInfo.getLocation();
final String authority = location.getAuthority();
- uri = URI.createHierarchicalURI(uri.scheme(), authority, uri
- .device(), uri.segments(), location.getQuery(), location
- .getFragment());
+ uri = URI.createHierarchicalURI(uri.scheme(), authority,
+ uri.device(), uri.segments(), location.getQuery(),
+ location.getFragment());
return uri;
}
@@ -248,8 +248,8 @@ public class ServiceResource extends ResourceImpl implements Resource {
for (java.util.Iterator itr = host.getServices().iterator(); itr
.hasNext();) {
IServiceInfo emfIServiceInfo = (IServiceInfo) itr.next();
- if (aComparator.compare(ecfServiceInfo, emfIServiceInfo
- .getEcfServiceInfo()) == 0) {
+ if (aComparator.compare(ecfServiceInfo,
+ emfIServiceInfo.getEcfServiceInfo()) == 0) {
return emfIServiceInfo;
}
}
@@ -289,11 +289,10 @@ public class ServiceResource extends ResourceImpl implements Resource {
}
getResourceSet().getResources().removeAll(resources);
- Trace
- .trace(
- ModelPlugin.PLUGIN_ID,
- ModelPlugin.PLUGIN_ID + "/methods/tracing", ServiceResource.class, //$NON-NLS-1$
- "serviceUndiscovered", "Removed service " + emfIServiceInfo); //$NON-NLS-1$ //$NON-NLS-2$
+ Trace.trace(
+ ModelPlugin.PLUGIN_ID,
+ ModelPlugin.PLUGIN_ID + "/methods/tracing", ServiceResource.class, //$NON-NLS-1$
+ "serviceUndiscovered", "Removed service " + emfIServiceInfo); //$NON-NLS-1$ //$NON-NLS-2$
// remove the host if no services left for this particular host
IHost host = findIHost(getInetAddress(ecfServiceInfo
@@ -415,6 +414,10 @@ public class ServiceResource extends ResourceImpl implements Resource {
return -1;
}
}
+
+ public boolean triggerDiscovery() {
+ return false;
+ }
}
public ServiceResource(URI uri) {
diff --git a/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
index 1de920db8..c710b76b3 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.discovery/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.discovery;singleton:=true
-Bundle-Version: 4.1.0.qualifier
+Bundle-Version: 5.0.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.discovery.DiscoveryPlugin
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
@@ -15,7 +15,8 @@ Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
J2SE-1.4
Require-Bundle: org.eclipse.equinox.common,
org.eclipse.ecf
-Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
+Import-Package: org.eclipse.core.runtime.jobs,
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
org.osgi.framework,
org.osgi.service.log;version="1.3.0",
org.osgi.util.tracker
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java
index 53f9be01b..c84bc936d 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/AbstractDiscoveryContainerAdapter.java
@@ -84,9 +84,34 @@ public abstract class AbstractDiscoveryContainerAdapter extends
* org.eclipse.ecf.discovery.IDiscoveryContainerAdapter#addServiceListener
* (org.eclipse.ecf.discovery.IServiceListener)
*/
- public void addServiceListener(IServiceListener aListener) {
+ public void addServiceListener(final IServiceListener aListener) {
Assert.isNotNull(aListener);
- allServiceListeners.add(aListener);
+
+ if (aListener.triggerDiscovery()) {
+ final IExecutor executor = new ThreadsExecutor();
+ executor.execute(new IProgressRunnable() {
+ public Object run(final IProgressMonitor arg0) throws Exception {
+ final IServiceInfo[] services = getServices();
+
+ for (int i = 0; i < services.length; i++) {
+ final IServiceInfo iServiceInfo = services[i];
+ aListener.serviceDiscovered(getServiceEvent(
+ iServiceInfo, getConfig().getID()));
+ }
+ allServiceListeners.add(aListener);
+ return null;
+ }
+ }, null);
+ } else {
+ allServiceListeners.add(aListener);
+ }
+ }
+
+ /**
+ * @since 5.0
+ */
+ protected IServiceEvent getServiceEvent(IServiceInfo iServiceInfo, ID id) {
+ return new ServiceContainerEvent(iServiceInfo, id);
}
/*
@@ -97,11 +122,43 @@ public abstract class AbstractDiscoveryContainerAdapter extends
* (org.eclipse.ecf.discovery.identity.IServiceTypeID,
* org.eclipse.ecf.discovery.IServiceListener)
*/
- public void addServiceListener(IServiceTypeID aType,
- IServiceListener aListener) {
+ public void addServiceListener(final IServiceTypeID aType,
+ final IServiceListener aListener) {
Assert.isNotNull(aListener);
Assert.isNotNull(aType);
- synchronized (serviceListeners) { // put-if-absent idiom race condition
+
+ if (aListener.triggerDiscovery()) {
+ final IExecutor executor = new ThreadsExecutor();
+ executor.execute(new IProgressRunnable() {
+ public Object run(final IProgressMonitor arg0) throws Exception {
+ final IServiceInfo[] services = getServices(aType);
+
+ for (int i = 0; i < services.length; i++) {
+ final IServiceInfo iServiceInfo = services[i];
+ aListener.serviceDiscovered(getServiceEvent(
+ iServiceInfo, getConfig().getID()));
+ }
+ // Add the listener _after_ explicitly discovering services
+ // to _reduce_ the chance of notifying the listener more
+ // than once. This happens, if the background discovery job
+ // runs interleaved with explicit discovery here. However,
+ // ECF discovery -at the API level- does not guarantee that
+ // it won't send out notifications for the same logical
+ // discovery event at-most once/exactly once. It provides
+ // at-least-once instead/best-effort.
+ addServiceListener0(aType, aListener);
+ return null;
+ }
+ }, null);
+ } else {
+ addServiceListener0(aType, aListener);
+ }
+ }
+
+ private void addServiceListener0(final IServiceTypeID aType,
+ final IServiceListener aListener) {
+ synchronized (serviceListeners) { // put-if-absent idiom race
+ // condition
Collection v = (Collection) serviceListeners.get(aType);
if (v == null) {
v = Collections.synchronizedSet(new HashSet());
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java
index 5f73d24db..3810e61fc 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/discovery/IServiceListener.java
@@ -38,6 +38,15 @@ package org.eclipse.ecf.discovery;
public interface IServiceListener {
/**
+ * @since 5.0
+ *
+ * @return true iff this {@link IServiceListener} request re-discovery by
+ * the {@link IDiscoveryLocator}. The discovery
+ * {@link IServiceEvent} will be fired asynchronously.
+ */
+ public boolean triggerDiscovery();
+
+ /**
* Notification that a service has been discovered (the service is fully resolved).
*
* @param anEvent Will not be <code>null</code>
diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryServiceListener.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryServiceListener.java
index 45dc01b3c..7042ccf8e 100644
--- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryServiceListener.java
+++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryServiceListener.java
@@ -10,8 +10,6 @@
******************************************************************************/
package org.eclipse.ecf.internal.discovery;
-import org.eclipse.ecf.discovery.identity.IServiceTypeID;
-
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ecf.core.identity.*;
@@ -134,7 +132,7 @@ public class DiscoveryServiceListener implements ServiceListener {
&& serviceReference
.getProperty("org.eclipse.ecf.discovery.protocols") == null;
}
-
+
private IServiceTypeID getIServiceTypeID(ServiceReference serviceReference) {
String namingAuthority = (String) serviceReference
.getProperty("org.eclipse.ecf.discovery.namingauthority"); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF
index 210a60b7b..ed4bf185c 100644
--- a/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.docshare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.docshare;singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 3.0.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.docshare.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java b/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java
index 451fd23e2..7932c8d6b 100644
--- a/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java
+++ b/framework/bundles/org.eclipse.ecf.docshare/src/org/eclipse/ecf/docshare/messages/SelectionMessage.java
@@ -21,19 +21,11 @@ public class SelectionMessage extends Message {
int offset;
int length;
- int startLine;
- int endLine;
- public SelectionMessage(int offset, int length, int startLine, int endLine) {
+ public SelectionMessage(int offset, int length) {
super();
this.offset = offset;
this.length = length;
- this.startLine = startLine;
- this.endLine = endLine;
- }
-
- public SelectionMessage(int offset, int length) {
- this(offset, length, -1, -1);
}
/**
@@ -50,18 +42,4 @@ public class SelectionMessage extends Message {
return length;
}
- /**
- * @return the startLine
- */
- public int getStartLine() {
- return startLine;
- }
-
- /**
- * @return the endLine
- */
- public int getEndLine() {
- return endLine;
- }
-
}
diff --git a/framework/bundles/org.eclipse.ecf.identity/plugin.properties b/framework/bundles/org.eclipse.ecf.identity/plugin.properties
index aeebc9090..ee9c0bc8c 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 Core Identity API
+plugin.name=ECF Identity Core API
plugin.provider=Eclipse.org - ECF
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF
index b7439962f..9491e9f78 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.presence.ui;singleton:=true
-Bundle-Version: 2.2.0.qualifier
+Bundle-Version: 2.3.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.presence.ui.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java
index 0d3faf2fd..c9168453a 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/Messages.java
@@ -168,6 +168,7 @@ public class Messages extends NLS {
public static String MultiRosterView_SHOW_CHAT_ROOMS_FOR_ACCOUNT_ACTION_TEXT;
public static String MultiRosterView_ShowOffline;
+ public static String MultiRosterView_ShowAway;
public static String MultiRosterView_ShowEmptyGroups;
public static String MultiRosterView_AddContact;
public static String MultiRosterView_SearchContact;
diff --git a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties
index 47c77cc2d..02a4acb7a 100644
--- a/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties
+++ b/framework/bundles/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/internal/presence/ui/messages.properties
@@ -23,6 +23,7 @@ MultiRosterView_SetDoNotDisturb = &Do Not Disturb
MultiRosterView_SetInvisible = &Invisible
MultiRosterView_SetOffline = &Offline
MultiRosterView_ShowOffline = Show &Offline Contacts
+MultiRosterView_ShowAway = Show &Away Contacts
MultiRosterView_ShowEmptyGroups = Show &Empty Groups
MultiRosterView_NO_IDENTIFIER_FOR_ROOM_TITLE=Could not create identifier for room
MultiRosterView_PASSWORD_NOT_CHANGED_MESSAGE=Error changing password
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 7e1eaad47..430d0b062 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
@@ -21,6 +21,7 @@ import org.eclipse.ecf.internal.presence.ui.Activator;
import org.eclipse.ecf.internal.presence.ui.Messages;
import org.eclipse.ecf.internal.presence.ui.dialogs.*;
import org.eclipse.ecf.presence.*;
+import org.eclipse.ecf.presence.IPresence.Mode;
import org.eclipse.ecf.presence.chatroom.IChatRoomInfo;
import org.eclipse.ecf.presence.im.*;
import org.eclipse.ecf.presence.roster.*;
@@ -95,6 +96,8 @@ public class MultiRosterView extends ViewPart implements IMultiRosterViewPart {
private IAction showEmptyGroupsAction;
+ private IAction showAwayAction;
+
private IAction addContactAction;
private IAction searchContactAction;
@@ -141,6 +144,21 @@ public class MultiRosterView extends ViewPart implements IMultiRosterViewPart {
}
};
+ private ViewerFilter showAwayFilter = new ViewerFilter() {
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (element instanceof IRosterEntry) {
+ IRosterEntry entry = (IRosterEntry) element;
+ IPresence presence = entry.getPresence();
+ if (presence != null) {
+ Mode m = presence.getMode();
+ return (m == IPresence.Mode.AVAILABLE || m == IPresence.Mode.CHAT || m == IPresence.Mode.DND);
+ }
+ return true;
+ }
+ return true;
+ }
+ };
+
/*
* (non-Javadoc)
*
@@ -171,6 +189,7 @@ public class MultiRosterView extends ViewPart implements IMultiRosterViewPart {
treeViewer.setLabelProvider(new MultiRosterLabelProvider());
treeViewer.addFilter(hideOfflineFilter);
treeViewer.addFilter(hideEmptyGroupsFilter);
+ treeViewer.addFilter(showAwayFilter);
treeViewer.setInput(rosterAccounts);
treeViewer.addOpenListener(new IOpenListener() {
public void open(OpenEvent e) {
@@ -461,6 +480,16 @@ public class MultiRosterView extends ViewPart implements IMultiRosterViewPart {
}
};
+ showAwayAction = new Action(Messages.MultiRosterView_ShowAway, IAction.AS_CHECK_BOX) {
+ public void run() {
+ if (isChecked()) {
+ treeViewer.removeFilter(showAwayFilter);
+ } else {
+ treeViewer.addFilter(showAwayFilter);
+ }
+ }
+ };
+
addContactAction = new Action(Messages.MultiRosterView_AddContact, SharedImages.getImageDescriptor(SharedImages.IMG_ADD_BUDDY)) {
public void run() {
AddContactDialog dialog = new AddContactDialog(treeViewer.getControl().getShell());
@@ -720,6 +749,7 @@ public class MultiRosterView extends ViewPart implements IMultiRosterViewPart {
setInvisibleAction.setEnabled(enabled);
setOfflineAction.setEnabled(enabled);
showOfflineAction.setEnabled(enabled);
+ showAwayAction.setEnabled(enabled);
showEmptyGroupsAction.setEnabled(enabled);
addContactAction.setEnabled(enabled);
searchContactAction.setEnabled(enabled);
@@ -741,6 +771,8 @@ public class MultiRosterView extends ViewPart implements IMultiRosterViewPart {
manager.add(showEmptyGroupsAction);
+ manager.add(showAwayAction);
+
manager.add(new Separator());
manager.add(addContactAction);
manager.add(new Separator());
diff --git a/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF
index fcaa97cc6..4367d3307 100644
--- a/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.presence/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.presence;singleton:=true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.1.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.presence.PresencePlugin
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java
new file mode 100644
index 000000000..9277f37a5
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IMultiResourceRosterEntry.java
@@ -0,0 +1,14 @@
+package org.eclipse.ecf.presence.roster;
+
+/**
+ * @since 2.1
+ */
+public interface IMultiResourceRosterEntry {
+
+ /**
+ * Get all the resources for this multi resource roster entry
+ * @return IRosterResource[] of resources. Will not return <code>null</code>.
+ */
+ public IRosterResource[] getResources();
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java
index 75c3ec601..5f77bfd1a 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterEntry.java
@@ -12,7 +12,6 @@
package org.eclipse.ecf.presence.roster;
import java.util.Collection;
-
import org.eclipse.ecf.core.user.IUser;
import org.eclipse.ecf.presence.IPresence;
@@ -35,7 +34,7 @@ public interface IRosterEntry extends IRosterItem {
* Get groups associated with this roster entry. Instance in list are of
* type {@link IRosterGroup}
*
- * @return Iterator of groups that this roster entry belongs to. Will not
+ * @return Collection of IRosterGroup instances entry belongs to. Will not
* return <code>null</code>.
*/
public Collection getGroups();
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java
new file mode 100644
index 000000000..664895f0f
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/IRosterResource.java
@@ -0,0 +1,11 @@
+package org.eclipse.ecf.presence.roster;
+
+import org.eclipse.ecf.presence.IPresence;
+
+/**
+ * @since 2.1
+ */
+public interface IRosterResource extends IRosterItem {
+ // No new methods
+ public IPresence getPresence();
+}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java
index fa33a6d12..691790808 100644
--- a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterEntry.java
@@ -21,7 +21,7 @@ import org.eclipse.ecf.presence.IPresence;
* created as appropriate.
*
*/
-public class RosterEntry extends RosterItem implements IRosterEntry {
+public class RosterEntry extends RosterItem implements IRosterEntry, IMultiResourceRosterEntry {
protected IUser user;
@@ -29,6 +29,11 @@ public class RosterEntry extends RosterItem implements IRosterEntry {
protected List groups;
+ /**
+ * @since 2.1
+ */
+ protected List resources;
+
public RosterEntry(IRosterItem parent, IUser user, IPresence presenceState) {
Assert.isNotNull(parent);
Assert.isNotNull(user);
@@ -40,6 +45,7 @@ public class RosterEntry extends RosterItem implements IRosterEntry {
groups.add(parent);
((RosterGroup) parent).add(this);
}
+ this.resources = new ArrayList();
}
public void setPresence(IPresence newPresence) {
@@ -129,6 +135,7 @@ public class RosterEntry extends RosterItem implements IRosterEntry {
public String toString() {
StringBuffer sb = new StringBuffer("RosterEntry["); //$NON-NLS-1$
synchronized (sb) {
+ sb.append("userid=" + getUser().getID().getName()).append(";"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("name=").append(getName()).append(';'); //$NON-NLS-1$
sb.append("presence=").append(presence).append(';'); //$NON-NLS-1$
sb.append("groups="); //$NON-NLS-1$
@@ -144,4 +151,53 @@ public class RosterEntry extends RosterItem implements IRosterEntry {
return sb.toString();
}
+ /**
+ * @since 2.1
+ */
+ public boolean updateResource(String resourceName, IPresence p) {
+ if (resourceName == null)
+ return false;
+ synchronized (resources) {
+ for (Iterator i = resources.iterator(); i.hasNext();) {
+ RosterResource r = (RosterResource) i.next();
+ if (r.getName().equals(resourceName)) {
+ r.setPresence(p);
+ return true;
+ }
+ }
+ resources.add(new RosterResource(this, resourceName, p));
+ return false;
+ }
+ }
+
+ /**
+ * @since 2.1
+ */
+ public RosterResource removeResource(String resourceName) {
+ if (resourceName == null)
+ return null;
+ RosterResource result = null;
+ synchronized (resources) {
+ for (Iterator i = resources.iterator(); i.hasNext();) {
+ RosterResource r = (RosterResource) i.next();
+ if (r.getName().equals(resourceName)) {
+ i.remove();
+ result = r;
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * @since 2.1
+ */
+ public IRosterResource[] getResources() {
+ List result = null;
+ synchronized (resources) {
+ result = new ArrayList(resources);
+ }
+ return (IRosterResource[]) result.toArray(new IRosterResource[result.size()]);
+ }
+
}
diff --git a/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java
new file mode 100644
index 000000000..42c88e0f8
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.presence/src/org/eclipse/ecf/presence/roster/RosterResource.java
@@ -0,0 +1,55 @@
+package org.eclipse.ecf.presence.roster;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IAdapterManager;
+import org.eclipse.ecf.internal.presence.PresencePlugin;
+import org.eclipse.ecf.presence.IPresence;
+
+/**
+ * @since 2.1
+ */
+public class RosterResource implements IRosterResource {
+
+ private String name;
+ private IRosterEntry parent;
+ private IPresence presence;
+
+ public RosterResource(IRosterEntry parent, String name, IPresence presence) {
+ Assert.isNotNull(parent);
+ this.parent = parent;
+ Assert.isNotNull(name);
+ this.name = name;
+ this.presence = presence;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public IRosterItem getParent() {
+ return parent;
+ }
+
+ public IRoster getRoster() {
+ return parent.getRoster();
+ }
+
+ public Object getAdapter(Class adapter) {
+ if (adapter.isInstance(this)) {
+ return this;
+ }
+ IAdapterManager adapterManager = PresencePlugin.getDefault().getAdapterManager();
+ if (adapterManager == null)
+ return null;
+ return adapterManager.loadAdapter(this, adapter.getName());
+ }
+
+ public IPresence getPresence() {
+ return presence;
+ }
+
+ public void setPresence(IPresence presence) {
+ this.presence = presence;
+ }
+
+}
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 bac5d5780..1165db1be 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.4.0.qualifier
+Bundle-Version: 4.5.0.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/plugin.properties b/framework/bundles/org.eclipse.ecf.provider/plugin.properties
index 23debdd43..5a2925540 100644
--- a/framework/bundles/org.eclipse.ecf.provider/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.provider/plugin.properties
@@ -6,6 +6,6 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-plugin.name=ECF Provider API
+plugin.name=ECF Generic Provider
plugin.provider=Eclipse.org - ECF
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 0ffd749a3..429b4b3c3 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
@@ -107,7 +107,10 @@ public class GenericContainerInstantiator implements IContainerInstantiator, IRe
return keepAlive;
}
- InetAddress getBindAddress() {
+ /**
+ * @since 4.5
+ */
+ public InetAddress getBindAddress() {
return bindAddress;
}
}
@@ -265,19 +268,33 @@ public class GenericContainerInstantiator implements IContainerInstantiator, IRe
return port;
}
+ /**
+ * @since 4.5
+ */
+ protected IContainer createClientContainer(GenericContainerArgs gcargs) throws Exception {
+ return new TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+ }
+
+ /**
+ * @since 4.5
+ */
+ protected IContainer createServerContainer(GenericContainerArgs gcargs) throws Exception {
+ return new TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+ }
+
public IContainer createInstance(ContainerTypeDescription description, Object[] args) throws ContainerCreateException {
boolean isClient = isClient(description);
try {
GenericContainerArgs gcargs = null;
if (isClient) {
gcargs = getClientArgs(args);
- return new TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+ return createClientContainer(gcargs);
}
// 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.getBindAddress(), gcargs.getKeepAlive().intValue());
+ return createServerContainer(gcargs);
}
} catch (Exception e) {
Trace.catching(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "createInstance", e); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java
index f6403eede..5737444fd 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLGenericContainerInstantiator.java
@@ -108,7 +108,10 @@ public class SSLGenericContainerInstantiator implements IContainerInstantiator,
return keepAlive;
}
- InetAddress getBindAddress() {
+ /**
+ * @since 4.5
+ */
+ public InetAddress getBindAddress() {
return bindAddress;
}
}
@@ -272,19 +275,33 @@ public class SSLGenericContainerInstantiator implements IContainerInstantiator,
return port;
}
+ /**
+ * @since 4.5
+ */
+ protected IContainer createClientContainer(GenericContainerArgs gcargs) throws Exception {
+ return new SSLClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+ }
+
+ /**
+ * @since 4.5
+ */
+ protected IContainer createServerContainer(GenericContainerArgs gcargs) throws Exception {
+ return new SSLServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+ }
+
public IContainer createInstance(ContainerTypeDescription description, Object[] args) throws ContainerCreateException {
boolean isClient = isClient(description);
try {
GenericContainerArgs gcargs = null;
if (isClient) {
gcargs = getClientArgs(args);
- return new SSLClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+ return createClientContainer(gcargs);
}
// This synchronized block is to prevent issues with
// multithreaded access to ServerPort (to find available port)
synchronized (this) {
gcargs = getServerArgs(args);
- return new SSLServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+ return createServerContainer(gcargs);
}
} catch (Exception e) {
Trace.catching(ProviderPlugin.PLUGIN_ID, ECFProviderDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "createInstance", e); //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java
index df185998b..f6bbdc109 100644
--- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java
+++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/provider/generic/SSLServerSOContainerGroup.java
@@ -141,6 +141,14 @@ public class SSLServerSOContainerGroup extends SOContainerGroup implements ISock
threadGroup.interrupt();
threadGroup = null;
}
+ if (this.serverSocket != null) {
+ try {
+ this.serverSocket.close();
+ } catch (IOException e) {
+ Trace.catching("org.eclipse.ecf.provider", ECFProviderDebugOptions.CONNECTION, SSLServerSOContainerGroup.class, "takeOffTheAir", e); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ this.serverSocket = null;
+ }
isOnTheAir = false;
}
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 426e3137d..2e62566ac 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
@@ -16,6 +16,6 @@ Import-Package: com.sun.syndication.feed;version="0.9.0",
org.osgi.util.tracker;version="1.4.0"
Bundle-ActivationPolicy: lazy
Require-Bundle: org.jdom;bundle-version="1.0.0",
- org.eclipse.equinox.common;bundle-version="3.6.0"
+ org.eclipse.equinox.common
Export-Package: org.eclipse.ecf.remoteservice.rest.synd;version="1.1.0"
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 9755a2943..9d4db8b13 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=ECF REST RemoteServices RSS/Atom support
+plugin.name=ECF RemoteServices REST 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 ae902db97..5634c4f52 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-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-Vendor: %plugin.provider
Bundle-SymbolicName: org.eclipse.ecf.remoteservice.rest;singleton:=true
-Bundle-Version: 2.2.300.qualifier
+Bundle-Version: 2.3.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rest.Activator
Bundle-ActivationPolicy: lazy
Eclipse-BuddyPolicy: global
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.rest/plugin.properties
index 2ba39468d..98e358784 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 RemoteServices API
+plugin.name=ECF RemoteServices REST API
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 97329b18f..8d398e935 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
@@ -2,15 +2,15 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.remoteservice.rpc;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.remoteservice.rpc.Activator
Bundle-Vendor: %plugin.provider
Require-Bundle: org.eclipse.ecf,
- org.eclipse.equinox.common;bundle-version="3.6.0"
+ org.eclipse.equinox.common
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
-Import-Package: org.osgi.framework,
- org.osgi.util.tracker,
+Import-Package: javax.servlet;version="2.6.0",
+ javax.servlet.http;version="2.6.0",
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",
@@ -22,15 +22,20 @@ Import-Package: org.osgi.framework,
org.apache.xmlrpc.common,
org.apache.xmlrpc.parser,
org.apache.xmlrpc.serializer,
+ org.apache.xmlrpc.server,
+ org.apache.xmlrpc.webserver,
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;version="6.0.0",
org.eclipse.ecf.remoteservice.client,
- org.osgi.service.log;version="1.3.0"
+ org.osgi.framework,
+ org.osgi.service.log;version="1.3.0",
+ org.osgi.util.tracker
Export-Package: org.eclipse.ecf.internal.remoteservice.rpc;x-internal:=true,
org.eclipse.ecf.remoteservice.rpc;version="1.0.0",
org.eclipse.ecf.remoteservice.rpc.client;version="1.0.0",
- org.eclipse.ecf.remoteservice.rpc.identity;version="1.0.0"
+ org.eclipse.ecf.remoteservice.rpc.identity;version="1.0.0",
+ org.eclipse.ecf.remoteservice.rpc.server
Bundle-Localization: plugin
DynamicImport-Package: *
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
index e9f0484ec..5258bc21b 100644
--- 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
@@ -31,7 +31,7 @@ public class TrivialParameterServializer implements IRemoteCallParameterSerializ
if (paramToSerialize != null) {
for (int i = 0; i < paramToSerialize.length; i++) {
IRemoteCallParameter p = new RemoteCallParameter(currentParameters[i].getName(),
- paramToSerialize[i] == null ? currentParameters[i].getValue() : paramToSerialize);
+ paramToSerialize[i] == null ? currentParameters[i].getValue() : paramToSerialize[i]);
results.add(p);
}
}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java
new file mode 100644
index 000000000..7d62f183b
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/src/org/eclipse/ecf/remoteservice/rpc/server/RemoteServiceXmlRpcServlet.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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.server;
+
+import javax.servlet.ServletConfig;
+import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping;
+import org.apache.xmlrpc.server.XmlRpcHandlerMapping;
+import org.apache.xmlrpc.webserver.XmlRpcServlet;
+import org.apache.xmlrpc.webserver.XmlRpcServletServer;
+
+public class RemoteServiceXmlRpcServlet extends XmlRpcServlet {
+
+ private static final long serialVersionUID = 654171179838565650L;
+
+ class RemoteServiceHandlerMapping extends AbstractReflectiveHandlerMapping {
+
+ }
+
+ private RemoteServiceHandlerMapping mapping;
+
+ protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() throws XmlRpcException {
+ return (mapping == null) ? super.newXmlRpcHandlerMapping() : mapping;
+ }
+
+ class RemoteServiceXmlRpcServletServer extends XmlRpcServletServer {
+
+ }
+
+ private RemoteServiceXmlRpcServletServer server;
+
+ protected XmlRpcServletServer newXmlRpcServer(ServletConfig pConfig) throws XmlRpcException {
+ return (server == null) ? super.newXmlRpcServer(pConfig) : server;
+ }
+
+}
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF
index 63dcb7aef..b56b2fe11 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/META-INF/MANIFEST.MF
@@ -1,9 +1,9 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: ECF Remote Service ServletAPI
+Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.remoteservice.servlet
Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: Eclipse.org - ECF
+Bundle-Vendor: %plugin.provider
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: javax.servlet,
javax.servlet.http,
@@ -12,9 +12,11 @@ Import-Package: javax.servlet,
org.eclipse.ecf.provider.remoteservice.generic;version="4.0.0",
org.eclipse.ecf.remoteservice;version="7.0.0",
org.eclipse.ecf.remoteservice.util;version="8.1.0",
- org.eclipse.equinox.concurrent.future;version="1.1.0",
+ org.eclipse.equinox.concurrent.future;version="1.0.0",
org.osgi.framework;version="1.7.0",
org.osgi.service.http;version="1.2.1"
Export-Package: org.eclipse.ecf.remoteservice.servlet
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
- org.eclipse.ecf;bundle-version="3.2.0"
+Require-Bundle: org.eclipse.equinox.common,
+ org.eclipse.ecf
+Bundle-Localization: plugin
+
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties
index 34d2e4d2d..cdd2db7f1 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/build.properties
@@ -1,4 +1,7 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ .,\
+ about.html,\
+ plugin.properties
+src.includes = about.html
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties
index 3968910a1..7b192fe17 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.servlet/plugin.properties
@@ -7,4 +7,4 @@
#
############################################################################
plugin.provider=Eclipse.org - ECF
-plugin.name=ECF RemoteService Servlet API
+plugin.name=ECF RemoteServices Servlet API
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties
index 50a1a8e9d..ca125d439 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.soap/plugin.properties
@@ -7,4 +7,4 @@
#
############################################################################
plugin.provider=Eclipse.org - ECF
-plugin.name=ECF Remote Service SOAP Provider API
+plugin.name=ECF RemoteServices SOAP Provider API
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 3d2b46166..1b52fcb33 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.remoteservice
-Bundle-Version: 8.3.0.qualifier
+Bundle-Version: 8.4.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.remoteservice.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties b/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties
index 9113a5a8c..0d9b2cbda 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/plugin.properties
@@ -7,4 +7,4 @@
#
############################################################################
plugin.provider=Eclipse.org - ECF
-plugin.name=ECF RemoteService API
+plugin.name=ECF RemoteServices API
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 d48bcd92e..2d65eed5b 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
@@ -150,22 +150,45 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
classes.add(IRemoteServiceProxy.class);
}
+ private boolean nameAlreadyPresent(String className, List classes) {
+ for (Iterator i = classes.iterator(); i.hasNext();) {
+ Class c = (Class) i.next();
+ if (className.equals(c.getName()))
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @since 8.3
+ */
+ protected List addAsyncProxyClasses(ClassLoader cl, Class[] interfaces) {
+ List intfs = Arrays.asList(interfaces);
+ List results = new ArrayList();
+ if (getRemoteServiceReference().getProperty(Constants.SERVICE_PREVENT_ASYNCPROXY) == null) {
+ for (Iterator i = intfs.iterator(); i.hasNext();) {
+ Class intf = (Class) i.next();
+ String intfName = convertInterfaceNameToAsyncInterfaceName(intf.getName());
+ if (intfName != null && !nameAlreadyPresent(intfName, intfs)) {
+ Class asyncClass = findAsyncRemoteServiceProxyClass(cl, intf);
+ // Only add if async
+ if (asyncClass != null && !intfs.contains(asyncClass))
+ results.add(asyncClass);
+ }
+ }
+ }
+ results.addAll(intfs);
+ return results;
+ }
+
/**
* @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
+ // Now add any async p
+ List classes = addAsyncProxyClasses(cl, interfaces);
+
addRemoteServiceProxyToProxy(classes);
// create and return proxy
try {
@@ -256,6 +279,8 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
*/
protected Class findAsyncRemoteServiceProxyClass(ClassLoader cl, Class c) {
String proxyClassName = convertInterfaceNameToAsyncInterfaceName(c.getName());
+ if (proxyClassName == null)
+ return null;
try {
return Class.forName(proxyClassName, true, cl);
} catch (ClassNotFoundException e) {
@@ -273,7 +298,8 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
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
+ if (interfaceName.endsWith(IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX))
+ return interfaceName;
return interfaceName + IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX;
}
@@ -290,13 +316,14 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
}
protected Object invokeObject(Object proxy, final Method method, final Object[] args) throws Throwable {
- if (method.getName().equals("toString")) { //$NON-NLS-1$
+ String methodName = method.getName();
+ if (methodName.equals("toString")) { //$NON-NLS-1$
final String[] clazzes = getInterfaceClassNames();
String proxyClass = (clazzes.length == 1) ? clazzes[0] : Arrays.asList(clazzes).toString();
return proxyClass + ".proxy@" + getRemoteServiceID(); //$NON-NLS-1$
- } else if (method.getName().equals("hashCode")) { //$NON-NLS-1$
+ } else if (methodName.equals("hashCode")) { //$NON-NLS-1$
return new Integer(hashCode());
- } else if (method.getName().equals("equals")) { //$NON-NLS-1$
+ } else if (methodName.equals("equals")) { //$NON-NLS-1$
if (args == null || args.length == 0)
return Boolean.FALSE;
try {
@@ -305,9 +332,9 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
return Boolean.FALSE;
}
// This handles the use of IRemoteServiceProxy.getRemoteService method
- } else if (method.getName().equals("getRemoteService")) { //$NON-NLS-1$
+ } else if (methodName.equals("getRemoteService")) { //$NON-NLS-1$
return getRemoteService();
- } else if (method.getName().equals("getRemoteServiceReference")) { //$NON-NLS-1$
+ } else if (methodName.equals("getRemoteServiceReference")) { //$NON-NLS-1$
return getRemoteServiceReference();
}
return null;
@@ -317,6 +344,32 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
return callSync(call);
}
+ /**
+ * @since 8.3
+ */
+ protected boolean isAsync(Object proxy, Method method, Object[] args) {
+ return (Arrays.asList(method.getDeclaringClass().getInterfaces()).contains(IAsyncRemoteServiceProxy.class) || method.getName().endsWith(IAsyncRemoteServiceProxy.ASYNC_METHOD_SUFFIX));
+ }
+
+ /**
+ * @since 8.3
+ */
+ protected IRemoteCall createRemoteCall(final String callMethod, final Object[] callParameters, final long callTimeout) {
+ return new IRemoteCall() {
+ public String getMethod() {
+ return callMethod;
+ }
+
+ public Object[] getParameters() {
+ return callParameters;
+ }
+
+ public long getTimeout() {
+ return callTimeout;
+ }
+ };
+ }
+
public Object invoke(Object proxy, final Method method, final Object[] args) throws Throwable {
// methods declared by Object
try {
@@ -325,27 +378,13 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
Object resultObject = invokeObject(proxy, method, args);
if (resultObject != null)
return resultObject;
- // If the method's class is a subclass of IAsyncRemoteServiceProxy, then we assume
- // that the methods are intended to be invoked asynchronously
- if (Arrays.asList(method.getDeclaringClass().getInterfaces()).contains(IAsyncRemoteServiceProxy.class))
+ if (isAsync(proxy, method, args))
return invokeAsync(method, args);
// else call synchronously/block and return result
final String callMethod = getCallMethodNameForProxyInvoke(method, args);
final Object[] callParameters = getCallParametersForProxyInvoke(callMethod, method, args);
final long callTimeout = getCallTimeoutForProxyInvoke(callMethod, method, args);
- final IRemoteCall remoteCall = new IRemoteCall() {
- public String getMethod() {
- return callMethod;
- }
-
- public Object[] getParameters() {
- return callParameters;
- }
-
- public long getTimeout() {
- return callTimeout;
- }
- };
+ final IRemoteCall remoteCall = createRemoteCall(callMethod, callParameters, callTimeout);
return invokeSync(remoteCall);
} catch (Throwable t) {
if (t instanceof ServiceException)
@@ -356,17 +395,17 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
}
/**
- * @since 3.3
+ * @since 8.4
*/
- protected class AsyncArgs {
+ public class AsyncArgs {
private IRemoteCallListener listener;
private Object[] args;
- private boolean isIFuture;
+ private Class returnType;
- public AsyncArgs(Object[] originalArgs, boolean isIFuture) {
+ public AsyncArgs(Object[] originalArgs, Class returnType) {
this.listener = null;
this.args = originalArgs;
- this.isIFuture = isIFuture;
+ this.returnType = returnType;
}
public AsyncArgs(IRemoteCallListener listener, Object[] originalArgs) {
@@ -387,11 +426,8 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
return args;
}
- /**
- * @since 8.2
- */
- public boolean isIFuture() {
- return isIFuture;
+ public Class getReturnType() {
+ return returnType;
}
}
@@ -401,8 +437,7 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
protected Object invokeAsync(final Method method, final Object[] args) throws Throwable {
final String invokeMethodName = getAsyncInvokeMethodName(method);
final AsyncArgs asyncArgs = getAsyncArgs(method, args);
- IRemoteCallListener listener = asyncArgs.getListener();
- IRemoteCall call = new IRemoteCall() {
+ return callAsync(new IRemoteCall() {
public String getMethod() {
return invokeMethodName;
}
@@ -414,14 +449,23 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
public long getTimeout() {
return DEFAULT_TIMEOUT;
}
- };
- // IFuture or Future will have listener == null
- if (listener == null) {
- if (asyncArgs.isIFuture())
- return callAsync(call);
- return callFutureAsync(call);
- }
- return callAsyncWithResult(call, listener);
+ }, asyncArgs.getListener(), asyncArgs.getReturnType());
+ }
+
+ /**
+ * @since 8.4
+ */
+ protected Object callAsync(IRemoteCall call, IRemoteCallListener listener, Class returnType) {
+ return (listener != null) ? callAsyncWithResult(call, listener) : callFuture(call, returnType);
+ }
+
+ /**
+ * @since 8.4
+ */
+ protected Object callFuture(IRemoteCall call, Class returnType) {
+ if (IFuture.class.isAssignableFrom(returnType))
+ return callAsync(call);
+ return callFutureAsync(call);
}
/**
@@ -453,30 +497,26 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio
IRemoteCallListener listener = null;
Class returnType = method.getReturnType();
// If the return type is of type java.util.concurrent.Future, then we return
- if (returnType.equals(Future.class)) {
- return new AsyncArgs(args, false);
- } else if (returnType.equals(IFuture.class)) {
- return new AsyncArgs(args, true);
- } else {
- // If the provided args do *not* include an IRemoteCallListener then we have a problem
- if (args == null || args.length == 0)
- throw new IllegalArgumentException("Async calls must include a IRemoteCallListener instance as the last argument"); //$NON-NLS-1$
- // Get the last arg
- Object lastArg = args[args.length - 1];
- // If it's an IRemoteCallListener implementer directly, then just cast and return
- if (lastArg instanceof IRemoteCallListener) {
- listener = (IRemoteCallListener) lastArg;
- }
- // If it's an implementation of IAsyncCallback, then create a new listener based upon
- // callback and return
- if (lastArg instanceof IAsyncCallback) {
- listener = new CallbackRemoteCallListener((IAsyncCallback) lastArg);
- }
- // If the last are is not an instance of IRemoteCallListener then there is a problem
- if (listener == null)
- throw new IllegalArgumentException("Last argument must be an instance of IRemoteCallListener"); //$NON-NLS-1$
- return new AsyncArgs(listener, args);
+ if (Future.class.isAssignableFrom(returnType) || IFuture.class.isAssignableFrom(returnType))
+ return new AsyncArgs(args, returnType);
+ // If the provided args do *not* include an IRemoteCallListener then we have a problem
+ if (args == null || args.length == 0)
+ throw new IllegalArgumentException("Async calls must include a IRemoteCallListener instance as the last argument"); //$NON-NLS-1$
+ // Get the last arg
+ Object lastArg = args[args.length - 1];
+ // If it's an IRemoteCallListener implementer directly, then just cast and return
+ if (lastArg instanceof IRemoteCallListener) {
+ listener = (IRemoteCallListener) lastArg;
+ }
+ // If it's an implementation of IAsyncCallback, then create a new listener based upon
+ // callback and return
+ if (lastArg instanceof IAsyncCallback) {
+ listener = new CallbackRemoteCallListener((IAsyncCallback) lastArg);
}
+ // If the last are is not an instance of IRemoteCallListener then there is a problem
+ if (listener == null)
+ throw new IllegalArgumentException("Last argument must be an instance of IRemoteCallListener"); //$NON-NLS-1$
+ return new AsyncArgs(listener, args);
}
/**
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 2ac0a3dd0..7ae7fbd92 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
@@ -13,6 +13,8 @@ package org.eclipse.ecf.remoteservice;
/**
* Remote service API constants.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
*/
public interface Constants {
@@ -161,6 +163,11 @@ public interface Constants {
public static final String SERVICE_ASYNC_RSPROXY_CLASS_ = "ecf.rsvc.async.proxy_"; //$NON-NLS-1$
/**
+ * @since 8.3
+ */
+ public static final String SERVICE_PREVENT_ASYNCPROXY = "ecf.rsvc.async.noproxy"; //$NON-NLS-1$
+
+ /**
* @deprecated
*/
public static final String SERVICE_CONNECT_ID = "ecf.rsvc.cnct.id"; //$NON-NLS-1$
diff --git a/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties b/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties
index a88cffbbb..60429583b 100644
--- a/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties
+++ b/framework/bundles/org.eclipse.ecf.sharedobject/plugin.properties
@@ -6,6 +6,6 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-plugin.name=ECF Sharedobject API
+plugin.name=ECF SharedObject API
plugin.provider=Eclipse.org - ECF
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 33c628e1d..0c8e0c181 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
@@ -14,8 +14,7 @@ import java.lang.reflect.Method;
import java.util.*;
/**
- * @since 2.2
- *
+ * @since 3.3
*/
@SuppressWarnings("unchecked")
public class ClassUtil {
diff --git a/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF
index 3b53dd4a0..285973423 100644
--- a/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.sync/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.sync
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
Bundle-Activator: org.eclipse.ecf.internal.sync.Activator
Bundle-Vendor: %plugin.provider
Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
diff --git a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java
index dea9abba1..7bd069f57 100644
--- a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java
+++ b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaDocumentChangeMessage.java
@@ -13,7 +13,6 @@ package org.eclipse.ecf.internal.sync.doc.cola;
import java.util.LinkedList;
import java.util.List;
-
import org.eclipse.ecf.core.util.Trace;
import org.eclipse.ecf.internal.sync.Activator;
import org.eclipse.ecf.internal.sync.SyncDebugOptions;
@@ -23,16 +22,21 @@ public class ColaDocumentChangeMessage extends DocumentChangeMessage {
private static final long serialVersionUID = 2038025022180647210L;
+ public static final int TRANSFORM_TYPE_NOT_REPLACE_OR_DELETE = 0;
+ public static final int TRANSFORM_TYPE_DELETE = 1;
+ public static final int TRANSFORM_TYPE_REPLACE = 2;
+
// TODO encapsulate in a new ColaOpOriginationState and re-implement equals,
// hashCode, i.e. make comparable
private final long localOperationsCount;
private final long remoteOperationsCount;
private final int transformType;
-
+
private boolean splitUp;
private List splitUpRepresentation;
- public ColaDocumentChangeMessage(DocumentChangeMessage msg, long localOperationsCount, long remoteOperationsCount) {
+ public ColaDocumentChangeMessage(DocumentChangeMessage msg,
+ long localOperationsCount, long remoteOperationsCount) {
super(msg.getOffset(), msg.getLengthOfReplacedText(), msg.getText());
this.localOperationsCount = localOperationsCount;
this.remoteOperationsCount = remoteOperationsCount;
@@ -40,32 +44,33 @@ public class ColaDocumentChangeMessage extends DocumentChangeMessage {
this.splitUpRepresentation = new LinkedList();
if (super.getLengthOfReplacedText() == 0) {
// this is neither a replacement, nor a deletion
- transformType = 0;
+ transformType = TRANSFORM_TYPE_NOT_REPLACE_OR_DELETE;
} else {
if (super.getText().length() == 0) {
// something has been replaced, nothing inserted, must be a
// deletion
- transformType = 1;
+ transformType = TRANSFORM_TYPE_DELETE;
} else {
// something has been replaced with some new input, has to be a
// replacement op
- transformType = 2;
- //TODO this has not been implemented yet
- //throw new IllegalArgumentException("Replacement Handling not implemented yet! Known Bug.");
+ transformType = TRANSFORM_TYPE_REPLACE;
+ // TODO this has not been implemented yet
+ // throw new
+ // IllegalArgumentException("Replacement Handling not implemented yet! Known Bug.");
}
}
}
public boolean isInsertion() {
- return (transformType == 0);
+ return (transformType == TRANSFORM_TYPE_NOT_REPLACE_OR_DELETE);
}
public boolean isDeletion() {
- return (transformType == 1);
+ return (transformType == TRANSFORM_TYPE_DELETE);
}
public boolean isReplacement() {
- return (transformType == 2);
+ return (transformType == TRANSFORM_TYPE_REPLACE);
}
public long getLocalOperationsCount() {
@@ -77,15 +82,21 @@ public class ColaDocumentChangeMessage extends DocumentChangeMessage {
}
private ColaTransformationStrategy getTransformationStrategy() {
- if (isInsertion()) return ColaInsertionTransformationStategy.getInstance();
- if (isDeletion()) return ColaDeletionTransformationStrategy.getInstance();
+ if (isInsertion())
+ return ColaInsertionTransformationStategy.getInstance();
+ if (isDeletion())
+ return ColaDeletionTransformationStrategy.getInstance();
return ColaReplacementTransformationStategy.getInstance();
}
-
- public ColaDocumentChangeMessage transformAgainst(ColaDocumentChangeMessage localMsg, boolean localMsgHighPrio) {
- Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING, this.getClass(), "transformAgainst", localMsg); //$NON-NLS-1$
- final ColaDocumentChangeMessage transformedMsg = getTransformationStrategy().getOperationalTransform(this, localMsg, localMsgHighPrio);
- Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING, this.getClass(), "transformAgainst", transformedMsg); //$NON-NLS-1$
+
+ public ColaDocumentChangeMessage transformAgainst(
+ ColaDocumentChangeMessage localMsg, boolean localMsgHighPrio) {
+ Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING,
+ this.getClass(), "transformAgainst", localMsg); //$NON-NLS-1$
+ final ColaDocumentChangeMessage transformedMsg = getTransformationStrategy()
+ .getOperationalTransform(this, localMsg, localMsgHighPrio);
+ Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING,
+ this.getClass(), "transformAgainst", transformedMsg); //$NON-NLS-1$
return transformedMsg;
}
@@ -99,7 +110,7 @@ public class ColaDocumentChangeMessage extends DocumentChangeMessage {
} else if (transformType == 2) {
tType = "replace";
}
- buf.append("transformType="+tType);
+ buf.append("transformType=" + tType);
buf.append(";offset=").append(getOffset()); //$NON-NLS-1$ //$NON-NLS-2$
buf.append(";length=").append(getLengthOfReplacedText()).append(";text=").append(getText()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
buf.append(";operationsCount[local=").append(getLocalOperationsCount()); //$NON-NLS-1$
@@ -123,7 +134,8 @@ public class ColaDocumentChangeMessage extends DocumentChangeMessage {
return splitUpRepresentation;
}
- public void addToSplitUpRepresentation(ColaDocumentChangeMessage splitUpRepresentationPart) {
+ public void addToSplitUpRepresentation(
+ ColaDocumentChangeMessage splitUpRepresentationPart) {
this.splitUpRepresentation.add(splitUpRepresentationPart);
}
}
diff --git a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java
index cd5f2361c..fe3656ca8 100644
--- a/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java
+++ b/framework/bundles/org.eclipse.ecf.sync/src/org/eclipse/ecf/internal/sync/doc/cola/ColaSynchronizationStrategy.java
@@ -11,29 +11,20 @@
package org.eclipse.ecf.internal.sync.doc.cola;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
+import java.util.*;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.util.Trace;
import org.eclipse.ecf.internal.sync.Activator;
import org.eclipse.ecf.internal.sync.SyncDebugOptions;
-import org.eclipse.ecf.sync.IModelChange;
-import org.eclipse.ecf.sync.IModelChangeMessage;
-import org.eclipse.ecf.sync.IModelSynchronizationStrategy;
-import org.eclipse.ecf.sync.SerializationException;
+import org.eclipse.ecf.sync.*;
import org.eclipse.ecf.sync.doc.DocumentChangeMessage;
import org.eclipse.ecf.sync.doc.IDocumentChange;
import org.eclipse.osgi.util.NLS;
-public class ColaSynchronizationStrategy implements IModelSynchronizationStrategy {
+public class ColaSynchronizationStrategy implements
+ IModelSynchronizationStrategy {
// <ColaDocumentChangeMessage>
private final List unacknowledgedLocalOperations;
@@ -51,14 +42,13 @@ public class ColaSynchronizationStrategy implements IModelSynchronizationStrateg
remoteOperationsCount = 0;
}
- public static ColaSynchronizationStrategy getInstanceFor(ID client, boolean isInitiator) {
- ColaSynchronizationStrategy existingStrategy = (ColaSynchronizationStrategy) sessionStrategies.get(client);
- if (existingStrategy != null) {
- Boolean existingStrategyIsInitiator = new Boolean(existingStrategy.isInitiator);
- if (existingStrategyIsInitiator.equals(new Boolean(isInitiator))) {
- return existingStrategy;
- }
- }
+ public static ColaSynchronizationStrategy getInstanceFor(ID client,
+ boolean isInitiator) {
+ ColaSynchronizationStrategy existingStrategy = (ColaSynchronizationStrategy) sessionStrategies
+ .get(client);
+ if (existingStrategy != null
+ && existingStrategy.isInitiator == isInitiator)
+ return existingStrategy;
existingStrategy = new ColaSynchronizationStrategy(isInitiator);
sessionStrategies.put(client, existingStrategy);
return existingStrategy;
@@ -71,35 +61,51 @@ public class ColaSynchronizationStrategy implements IModelSynchronizationStrateg
public static void dispose() {
sessionStrategies.clear();
}
+
/**
- * Handles proper transformation of incoming <code>ColaDocumentChangeMessage</code>s.
- * Returned <code>DocumentChangeMessage</code>s can be applied directly to the
- * shared document. The method implements the concurrency algorithm described
- * in <code>http://wiki.eclipse.org/RT_Shared_Editing</code>
- * @param remoteMsg
- * @return List contains <code>DocumentChangeMessage</code>s ready for sequential application to document
+ * Handles proper transformation of incoming
+ * <code>ColaDocumentChangeMessage</code>s. Returned
+ * <code>DocumentChangeMessage</code>s can be applied directly to the shared
+ * document. The method implements the concurrency algorithm described in
+ * <code>http://wiki.eclipse.org/RT_Shared_Editing</code>
+ *
+ * @param remoteMsg
+ * @return List contains <code>DocumentChangeMessage</code>s ready for
+ * sequential application to document
*/
public List transformIncomingMessage(final DocumentChangeMessage remoteMsg) {
if (!(remoteMsg instanceof ColaDocumentChangeMessage)) {
- throw new IllegalArgumentException("DocumentChangeMessage is incompatible with Cola SynchronizationStrategy"); //$NON-NLS-1$
+ throw new IllegalArgumentException(
+ "DocumentChangeMessage is incompatible with Cola SynchronizationStrategy"); //$NON-NLS-1$
}
- Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING, this.getClass(), "transformIncomingMessage", remoteMsg); //$NON-NLS-1$
+ Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING,
+ this.getClass(), "transformIncomingMessage", remoteMsg); //$NON-NLS-1$
ColaDocumentChangeMessage transformedRemote = (ColaDocumentChangeMessage) remoteMsg;
final List transformedRemotes = new LinkedList();
transformedRemotes.add(transformedRemote);
remoteOperationsCount++;
- Trace.trace(Activator.PLUGIN_ID, "unacknowledgedLocalOperations="+unacknowledgedLocalOperations);
- //this is where the concurrency algorithm is executed
- if (!unacknowledgedLocalOperations.isEmpty()) {//Do not remove this. It is necessary. The following iterator does not suffice.
+ Trace.trace(Activator.PLUGIN_ID, "unacknowledgedLocalOperations="
+ + unacknowledgedLocalOperations);
+ // this is where the concurrency algorithm is executed
+ if (!unacknowledgedLocalOperations.isEmpty()) {// Do not remove this. It
+ // is necessary. The
+ // following iterator
+ // does not suffice.
// remove operations from queue that have been implicitly
// acknowledged as received on the remote site by the reception of
// this message
- for (final Iterator it = unacknowledgedLocalOperations.iterator(); it.hasNext();) {
- final ColaDocumentChangeMessage unackedLocalOp = (ColaDocumentChangeMessage) it.next();
- if (transformedRemote.getRemoteOperationsCount() > unackedLocalOp.getLocalOperationsCount()) {
- Trace.trace(Activator.PLUGIN_ID, NLS.bind("transformIncomingMessage.removing {0}", unackedLocalOp)); //$NON-NLS-1$
+ for (final Iterator it = unacknowledgedLocalOperations.iterator(); it
+ .hasNext();) {
+ final ColaDocumentChangeMessage unackedLocalOp = (ColaDocumentChangeMessage) it
+ .next();
+ if (transformedRemote.getRemoteOperationsCount() > unackedLocalOp
+ .getLocalOperationsCount()) {
+ Trace.trace(
+ Activator.PLUGIN_ID,
+ NLS.bind(
+ "transformIncomingMessage.removing {0}", unackedLocalOp)); //$NON-NLS-1$
it.remove();
} else {
// the unackowledgedLocalOperations queue is ordered and
@@ -110,7 +116,8 @@ public class ColaSynchronizationStrategy implements IModelSynchronizationStrateg
// remote operation's view)
// is reached, we can abandon the check for the remaining
// queue items
- Trace.trace(Activator.PLUGIN_ID, "breaking out of unackedLocalOperations loop"); //$NON-NLS-1$
+ Trace.trace(Activator.PLUGIN_ID,
+ "breaking out of unackedLocalOperations loop"); //$NON-NLS-1$
break;// exits for-loop
}
}
@@ -119,62 +126,106 @@ public class ColaSynchronizationStrategy implements IModelSynchronizationStrateg
// don't require to be transformed against
if (!unacknowledgedLocalOperations.isEmpty()) {
- ColaDocumentChangeMessage localOp = (ColaDocumentChangeMessage) unacknowledgedLocalOperations.get(0);
- Assert.isTrue(transformedRemote.getRemoteOperationsCount() == localOp.getLocalOperationsCount());
+ ColaDocumentChangeMessage localOp = (ColaDocumentChangeMessage) unacknowledgedLocalOperations
+ .get(0);
+ Assert.isTrue(transformedRemote.getRemoteOperationsCount() == localOp
+ .getLocalOperationsCount());
- for (final ListIterator unackOpsListIt = unacknowledgedLocalOperations.listIterator(); unackOpsListIt.hasNext();) {
- for (final ListIterator trafoRemotesIt = transformedRemotes.listIterator(); trafoRemotesIt.hasNext();) {
+ for (final ListIterator unackOpsListIt = unacknowledgedLocalOperations
+ .listIterator(); unackOpsListIt.hasNext();) {
+ for (final ListIterator trafoRemotesIt = transformedRemotes
+ .listIterator(); trafoRemotesIt.hasNext();) {
// returns new instance
- // clarify operation preference, owner/docshare initiator
+ // clarify operation preference, owner/docshare
+ // initiator
// consistently comes first
- localOp = (ColaDocumentChangeMessage) unackOpsListIt.next();
- transformedRemote = (ColaDocumentChangeMessage) trafoRemotesIt.next();
- transformedRemote = transformedRemote.transformAgainst(localOp, isInitiator);
+ localOp = (ColaDocumentChangeMessage) unackOpsListIt
+ .next();
+ transformedRemote = (ColaDocumentChangeMessage) trafoRemotesIt
+ .next();
+ transformedRemote = transformedRemote.transformAgainst(
+ localOp, isInitiator);
if (transformedRemote.isSplitUp()) {
- //currently this only happens for a remote deletion that needs to be transformed against a locally applied insertion
- //attention: before applying a list of deletions to docshare, the indices need to be updated/finalized one last time
- //since deletions can only be applied sequentially and every deletion is going to change the underlying document and the
- //respective indices!
+ // currently this only happens for a remote deletion
+ // that needs to be transformed against a locally
+ // applied insertion
+ // attention: before applying a list of deletions to
+ // docshare, the indices need to be
+ // updated/finalized one last time
+ // since deletions can only be applied sequentially
+ // and every deletion is going to change the
+ // underlying document and the
+ // respective indices!
trafoRemotesIt.remove();
- for (final Iterator splitUpIterator = transformedRemote.getSplitUpRepresentation().iterator(); splitUpIterator.hasNext();) {
+ for (final Iterator splitUpIterator = transformedRemote
+ .getSplitUpRepresentation().iterator(); splitUpIterator
+ .hasNext();) {
trafoRemotesIt.add(splitUpIterator.next());
}
- //according to the ListIterator documentation it seems so as if the following line is unnecessary,
- //as a call to next() after the last removal and additions will return what it would have returned anyway
- //trafoRemotesIt.next();//TODO not sure about the need for this - I want to jump over the two inserted ops and reach the end of this iterator
+ // according to the ListIterator documentation it
+ // seems so as if the following line is unnecessary,
+ // as a call to next() after the last removal and
+ // additions will return what it would have returned
+ // anyway
+ // trafoRemotesIt.next();//TODO not sure about the
+ // need for this - I want to jump over the two
+ // inserted ops and reach the end of this iterator
}
- //TODO check whether or not this collection shuffling does what it is supposed to, i.e. remove current localop in unack list and add split up representation instead
+ // TODO check whether or not this collection shuffling
+ // does what it is supposed to, i.e. remove current
+ // localop in unack list and add split up representation
+ // instead
if (localOp.isSplitUp()) {
- //local operation has been split up during operational transform --> remove current version and add new versions plus jump over those
+ // local operation has been split up during
+ // operational transform --> remove current version
+ // and add new versions plus jump over those
unackOpsListIt.remove();
- for (final Iterator splitUpOpIterator = localOp.getSplitUpRepresentation().iterator(); splitUpOpIterator.hasNext();) {
+ for (final Iterator splitUpOpIterator = localOp
+ .getSplitUpRepresentation().iterator(); splitUpOpIterator
+ .hasNext();) {
unackOpsListIt.add(splitUpOpIterator.next());
}
- //according to the ListIterator documentation it seems so as if the following line is unnecessary,
- //as a call to next() after the last removal and additions will return what it would have returned anyway
- //unackOpsListIt.next();//TODO check whether or not this does jump over both inserted operations that replaced the current unack op
- }//end split up localop handling
- }//transformedRemotes List iteration
+ // according to the ListIterator documentation it
+ // seems so as if the following line is unnecessary,
+ // as a call to next() after the last removal and
+ // additions will return what it would have returned
+ // anyway
+ // unackOpsListIt.next();//TODO check whether or not
+ // this does jump over both inserted operations that
+ // replaced the current unack op
+ }// end split up localop handling
+ }// transformedRemotes List iteration
}
}
}
- Trace.exiting(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING, this.getClass(), "transformIncomingMessage", transformedRemote); //$NON-NLS-1$
+ Trace.exiting(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING,
+ this.getClass(), "transformIncomingMessage", transformedRemote); //$NON-NLS-1$
- //TODO find a cleaner and more OO way of cleaning up the list if it contains multiple deletions:
+ // TODO find a cleaner and more OO way of cleaning up the list if it
+ // contains multiple deletions:
if (transformedRemotes.size() > 1) {
- final ColaDocumentChangeMessage firstOp = (ColaDocumentChangeMessage) transformedRemotes.get(0);
+ final ColaDocumentChangeMessage firstOp = (ColaDocumentChangeMessage) transformedRemotes
+ .get(0);
if (firstOp.isDeletion()) {
- //this means all operations in the return list must also be deletions, i.e. modify virtual/optimistic offset for sequential application to document
- final ListIterator deletionFinalizerIt = transformedRemotes.listIterator();
- ColaDocumentChangeMessage previousDel = (ColaDocumentChangeMessage) deletionFinalizerIt.next();//jump over first del-op does not need modification, we know this is OK because of previous size check;
+ // this means all operations in the return list must also be
+ // deletions, i.e. modify virtual/optimistic offset for
+ // sequential application to document
+ final ListIterator deletionFinalizerIt = transformedRemotes
+ .listIterator();
+ ColaDocumentChangeMessage previousDel = (ColaDocumentChangeMessage) deletionFinalizerIt
+ .next();// jump over first del-op does not need
+ // modification, we know this is OK because of
+ // previous size check;
ColaDocumentChangeMessage currentDel;
for (; deletionFinalizerIt.hasNext();) {
- currentDel = (ColaDocumentChangeMessage) deletionFinalizerIt.next();
- currentDel.setOffset(currentDel.getOffset() - previousDel.getLengthOfReplacedText());
+ currentDel = (ColaDocumentChangeMessage) deletionFinalizerIt
+ .next();
+ currentDel.setOffset(currentDel.getOffset()
+ - previousDel.getLengthOfReplacedText());
previousDel = currentDel;
}
}
@@ -188,48 +239,75 @@ public class ColaSynchronizationStrategy implements IModelSynchronizationStrateg
return buf.toString();
}
- /* (non-Javadoc)
- * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#registerLocalChange(org.eclipse.ecf.sync.doc.IModelChange)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#registerLocalChange
+ * (org.eclipse.ecf.sync.doc.IModelChange)
*/
public IModelChangeMessage[] registerLocalChange(IModelChange localChange) {
List results = new ArrayList();
- Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING, this.getClass(), "registerLocalChange", localChange); //$NON-NLS-1$
+ Trace.entering(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_ENTERING,
+ this.getClass(), "registerLocalChange", localChange); //$NON-NLS-1$
if (localChange instanceof IDocumentChange) {
final IDocumentChange docChange = (IDocumentChange) localChange;
- final ColaDocumentChangeMessage colaMsg = new ColaDocumentChangeMessage(new DocumentChangeMessage(docChange.getOffset(), docChange.getLengthOfReplacedText(), docChange.getText()), localOperationsCount, remoteOperationsCount);
- // If not replacement, we simply add to unacknowledgedLocalOperations and add message
+ final ColaDocumentChangeMessage colaMsg = new ColaDocumentChangeMessage(
+ new DocumentChangeMessage(docChange.getOffset(),
+ docChange.getLengthOfReplacedText(),
+ docChange.getText()), localOperationsCount,
+ remoteOperationsCount);
+ // If not replacement, we simply add to
+ // unacknowledgedLocalOperations and add message
// to results
if (!colaMsg.isReplacement()) {
unacknowledgedLocalOperations.add(colaMsg);
localOperationsCount++;
results.add(colaMsg);
} else {
- // It *is a replacement message, so we add both a delete and an insert message
+ // It *is a replacement message, so we add both a delete and an
+ // insert message
// First create/add a delete message (text set to "")...
- ColaDocumentChangeMessage delMsg = new ColaDocumentChangeMessage(new DocumentChangeMessage(docChange.getOffset(),docChange.getLengthOfReplacedText(),""), localOperationsCount, remoteOperationsCount);
+ ColaDocumentChangeMessage delMsg = new ColaDocumentChangeMessage(
+ new DocumentChangeMessage(docChange.getOffset(),
+ docChange.getLengthOfReplacedText(), ""),
+ localOperationsCount, remoteOperationsCount);
unacknowledgedLocalOperations.add(delMsg);
localOperationsCount++;
results.add(delMsg);
// Then create/add the insert message (length set to 0)
- ColaDocumentChangeMessage insMsg = new ColaDocumentChangeMessage(new DocumentChangeMessage(docChange.getOffset(),0,docChange.getText()), localOperationsCount, remoteOperationsCount);
+ ColaDocumentChangeMessage insMsg = new ColaDocumentChangeMessage(
+ new DocumentChangeMessage(docChange.getOffset(), 0,
+ docChange.getText()), localOperationsCount,
+ remoteOperationsCount);
unacknowledgedLocalOperations.add(insMsg);
localOperationsCount++;
results.add(insMsg);
}
- Trace.exiting(Activator.PLUGIN_ID, SyncDebugOptions.METHODS_EXITING, this.getClass(), "registerLocalChange", colaMsg); //$NON-NLS-1$
+ Trace.exiting(Activator.PLUGIN_ID,
+ SyncDebugOptions.METHODS_EXITING, this.getClass(),
+ "registerLocalChange", colaMsg); //$NON-NLS-1$
}
- return (IModelChangeMessage[]) results.toArray(new IModelChangeMessage[] {});
+ return (IModelChangeMessage[]) results
+ .toArray(new IModelChangeMessage[] {});
}
- /* (non-Javadoc)
- * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#toDocumentChangeMessage(byte[])
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#
+ * toDocumentChangeMessage(byte[])
*/
- public IModelChange deserializeRemoteChange(byte[] bytes) throws SerializationException {
+ public IModelChange deserializeRemoteChange(byte[] bytes)
+ throws SerializationException {
return DocumentChangeMessage.deserialize(bytes);
}
- /* (non-Javadoc)
- * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#transformRemoteChange(org.eclipse.ecf.sync.doc.IModelChangeMessage)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ecf.sync.doc.IDocumentSynchronizationStrategy#
+ * transformRemoteChange(org.eclipse.ecf.sync.doc.IModelChangeMessage)
*/
public IModelChange[] transformRemoteChange(IModelChange remoteChange) {
if (!(remoteChange instanceof DocumentChangeMessage))
@@ -239,13 +317,17 @@ public class ColaSynchronizationStrategy implements IModelSynchronizationStrateg
return (IDocumentChange[]) l.toArray(new IDocumentChange[] {});
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
public Object getAdapter(Class adapter) {
- if (adapter == null) return null;
+ if (adapter == null)
+ return null;
IAdapterManager manager = Activator.getDefault().getAdapterManager();
- if (manager == null) return null;
+ if (manager == null)
+ return null;
return manager.loadAdapter(this, adapter.getName());
}
} \ No newline at end of file
diff --git a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
index 9ed9b7700..aae063726 100644
--- a/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf/META-INF/MANIFEST.MF
@@ -18,6 +18,7 @@ Export-Package: org.eclipse.ecf.core;version="3.0.0",
org.eclipse.ecf.core.status;version="1.1.0",
org.eclipse.ecf.core.user;version="3.1.0",
org.eclipse.ecf.core.util;version="3.2.0",
+ org.eclipse.ecf.core.util.reflection;version="2.3.0",
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;x-installation:=greedy,
diff --git a/framework/bundles/org.eclipse.ecf/javadoc.xml b/framework/bundles/org.eclipse.ecf/javadoc.xml
index 2ec298707..7b8548f10 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.7.0"
+ doctitle="Eclipse Communication Framework (ECF) 3.8.0"
nodeprecated="false"
nodeprecatedlist="false"
noindex="false"
diff --git a/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
new file mode 100644
index 000000000..128ade165
--- /dev/null
+++ b/framework/bundles/org.eclipse.ecf/src/org/eclipse/ecf/core/util/reflection/ClassUtil.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * 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.core.util.reflection;
+
+import java.lang.reflect.Method;
+import java.util.*;
+
+/**
+ * @since 3.3
+ */
+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)
+ * @param someParameterTypes Method arguments (May be null or parameters)
+ * @return A match. If more than one method matched (due to overloading) an arbitrary match is taken
+ * @throws NoSuchMethodException If a match cannot be found
+ */
+ public static Method getMethod(final Class aClass, String aMethodName, final Class[] someParameterTypes) throws NoSuchMethodException {
+ // no args makes matching simple
+ if (someParameterTypes == null || someParameterTypes.length == 0) {
+ return aClass.getMethod(aMethodName, (Class[]) null);
+ }
+ return getMethod(aClass.getMethods(), aMethodName, someParameterTypes);
+ }
+
+ /**
+ * @param aClass The Class providing method under question (Must not be null)
+ * @param aMethodName The method name to search for (Must not be null)
+ * @param someParameterTypes Method arguments (May be null or parameters)
+ * @return A match. If more than one method matched (due to overloading) an arbitrary match is taken
+ * @throws NoSuchMethodException If a match cannot be found
+ */
+ public static Method getDeclaredMethod(final Class aClass, String aMethodName, final Class[] someParameterTypes) throws NoSuchMethodException {
+ // no args makes matching simple
+ if (someParameterTypes == null || someParameterTypes.length == 0) {
+ return aClass.getDeclaredMethod(aMethodName, (Class[]) null);
+ }
+ return getMethod(aClass.getDeclaredMethods(), aMethodName, someParameterTypes);
+ }
+
+ private static Method getMethod(final Method[] candidates, String aMethodName, final Class[] someParameterTypes) throws NoSuchMethodException {
+ // match parameters to determine callee
+ 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++) {
+ 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++) {
+ final Class clazzA = candidateParameterTypes[j];
+ final Class clazzB = someParameterTypes[j];
+ if (clazzB != null && !isAssignableFrom(clazzA, clazzB)) {
+ continue OUTER;
+ }
+ }
+ matches.add(candidate);
+ }
+ }
+
+ // if no match has been found, fail with NSME
+ 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/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 6e41c806f..078398fdb 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
@@ -19,4 +19,4 @@ Import-Package: org.eclipse.ecf.core;version="3.0.0",
org.osgi.service.remoteserviceadmin;version="1.0",
org.osgi.util.tracker
Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
diff --git a/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF b/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF
index 7ba8ad892..49d965131 100644
--- a/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF
+++ b/incubation/bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF
@@ -7,5 +7,5 @@ Bundle-Vendor: %plugin.provider
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.200"
+Require-Bundle: org.eclipse.equinox.common
Bundle-ClassPath: .
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
index 46e42a4d5..af0491cdf 100644
--- 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
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: ECF Remote Service Admin Proxy
+Bundle-Name: ECF RemoteServiceAdmin Proxy
Bundle-SymbolicName: org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 89aa37537..51e465027 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -9,7 +9,7 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Localization: bundle
Export-Package: org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;x-internal:=true,
org.eclipse.ecf.osgi.services.remoteserviceadmin;version="1.0.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0",
+Require-Bundle: org.eclipse.equinox.common,
org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy;bundle-version="1.0.0"
Import-Package: javax.xml.parsers,
org.eclipse.ecf.core;version="3.0.0",
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/bundle.properties
index 390af021a..51410bb0e 100644
--- a/osgi/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 Remote Service Admin
+bundle.name=ECF RemoteServiceAdmin Implementation
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/PropertiesUtil.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
index 486c30c34..0496a9619 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
@@ -59,7 +59,9 @@ public class PropertiesUtil {
RemoteConstants.DISCOVERY_SCOPE,
RemoteConstants.DISCOVERY_SERVICE_NAME,
RemoteConstants.ENDPOINT_CONNECTTARGET_ID,
+ RemoteConstants.ENDPOINT_ID,
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
+ RemoteConstants.ENDPOINT_TIMESTAMP,
RemoteConstants.ENDPOINT_IDFILTER_IDS,
RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,
@@ -117,15 +119,11 @@ public class PropertiesUtil {
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);
+ public static String[] getMatchingInterfaces(String[] origin, Object propValue) {
+ if (propValue == null || origin == null) return null;
boolean wildcard = propValue.equals("*"); //$NON-NLS-1$
if (wildcard)
- return objectClass;
+ return origin;
else {
final String[] stringArrayValue = getStringArrayFromPropertyValue(propValue);
if (stringArrayValue == null)
@@ -133,11 +131,20 @@ public class PropertiesUtil {
else if (stringArrayValue.length == 1
&& stringArrayValue[0].equals("*")) { //$NON-NLS-1$
// this will support the idiom: new String[] { "*" }
- return objectClass;
+ return origin;
} else
return stringArrayValue;
}
}
+
+ private static String[] getExportedInterfaces(
+ ServiceReference serviceReference, Object propValue) {
+ if (propValue == null)
+ return null;
+ String[] objectClass = (String[]) serviceReference
+ .getProperty(org.osgi.framework.Constants.OBJECTCLASS);
+ return getMatchingInterfaces(objectClass,propValue);
+ }
public static String[] getExportedInterfaces(
ServiceReference serviceReference) {
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
index 90c19e61a..f0162985b 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
@@ -187,19 +187,36 @@ public abstract class AbstractMetadataFactory {
endpointDescriptionProperties);
// remote service id
- Long remoteServiceId = decodeLong(discoveredServiceProperties,
- org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
- endpointDescriptionProperties.put(
- org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
- remoteServiceId);
String containerIDNamespace = decodeString(discoveredServiceProperties,
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
if (containerIDNamespace != null) {
+ // remote service id
+ Long remoteServiceId = decodeLong(discoveredServiceProperties,
+ org.eclipse.ecf.remoteservice.Constants.SERVICE_ID);
+ if (remoteServiceId != null)
+ endpointDescriptionProperties.put(
+ org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
+ remoteServiceId);
+
// container id namespace
endpointDescriptionProperties.put(
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
containerIDNamespace);
+ // ecf endpoint id
+ String ecfEndpointId = decodeString(discoveredServiceProperties,
+ RemoteConstants.ENDPOINT_ID);
+ if (ecfEndpointId != null)
+ endpointDescriptionProperties.put(RemoteConstants.ENDPOINT_ID,
+ ecfEndpointId);
+
+ // timestamp
+ Long timestamp = decodeLong(discoveredServiceProperties,
+ RemoteConstants.ENDPOINT_TIMESTAMP);
+ if (timestamp != null)
+ endpointDescriptionProperties.put(
+ RemoteConstants.ENDPOINT_TIMESTAMP, timestamp);
+
// connect target ID
String connectTargetIDName = decodeString(
discoveredServiceProperties,
@@ -229,6 +246,15 @@ public abstract class AbstractMetadataFactory {
RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
remoteServiceFilter);
+ List<String> asyncInterfaces = decodeList(
+ discoveredServiceProperties,
+ RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES);
+ if (asyncInterfaces != null && asyncInterfaces.size() > 0)
+ endpointDescriptionProperties.put(
+ RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES,
+ asyncInterfaces.toArray(new String[asyncInterfaces
+ .size()]));
+
}
// Finally, fill out other properties
decodeNonStandardServiceProperties(discoveredServiceProperties,
@@ -353,6 +379,11 @@ public abstract class AbstractMetadataFactory {
org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
rsId);
+ String ecfEndpointId = (String) ecfEd.getProperties().get(
+ RemoteConstants.ENDPOINT_ID);
+ if (ecfEndpointId != null)
+ encodeString(result, RemoteConstants.ENDPOINT_ID, ecfEndpointId);
+
// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE
String containerIDNamespace = ecfEd.getIdNamespace();
if (containerIDNamespace != null)
@@ -360,6 +391,12 @@ public abstract class AbstractMetadataFactory {
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
containerIDNamespace);
+ Long timestamp = (Long) ecfEd.getProperties().get(
+ RemoteConstants.ENDPOINT_TIMESTAMP);
+ if (timestamp != null)
+ encodeLong(result, RemoteConstants.ENDPOINT_TIMESTAMP,
+ timestamp);
+
// org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONNECTTARGET_ID
ID connectTargetID = ecfEd.getConnectTargetID();
if (connectTargetID != null)
@@ -382,6 +419,10 @@ public abstract class AbstractMetadataFactory {
encodeString(result,
RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
remoteFilter);
+
+ List<String> asyncTypes = ecfEd.getAsyncInterfaces();
+ if (asyncTypes != null && asyncTypes.size() > 0)
+ encodeList(result, RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES, asyncTypes);
}
// encode non standard properties
encodeNonStandardServiceProperties(endpointDescription.getProperties(),
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
index efca0b0d5..9dc0c45d7 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
@@ -10,6 +10,7 @@
package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -17,8 +18,12 @@ 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.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.Constants;
+import org.eclipse.ecf.remoteservice.IAsyncRemoteServiceProxy;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.Version;
@@ -43,8 +48,13 @@ import org.osgi.framework.Version;
public class EndpointDescription extends
org.osgi.service.remoteserviceadmin.EndpointDescription {
+ private String ecfid;
+ private Long timestamp;
private String idNamespace;
private ID containerID;
+ private Long rsId;
+ private List<String> asyncInterfaces;
+
private ID connectTargetID;
private ID[] idFilter;
private String rsFilter;
@@ -92,11 +102,72 @@ public class EndpointDescription extends
}
private void verifyECFProperties() {
+ this.ecfid = verifyStringProperty(RemoteConstants.ENDPOINT_ID);
+ if (this.ecfid == null) {
+ LogUtility
+ .logWarning(
+ "verifyECFProperties", DebugOptions.ENDPOINT_DESCRIPTION_READER, EndpointDescription.class, "ECFEndpointDescription property " + RemoteConstants.ENDPOINT_ID + " not set. Using OSGI endpoint.id value"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ this.ecfid = getId();
+ }
+ this.timestamp = verifyLongProperty(RemoteConstants.ENDPOINT_TIMESTAMP);
+ if (this.timestamp == null) {
+ LogUtility
+ .logWarning(
+ "verifyECFProperties", DebugOptions.ENDPOINT_DESCRIPTION_READER, EndpointDescription.class, "ECFEndpointDescription property " + RemoteConstants.ENDPOINT_TIMESTAMP + " not set. Using OSGI endpoint.service.id"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ this.timestamp = getServiceId();
+ }
this.idNamespace = verifyStringProperty(RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
- this.containerID = verifyIDProperty(idNamespace, getId());
+ this.containerID = verifyIDProperty(idNamespace, this.ecfid);
+ this.rsId = verifyLongProperty(Constants.SERVICE_ID);
+ // if null, then set to service.id
+ if (this.rsId == null)
+ this.rsId = getServiceId();
+
this.connectTargetID = verifyIDProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
this.idFilter = verifyIDFilter();
this.rsFilter = verifyStringProperty(RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER);
+
+ this.asyncInterfaces = verifyAsyncInterfaces();
+ }
+
+ private List<String> verifyAsyncInterfaces() {
+ // Check to see that async proxy has not been disabled
+ List<String> resultInterfaces = new ArrayList<String>();
+ Object noAsyncProxy = getProperties().get(Constants.SERVICE_PREVENT_ASYNCPROXY);
+ if (noAsyncProxy == null) {
+ // Get service.exported.async.objectClass property value
+ Object asyncObjectClass = getProperties().get(
+ RemoteConstants.SERVICE_EXPORTED_ASYNC_INTERFACES);
+ // If present
+ if (asyncObjectClass != null) {
+ List<String> originalInterfaces = getInterfaces();
+ String[] matchingInterfaces = PropertiesUtil
+ .getMatchingInterfaces(
+ originalInterfaces
+ .toArray(new String[originalInterfaces
+ .size()]), asyncObjectClass);
+ if (matchingInterfaces != null)
+ for (int i = 0; i < matchingInterfaces.length; i++) {
+ String asyncInterface = convertInterfaceToAsync(matchingInterfaces[i]);
+ if (asyncInterface != null
+ && !resultInterfaces.contains(asyncInterface))
+ resultInterfaces.add(asyncInterface);
+ }
+ }
+ }
+ return Collections.unmodifiableList(resultInterfaces);
+ }
+
+ private Long verifyLongProperty(String propName) {
+ Object r = getProperties().get(propName);
+ try {
+ return (Long) r;
+ } catch (ClassCastException e) {
+ IllegalArgumentException iae = new IllegalArgumentException(
+ "property value is not a Long: " + propName); //$NON-NLS-1$
+ iae.initCause(e);
+ throw iae;
+ }
}
private String verifyStringProperty(String propName) {
@@ -146,6 +217,15 @@ public class EndpointDescription extends
return (ID[]) results.toArray(new ID[results.size()]);
}
+ private void addInterfaceVersions(List<String> interfaces, Map<String,Version> result) {
+ if (interfaces == null) return;
+ for (String intf : interfaces) {
+ int index = intf.lastIndexOf('.');
+ if (index == -1) continue;
+ String packageName = intf.substring(0, index);
+ result.put(intf, getPackageVersion(packageName));
+ }
+ }
/**
* Get a map of the service interface name -> Version information for all
* the service interfaces exposed by this endpoint description (i.e. those
@@ -157,19 +237,33 @@ public class EndpointDescription extends
* 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));
- }
+ addInterfaceVersions(getInterfaces(),result);
+ addInterfaceVersions(getAsyncInterfaces(),result);
return result;
}
+ /**
+ * @since 4.0
+ */
+ public String getEndpointId() {
+ return ecfid;
+ }
+
+ /**
+ * @since 4.0
+ */
+ public Long getTimestamp() {
+ return this.timestamp;
+ }
+
+ /**
+ * @since 4.0
+ */
+ public Long getRemoteServiceId() {
+ return this.rsId;
+ }
+
public ID getContainerID() {
return containerID;
}
@@ -225,11 +319,27 @@ public class EndpointDescription extends
return super.getProperties();
}
+ private String convertInterfaceToAsync(String interfaceName) {
+ if (interfaceName == null)
+ return null;
+ String asyncProxyName = (String) getProperties().get(Constants.SERVICE_ASYNC_RSPROXY_CLASS_ + interfaceName);
+ if (asyncProxyName != null)
+ return asyncProxyName;
+ if (interfaceName.endsWith(IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX))
+ return interfaceName;
+ return interfaceName + IAsyncRemoteServiceProxy.ASYNC_INTERFACE_SUFFIX;
+ }
+
+ /**
+ * @since 4.0
+ */
+ public List<String> getAsyncInterfaces() {
+ return asyncInterfaces;
+ }
+
public String toString() {
StringBuffer sb = new StringBuffer("ECFEndpointDescription["); //$NON-NLS-1$
- sb.append("id=").append(getId()); //$NON-NLS-1$
- sb.append(";endpoint.service.id=").append(getServiceId()); //$NON-NLS-1$
- sb.append(";frameworkid=").append(getFrameworkUUID()).append("]"); //$NON-NLS-1$//$NON-NLS-2$
+ sb.append(getProperties()).append("]"); //$NON-NLS-1$
return sb.toString();
}
}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
index 7c96a5df9..9383a9818 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescriptionLocator.java
@@ -971,5 +971,9 @@ public class EndpointDescriptionLocator {
}
discoveredEndpointDescriptions.clear();
}
+
+ public boolean triggerDiscovery() {
+ return false;
+ }
}
}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
index 10fe81c9b..314b86038 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
@@ -22,8 +22,11 @@ import org.eclipse.ecf.remoteservice.IRemoteService;
* {@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>.
+ *
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
*/
-public class RemoteConstants {
+public final class RemoteConstants {
private RemoteConstants() {
// not instantiable
@@ -81,9 +84,8 @@ public class RemoteConstants {
* <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
+ * 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
@@ -95,6 +97,18 @@ public class RemoteConstants {
*/
public static final String ENDPOINT_CONTAINER_ID_NAMESPACE = "ecf.endpoint.id.ns"; //$NON-NLS-1$
/**
+ * ECF {@link EndpointDescription} property (with value of type String)
+ * that defines the ecf endpoint id (typically the container id).
+ * @since 4.0
+ */
+ public static final String ENDPOINT_ID = "ecf.endpoint.id"; //$NON-NLS-1$
+ /**
+ * ECF {@link EndpointDescription} property (with value of type Long)
+ * that defines a service timestamp set upon initial export of the remote service.
+ * @since 4.0
+ */
+ public static final String ENDPOINT_TIMESTAMP = "ecf.endpoint.ts"; //$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
@@ -153,6 +167,34 @@ public class RemoteConstants {
public static final String SERVICE_EXPORTED_CONTAINER_ID = "ecf.exported.containerid"; //$NON-NLS-1$
/**
+ * Service property marking the service for async proxy export. It defines the
+ * async interfaces under which this service will be exported on the remote
+ * proxy. This list must be a
+ * subset of the types service was exported (i.e. subset of interfaces specified
+ * by #{@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES}. The single
+ * value of an asterisk (&quot;*&quot;, &#92;u002A) indicates all the
+ * interface types under which the service was exported.
+ * <p>
+ * The interfaces in the String[] can either be
+ * <ol>
+ * <li>The same fully qualified name as an interface
+ * in the #{@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES} property</li>
+ * <li>The fully qualified name of an interface that follows the asynchronous proxy conventions to
+ * match with one of the existing exported types.
+ * </li>
+ *
+ * <p>
+ * This property may be supplied in the {@code properties}
+ * {@code Dictionary} object passed to the
+ * {@code BundleContext.registerService} method. The value of this property
+ * must be of type {@code String}, {@code String[]}, or {@code Collection}
+ * of {@code String}.
+ *
+ * @since 4.0
+ */
+ public static final String SERVICE_EXPORTED_ASYNC_INTERFACES = "ecf.exported.async.interfaces"; //$NON-NLS-1$
+
+ /**
* Allows exporting ECF containers to determine the type of value associated
* with the
* {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_IMPORTED}
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
index d93cc8abe..b61bb6759 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
@@ -768,6 +768,13 @@ public class RemoteServiceAdmin implements
class ImportEndpoint {
+ @SuppressWarnings("unused")
+ // XXX this will be used when ImportRegistration.update(EndpointDescription)
+ // is added in RSA 1.1/RFC 203
+ private ID importContainerID;
+ @SuppressWarnings("unused")
+ private IRemoteService rs;
+
private IRemoteServiceContainerAdapter rsContainerAdapter;
private EndpointDescription endpointDescription;
private IRemoteServiceListener rsListener;
@@ -775,14 +782,17 @@ public class RemoteServiceAdmin implements
private ServiceRegistration proxyRegistration;
private Set<ImportRegistration> activeImportRegistrations = new HashSet<ImportRegistration>();
- ImportEndpoint(IRemoteServiceContainerAdapter rsContainerAdapter,
+ ImportEndpoint(ID importContainerID, IRemoteServiceContainerAdapter rsContainerAdapter,
IRemoteServiceReference rsReference,
+ IRemoteService rs,
IRemoteServiceListener rsListener,
ServiceRegistration proxyRegistration,
EndpointDescription endpointDescription) {
+ this.importContainerID = importContainerID;
this.rsContainerAdapter = rsContainerAdapter;
this.endpointDescription = endpointDescription;
this.rsReference = rsReference;
+ this.rs = rs;
this.rsListener = rsListener;
this.proxyRegistration = proxyRegistration;
// Add the remoteservice listener to the container adapter, so that
@@ -829,6 +839,7 @@ public class RemoteServiceAdmin implements
.removeRemoteServiceListener(rsListener);
rsListener = null;
}
+ rs = null;
rsContainerAdapter = null;
}
endpointDescription = null;
@@ -1257,14 +1268,13 @@ public class RemoteServiceAdmin implements
});
}
- private ContainerTypeDescription getContainerTypeDescription(
- IContainer container) {
+ private ContainerTypeDescription getContainerTypeDescription(ID containerID) {
return Activator.getDefault().getContainerManager()
- .getContainerTypeDescription(container.getID());
+ .getContainerTypeDescription(containerID);
}
-
+
private boolean isClient(IContainer container) {
- ContainerTypeDescription ctd = getContainerTypeDescription(container);
+ ContainerTypeDescription ctd = getContainerTypeDescription(container.getID());
if (ctd == null)
return false;
else
@@ -1341,11 +1351,20 @@ public class RemoteServiceAdmin implements
overridingProperties,
org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);
if (endpointId == null)
- endpointId = containerID.getName();
+ endpointId = UUID.randomUUID().toString();
endpointDescriptionProperties
.put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
endpointId);
+ // ECF ENDPOINT ID
+ String ecfEndpointId = (String) PropertiesUtil.getPropertyValue(
+ serviceReference, overridingProperties,
+ RemoteConstants.ENDPOINT_ID);
+ if (ecfEndpointId == null)
+ ecfEndpointId = containerID.getName();
+ endpointDescriptionProperties.put(RemoteConstants.ENDPOINT_ID,
+ ecfEndpointId);
+
// ENDPOINT_SERVICE_ID
// This is always set to the value from serviceReference as per 122.5.1
Long serviceId = (Long) serviceReference
@@ -1366,7 +1385,7 @@ public class RemoteServiceAdmin implements
frameworkId);
// REMOTE_CONFIGS_SUPPORTED
- String[] remoteConfigsSupported = getSupportedConfigs(container);
+ String[] remoteConfigsSupported = getSupportedConfigs(container.getID());
if (remoteConfigsSupported != null)
endpointDescriptionProperties
.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,
@@ -1393,7 +1412,7 @@ public class RemoteServiceAdmin implements
intents);
// REMOTE_INTENTS_SUPPORTED
- String[] remoteIntentsSupported = getSupportedIntents(container);
+ String[] remoteIntentsSupported = getSupportedIntents(container.getID());
if (remoteIntentsSupported != null)
endpointDescriptionProperties
.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_INTENTS_SUPPORTED,
@@ -1404,7 +1423,10 @@ public class RemoteServiceAdmin implements
String idNamespace = containerID.getNamespace().getName();
endpointDescriptionProperties.put(
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE, idNamespace);
-
+
+ // timestamp
+ endpointDescriptionProperties.put(RemoteConstants.ENDPOINT_TIMESTAMP, System.currentTimeMillis());
+
// ENDPOINT_CONNECTTARGET_ID
String connectTarget = (String) PropertiesUtil.getPropertyValue(
serviceReference, overridingProperties,
@@ -1449,20 +1471,20 @@ public class RemoteServiceAdmin implements
return target;
}
- private String[] getSupportedConfigs(IContainer container) {
- ContainerTypeDescription ctd = getContainerTypeDescription(container);
+ private String[] getSupportedConfigs(ID containerID) {
+ ContainerTypeDescription ctd = getContainerTypeDescription(containerID);
return (ctd == null) ? null : ctd.getSupportedConfigs();
}
- private String[] getImportedConfigs(IContainer container,
+ private String[] getImportedConfigs(ID containerID,
String[] exporterSupportedConfigs) {
- ContainerTypeDescription ctd = getContainerTypeDescription(container);
+ ContainerTypeDescription ctd = getContainerTypeDescription(containerID);
return (ctd == null) ? null : ctd
.getImportedConfigs(exporterSupportedConfigs);
}
- private String[] getSupportedIntents(IContainer container) {
- ContainerTypeDescription ctd = getContainerTypeDescription(container);
+ private String[] getSupportedIntents(ID containerID) {
+ ContainerTypeDescription ctd = getContainerTypeDescription(containerID);
return (ctd == null) ? null : ctd.getSupportedIntents();
}
@@ -1479,8 +1501,7 @@ public class RemoteServiceAdmin implements
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);
+ Long l = endpointDescription.getRemoteServiceId();
if (l != null)
rsId = l.longValue();
// if rsId is still zero, use the endpoint.service.id from
@@ -1527,14 +1548,21 @@ public class RemoteServiceAdmin implements
+ selectedRsReference + ",rsContainerID=" //$NON-NLS-1$
+ rsContainerID);
- final Map proxyProperties = createProxyProperties(endpointDescription,
- rsContainer, selectedRsReference, rs);
+ final Map proxyProperties = createProxyProperties(rsContainerID, endpointDescription,
+ selectedRsReference, rs);
// sync sref props with endpoint props
endpointDescription.setPropertiesOverrides(proxyProperties);
- final List<String> serviceTypes = endpointDescription.getInterfaces();
-
+ final List<String> originalTypes = endpointDescription.getInterfaces();
+ final List<String> asyncServiceTypes = endpointDescription.getAsyncInterfaces();
+
+ final List<String> serviceTypes = new ArrayList<String>(originalTypes);
+
+ if (asyncServiceTypes != null)
+ for(String ast: asyncServiceTypes)
+ if (ast != null && !serviceTypes.contains(ast)) serviceTypes.add(ast);
+
ServiceRegistration proxyRegistration = AccessController
.doPrivileged(new PrivilegedAction<ServiceRegistration>() {
public ServiceRegistration run() {
@@ -1548,7 +1576,7 @@ public class RemoteServiceAdmin implements
}
});
- return new ImportEndpoint(containerAdapter, selectedRsReference,
+ return new ImportEndpoint(rsContainerID, containerAdapter, selectedRsReference, rs,
new RemoteServiceListener(), proxyRegistration,
endpointDescription);
}
@@ -1925,8 +1953,7 @@ public class RemoteServiceAdmin implements
return rsRefs.iterator().next();
}
- private Map createProxyProperties(EndpointDescription endpointDescription,
- IRemoteServiceContainer rsContainer,
+ private Map createProxyProperties(ID importContainerID, EndpointDescription endpointDescription,
IRemoteServiceReference rsReference, IRemoteService remoteService) {
Map resultProperties = new TreeMap<String, Object>(
@@ -1967,8 +1994,7 @@ public class RemoteServiceAdmin implements
String[] exporterSupportedConfigs = (String[]) endpointDescription
.getProperties()
.get(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED);
- String[] importedConfigs = getImportedConfigs(
- rsContainer.getContainer(), exporterSupportedConfigs);
+ String[] importedConfigs = getImportedConfigs(importContainerID, exporterSupportedConfigs);
// Set service.imported.configs
resultProperties
.put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
@@ -2021,23 +2047,22 @@ public class RemoteServiceAdmin implements
exportedInterfaces, service, PropertiesUtil
.createDictionaryFromMap(remoteServiceProperties));
}
- endpointDescriptionProperties
- .put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
- remoteRegistration
- .getProperty(org.eclipse.ecf.remoteservice.Constants.SERVICE_ID));
+
+ endpointDescriptionProperties.put(
+ org.eclipse.ecf.remoteservice.Constants.SERVICE_ID,
+ remoteRegistration.getID().getContainerRelativeID());
if (remoteRegistration instanceof IExtendedRemoteServiceRegistration) {
IExtendedRemoteServiceRegistration iersr = (IExtendedRemoteServiceRegistration) remoteRegistration;
Map<String, Object> extraProperties = iersr.getExtraProperties();
- endpointDescriptionProperties = PropertiesUtil.mergeProperties(endpointDescriptionProperties, extraProperties);
-
+ if (extraProperties != null)
+ endpointDescriptionProperties = PropertiesUtil.mergeProperties(endpointDescriptionProperties, extraProperties);
}
- EndpointDescription endpointDescription = new EndpointDescription(
- serviceReference, endpointDescriptionProperties);
// Create ExportEndpoint/ExportRegistration
return new ExportRegistration(new ExportEndpoint(serviceReference,
- endpointDescription, remoteRegistration));
+ new EndpointDescription(serviceReference,
+ endpointDescriptionProperties), remoteRegistration));
}
private ImportRegistration importService(
diff --git a/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties b/osgi/bundles/org.eclipse.osgi.services.remoteserviceadmin/bundle.properties
index 0fbbb6482..55e788211 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 5.0 Remote Service Admin
+bundle.name=OSGi R5 RemoteServiceAdmin API
bundle.provider=Eclipse.org - ECF
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/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties
index d42b4d795..4f9564d3c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties
@@ -9,5 +9,5 @@
# Remy Chi Jian Suen <remy.suen@gmail.com> - initial API and implementation
################################################################################
-plugin.name = ECF NIO Datashare Implementation
+plugin.name = ECF DataShare NIO Provider
plugin.provider = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties
index 64b776234..6763b5f10 100644
--- a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties
@@ -6,6 +6,6 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-plugin.name=ECF Datashare Provider
+plugin.name=ECF Generic Provider DataShare Support
plugin.provider=Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF
index 89c849e83..84d8b55a8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.discovery;singleton:=true
-Bundle-Version: 2.1.200.qualifier
+Bundle-Version: 2.2.0.qualifier
Bundle-Vendor: %pluginProvider
Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0",
org.osgi.framework,
diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeDiscoveryContainer.java b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeDiscoveryContainer.java
index 1c3cc6639..43b167207 100644
--- a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeDiscoveryContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeDiscoveryContainer.java
@@ -10,6 +10,7 @@
******************************************************************************/
package org.eclipse.ecf.provider.discovery;
+import java.net.URI;
import java.util.*;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ecf.core.ContainerConnectException;
@@ -70,6 +71,13 @@ public class CompositeDiscoveryContainer extends AbstractDiscoveryContainerAdapt
"serviceRemoved fired without any listeners present"); //$NON-NLS-1$
}
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.discovery.IServiceListener#triggerDiscovery()
+ */
+ public boolean triggerDiscovery() {
+ return false;
+ }
}
protected class CompositeContainerServiceTypeListener implements IServiceTypeListener {
@@ -193,6 +201,57 @@ public class CompositeDiscoveryContainer extends AbstractDiscoveryContainerAdapt
fireContainerEvent(new ContainerDisconnectedEvent(this.getID(), getConnectedID()));
}
+ public static class CompositeServiceInfoWrapper implements IServiceInfo {
+ private final IServiceInfo anInfo;
+ private final ID anId;
+
+ public CompositeServiceInfoWrapper(IServiceInfo anInfo, ID anId) {
+ this.anInfo = anInfo;
+ this.anId = anId;
+ }
+
+ public ID getId() {
+ return anId;
+ }
+
+ public URI getLocation() {
+ return anInfo.getLocation();
+ }
+
+ public IServiceID getServiceID() {
+ return anInfo.getServiceID();
+ }
+
+ public int getPriority() {
+ return anInfo.getPriority();
+ }
+
+ public Object getAdapter(Class adapter) {
+ return anInfo.getAdapter(adapter);
+ }
+
+ public int getWeight() {
+ return anInfo.getWeight();
+ }
+
+ public long getTTL() {
+ return anInfo.getTTL();
+ }
+
+ public IServiceProperties getServiceProperties() {
+ return anInfo.getServiceProperties();
+ }
+
+ public String getServiceName() {
+ return anInfo.getServiceName();
+ }
+ }
+
+ protected IServiceEvent getServiceEvent(IServiceInfo iServiceInfo, ID id) {
+ final CompositeServiceInfoWrapper csi = (CompositeServiceInfoWrapper) iServiceInfo;
+ return new CompositeServiceContainerEvent(iServiceInfo, id, csi.getId());
+ }
+
/* (non-Javadoc)
* @see org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter#dispose()
*/
@@ -257,7 +316,12 @@ public class CompositeDiscoveryContainer extends AbstractDiscoveryContainerAdapt
synchronized (containers) {
for (final Iterator itr = containers.iterator(); itr.hasNext();) {
final IDiscoveryLocator idca = (IDiscoveryLocator) itr.next();
+ final ID containerId = ((IContainer) idca).getID();
final IServiceInfo[] services = idca.getServices();
+ for (int i = 0; i < services.length; i++) {
+ IServiceInfo iServiceInfo = services[i];
+ services[i] = new CompositeServiceInfoWrapper(iServiceInfo, containerId);
+ }
set.addAll(Arrays.asList(services));
}
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeServiceContainerEvent.java b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeServiceContainerEvent.java
index 43512cd52..74f60b360 100644
--- a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeServiceContainerEvent.java
+++ b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/provider/discovery/CompositeServiceContainerEvent.java
@@ -10,6 +10,8 @@
******************************************************************************/
package org.eclipse.ecf.provider.discovery;
+import org.eclipse.ecf.discovery.IServiceInfo;
+
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.discovery.IServiceEvent;
import org.eclipse.ecf.discovery.ServiceContainerEvent;
@@ -19,8 +21,12 @@ public class CompositeServiceContainerEvent extends ServiceContainerEvent implem
private final ID origId;
public CompositeServiceContainerEvent(final IServiceEvent event, final ID connectedId) {
- super(event.getServiceInfo(), connectedId);
- origId = event.getLocalContainerID();
+ this(event.getServiceInfo(), connectedId, event.getLocalContainerID());
+ }
+
+ public CompositeServiceContainerEvent(final IServiceInfo info, final ID connectedId, final ID origId) {
+ super(info, connectedId);
+ this.origId = origId;
}
/**
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 e3ee241ed..f5b132cb8 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
@@ -1,10 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: ECF Discovery Provider based on DNS-SD
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.dnssd;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
Bundle-Activator: org.eclipse.ecf.provider.dnssd.Activator
-Bundle-Vendor: Eclipse.org - ECF
+Bundle-Vendor: %pluginProvider
Bundle-RequiredExecutionEnvironment: J2SE-1.4
Import-Package: org.eclipse.ecf.core;version="3.0.0",
org.eclipse.ecf.core.events,
@@ -22,5 +22,5 @@ Import-Package: org.eclipse.ecf.core;version="3.0.0",
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.ecf.provider.dnssd;version="1.0.0"
Require-Bundle: org.xbill.dns;bundle-version="2.0.8",
- org.eclipse.equinox.common;bundle-version="3.5.0"
+ org.eclipse.equinox.common
Bundle-Localization: plugin
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 7120b3e08..f2b2c872e 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 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer.httpclient;singleton:=true
-Bundle-Version: 4.0.300.qualifier
+Bundle-Version: 4.0.400.qualifier
Bundle-Localization: plugin
Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient.Activator
Require-Bundle: org.eclipse.equinox.common,
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java
index 39d8f5aca..407e17651 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/ConnectingSocketMonitor.java
@@ -11,8 +11,19 @@
package org.eclipse.ecf.internal.provider.filetransfer.httpclient;
-import java.util.*;
-import org.eclipse.ecf.filetransfer.events.socket.*;
+import java.io.IOException;
+import java.net.Socket;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketClosedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketConnectedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketCreatedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;
public class ConnectingSocketMonitor implements ISocketListener {
@@ -26,6 +37,16 @@ public class ConnectingSocketMonitor implements ISocketListener {
connectingSockets = Collections.synchronizedMap(new HashMap());
}
+ /**
+ * Callers of this method should not iterate through the returned
+ * Collection, as a CME is possible...as reported by bug
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+ * Rather than call this method and iterate through the Collection,
+ * to close the connecting sockets call closeConnectingSockets
+ * instead.
+ * @return Collection the existing collection of underlying connecting
+ * Socket instances
+ */
public Collection getConnectingSockets() {
return Collections.unmodifiableCollection(connectingSockets.keySet());
}
@@ -34,6 +55,28 @@ public class ConnectingSocketMonitor implements ISocketListener {
connectingSockets.clear();
}
+ /**
+ * Method added to synchronize access to underlying keySet
+ * to prevent CME as reported in bug
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+ */
+ public void closeSockets() {
+ // synchronize on the connectingSockets map
+ // so all changes caused by handleSocketEvent
+ // are prevented via synchronized Map
+ synchronized (connectingSockets) {
+ for (Iterator iterator = connectingSockets.keySet().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$
+ }
+ }
+ }
+ }
+
public void handleSocketEvent(ISocketEvent event) {
if (event instanceof ISocketCreatedEvent) {
connectingSockets.put(event.getFactorySocket(), event);
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 daa428875..330cff684 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
@@ -15,9 +15,7 @@ package org.eclipse.ecf.provider.filetransfer.httpclient;
import java.io.IOException;
import java.net.HttpURLConnection;
-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;
@@ -144,15 +142,7 @@ public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser {
}
}
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$
- }
- }
+ connectingSockets.closeSockets();
}
}
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 a58b6cb50..40a514e8e 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
@@ -17,7 +17,6 @@ import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
-import java.net.Socket;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -370,16 +369,7 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
}
}
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$
- }
- }
+ connectingSockets.closeSockets();
}
hardClose();
if (fireDoneEvent) {
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
index 753e8c6c6..e66e4d225 100644
--- 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
@@ -2,7 +2,7 @@ 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.300.qualifier
+Bundle-Version: 1.0.400.qualifier
Bundle-Localization: plugin
Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.httpclient4.Activator
Require-Bundle: org.eclipse.equinox.common,
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
index 9aae0dc5e..a95d76d8d 100644
--- 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
@@ -11,8 +11,19 @@
package org.eclipse.ecf.internal.provider.filetransfer.httpclient4;
-import java.util.*;
-import org.eclipse.ecf.filetransfer.events.socket.*;
+import java.io.IOException;
+import java.net.Socket;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.ecf.core.util.Trace;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketClosedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketConnectedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketCreatedEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketEvent;
+import org.eclipse.ecf.filetransfer.events.socket.ISocketListener;
public class ConnectingSocketMonitor implements ISocketListener {
@@ -26,6 +37,16 @@ public class ConnectingSocketMonitor implements ISocketListener {
connectingSockets = Collections.synchronizedMap(new HashMap());
}
+ /**
+ * Callers of this method should not iterate through the returned
+ * Collection, as a CME is possible...as reported by bug
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+ * Rather than call this method and iterate through the Collection,
+ * to close the connecting sockets call closeConnectingSockets
+ * instead.
+ * @return Collection the existing collection of underlying connecting
+ * Socket instances
+ */
public Collection getConnectingSockets() {
return Collections.unmodifiableCollection(connectingSockets.keySet());
}
@@ -34,6 +55,28 @@ public class ConnectingSocketMonitor implements ISocketListener {
connectingSockets.clear();
}
+ /**
+ * Method added to synchronize access to underlying keySet
+ * to prevent CME as reported in bug
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+ */
+ public void closeSockets() {
+ // synchronize on the connectingSockets map
+ // so all changes caused by handleSocketEvent
+ // are prevented via synchronized Map
+ synchronized (connectingSockets) {
+ for (Iterator iterator = connectingSockets.keySet().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$
+ }
+ }
+ }
+ }
+
public void handleSocketEvent(ISocketEvent event) {
if (event instanceof ISocketCreatedEvent) {
connectingSockets.put(event.getFactorySocket(), event);
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
index 1a668b885..af9fec4c0 100644
--- 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
@@ -13,18 +13,10 @@
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;
@@ -57,6 +49,11 @@ 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.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 org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser;
import org.eclipse.ecf.provider.filetransfer.browse.URLRemoteFile;
import org.eclipse.ecf.provider.filetransfer.events.socket.SocketEventSource;
@@ -191,17 +188,10 @@ public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser {
}
}
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$
- }
- }
+ // Change for preventing CME from bug
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+ connectingSockets.closeSockets();
}
-
}
protected boolean hasForceNTLMProxyOption() {
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
index 0c14292ff..c14fc6ef3 100644
--- 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
@@ -18,7 +18,6 @@ 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;
@@ -246,16 +245,8 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer
}
}
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$
- }
- }
+ // Added to prevent CME in bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704
+ connectingSockets.closeSockets();
}
hardClose();
if (fireDoneEvent) {
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 2114e9755..ba3556cf0 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 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.provider.irc; singleton:=true
-Bundle-Version: 1.3.100.qualifier
+Bundle-Version: 1.3.200.qualifier
Bundle-Activator: org.eclipse.ecf.internal.provider.irc.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java
index 6b741e86d..d99aa45be 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
@@ -242,6 +242,8 @@ public class IRCRootContainer extends IRCAbstractContainer implements
public void onDisconnected() {
trace("handleOnDisconnected()"); //$NON-NLS-1$
+ fireContainerEvent(new ContainerDisconnectingEvent(getID(),
+ targetID));
synchronized (connectLock) {
if (connectWaiting) {
if (connectException == null)
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 a19bc770f..c08179f25 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
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.jmdns;singleton:=true
-Bundle-Version: 4.1.0.qualifier
+Bundle-Version: 4.2.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.provider.jmdns.JMDNSPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties
index ebfe16aad..e555365a1 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties
@@ -6,5 +6,5 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-pluginName = ECF Zeroconf/JMDNS Discovery Provider
+pluginName = ECF Discovery Zeroconf/JMDNS Provider
providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
index bc7586be5..2d62d7871 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.jslp;singleton:=true
-Bundle-Version: 3.0.100.qualifier
+Bundle-Version: 3.1.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.provider.jslp.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
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 a0ee97a75..060762c01 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 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: ECF Local Remote Service Provider
Bundle-SymbolicName: org.eclipse.ecf.provider.local;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.2.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.provider.local.Activator
Bundle-Vendor: Eclipse.org - ECF
Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
@@ -23,4 +23,4 @@ Bundle-Localization: bundle
Export-Package: org.eclipse.ecf.internal.provider.local;x-internal:=true,
org.eclipse.ecf.internal.provider.local.container;x-internal:=true,
org.eclipse.ecf.provider.local.identity;version="1.1.0"
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0"
+Require-Bundle: org.eclipse.equinox.common
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 f2dca6cb8..2b40780f9 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 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.eclipse.ecf.provider.r_osgi;singleton:=true
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.3.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/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties
index 3cefe1983..f93beaab3 100644
--- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties
@@ -9,5 +9,5 @@
# Jan S. Rellermeyer - initial API and implementation
############################################################################
-plugin.name=ECF R-OSGi Remoteservice Provider
+plugin.name=ECF RemoteServices r-OSGi Provider
plugin.provider=Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath
@@ -0,0 +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/JavaSE-1.8"/>
+ <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.remoteservice.java8/.gitignore b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore
new file mode 100644
index 000000000..e660fd93d
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore
@@ -0,0 +1 @@
+bin/
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project
new file mode 100644
index 000000000..7fed21f82
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.ecf.provider.remoteservice.java8</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/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 000000000..706f07e8a
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..5dfaaed49
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.ecf.provider.remoteservice.java8;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %pluginProvider
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.ecf;bundle-version="3.3.0",
+ org.eclipse.ecf.provider;bundle-version="4.4.0",
+ org.eclipse.ecf.provider.remoteservice;bundle-version="4.1.0",
+ org.eclipse.ecf.sharedobject;bundle-version="2.4.0",
+ org.eclipse.equinox.common;bundle-version="3.6.200",
+ org.eclipse.ecf.remoteservice;bundle-version="8.3.0"
+Import-Package: org.eclipse.equinox.concurrent.future;version="1.1.0",
+ org.osgi.framework;version="1.8.0"
+Bundle-Localization: plugin
+
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html
index 4c79781a5..4c79781a5 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/sourceTemplateFeature/about.html
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties
new file mode 100644
index 000000000..7b3c227b8
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties
new file mode 100644
index 000000000..b5ccef319
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties
@@ -0,0 +1,10 @@
+############################################################################
+# Copyright (c) 2014 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
+#
+############################################################################
+pluginName = ECF Generic Provider RemoteServices Java8 Support
+providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml
new file mode 100644
index 000000000..a8e6731fb
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ecf.containerFactory">
+ <containerFactory
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8GenericContainerInstantiator"
+ description="ECF Java8 Generic Server"
+ hidden="false"
+ name="ecf.generic.server.java8"
+ server="true">
+ </containerFactory>
+ </extension>
+ <extension
+ point="org.eclipse.ecf.containerFactory">
+ <containerFactory
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8GenericContainerInstantiator"
+ description="ECF Java8 Generic Client"
+ hidden="true"
+ name="ecf.generic.client.java8">
+ </containerFactory>
+ </extension>
+ <extension
+ point="org.eclipse.ecf.containerFactory">
+ <containerFactory
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLGenericContainerInstantiator"
+ description="ECF Java8 Generic SSL Server"
+ hidden="false"
+ name="ecf.generic.ssl.server.java8"
+ server="true">
+ </containerFactory>
+ </extension>
+ <extension
+ point="org.eclipse.ecf.containerFactory">
+ <containerFactory
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLGenericContainerInstantiator"
+ description="ECF Java8 Generic SSL Client"
+ hidden="true"
+ name="ecf.generic.ssl.client.java8">
+ </containerFactory>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8TCPClientSOContainer"
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+ <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+ </factory>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8TCPServerSOContainer"
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+ <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+ </factory>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLClientSOContainer"
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+ <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+ </factory>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+ <factory
+ adaptableType="org.eclipse.ecf.provider.internal.remoteservice.java8.J8SSLServerSOContainer"
+ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory">
+ <adapter type="org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter"/>
+ </factory>
+ </extension>
+
+</plugin>
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java
new file mode 100644
index 000000000..c5644795a
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.provider.generic.GenericContainerInstantiator;
+import org.eclipse.ecf.provider.generic.SOContainerConfig;
+
+public class J8GenericContainerInstantiator extends
+ GenericContainerInstantiator {
+
+ public static final String JAVA8_CLIENT_NAME = "ecf.generic.client.java8";
+ public static final String JAVA8_SERVER_NAME = "ecf.generic.server.java8";
+
+ @Override
+ protected boolean isClient(ContainerTypeDescription description) {
+ if (description.getName().equals(JAVA8_SERVER_NAME))
+ return false;
+ return true;
+ }
+
+ @Override
+ protected IContainer createClientContainer(GenericContainerArgs gcargs)
+ throws Exception {
+ return new J8TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+ }
+
+ @Override
+ protected IContainer createServerContainer(GenericContainerArgs gcargs)
+ throws Exception {
+ return new J8TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) {
+ if (exporterSupportedConfigs == null)
+ return null;
+ List results = new ArrayList();
+ List supportedConfigs = Arrays.asList(exporterSupportedConfigs);
+ // For a server, if exporter is a client then we can be an importer
+ if (JAVA8_SERVER_NAME.equals(description.getName())) {
+ if (supportedConfigs.contains(JAVA8_CLIENT_NAME))
+ results.add(JAVA8_SERVER_NAME);
+ // For a client, if exporter is server we can import
+ // or if remote is either generic server or generic client
+ } else if (JAVA8_CLIENT_NAME.equals(description.getName())) {
+ if (supportedConfigs.contains(JAVA8_SERVER_NAME) || supportedConfigs.contains(JAVA8_CLIENT_NAME))
+ results.add(JAVA8_CLIENT_NAME);
+ }
+ if (results.size() == 0)
+ return null;
+ return (String[]) results.toArray(new String[] {});
+ }
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java
new file mode 100644
index 000000000..9a91c810d
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.sharedobject.*;
+import org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject;
+import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory;
+import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceImpl;
+import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceRegistrationImpl;
+import org.eclipse.ecf.remoteservice.IRemoteCall;
+import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
+import org.eclipse.ecf.remoteservice.events.IRemoteCallCompleteEvent;
+import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent;
+
+public class J8RemoteServiceContainerAdapterFactory extends RemoteServiceContainerAdapterFactory {
+
+ protected ISharedObject createAdapter(ISharedObjectContainer container, @SuppressWarnings("rawtypes") Class adapterType, ID adapterID) {
+ if (adapterType.equals(IRemoteServiceContainerAdapter.class)) {
+ return new RegistrySharedObject() {
+ @Override
+ protected RemoteServiceImpl createRemoteService(
+ RemoteServiceRegistrationImpl registration) {
+ return new RemoteServiceImpl(this,registration) {
+ @SuppressWarnings("unchecked")
+ @Override
+ protected Object callFuture(IRemoteCall call, @SuppressWarnings("rawtypes") Class returnType) {
+ if (CompletableFuture.class.isAssignableFrom(returnType)) {
+ @SuppressWarnings("rawtypes")
+ CompletableFuture result = new CompletableFuture();
+ callAsyncWithResult(call, (IRemoteCallEvent e) -> {
+ if (e instanceof IRemoteCallCompleteEvent) {
+ IRemoteCallCompleteEvent cce = (IRemoteCallCompleteEvent) e;
+ if (cce.hadException())
+ result.completeExceptionally(cce.getException());
+ else
+ result.complete(cce.getResponse());
+ }
+ });
+ return result;
+ }
+ return super.callFuture(call, returnType);
+ }
+ };
+ }
+ };
+ }
+ return null;
+ }
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java
new file mode 100644
index 000000000..fe82ee5a6
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.SSLClientSOContainer;
+
+public class J8SSLClientSOContainer extends SSLClientSOContainer {
+
+ public J8SSLClientSOContainer(ISharedObjectContainerConfig config, int ka) {
+ super(config, ka);
+ }
+} \ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java
new file mode 100644
index 000000000..da2e1898f
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.provider.generic.SOContainerConfig;
+import org.eclipse.ecf.provider.generic.SSLGenericContainerInstantiator;
+
+public class J8SSLGenericContainerInstantiator extends
+ SSLGenericContainerInstantiator {
+
+ public static final String JAVA8_SSL_CLIENT_NAME = "ecf.generic.ssl.client.java8";
+ public static final String JAVA8_SSL_SERVER_NAME = "ecf.generic.ssl.server.java8";
+
+ @Override
+ protected boolean isClient(ContainerTypeDescription description) {
+ if (description.getName().equals(JAVA8_SSL_SERVER_NAME))
+ return false;
+ return true;
+ }
+
+ @Override
+ protected IContainer createClientContainer(GenericContainerArgs gcargs)
+ throws Exception {
+ return new J8TCPClientSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getKeepAlive().intValue());
+ }
+
+ @Override
+ protected IContainer createServerContainer(GenericContainerArgs gcargs)
+ throws Exception {
+ return new J8TCPServerSOContainer(new SOContainerConfig(gcargs.getID()), gcargs.getBindAddress(), gcargs.getKeepAlive().intValue());
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) {
+ if (exporterSupportedConfigs == null)
+ return null;
+ List results = new ArrayList();
+ List supportedConfigs = Arrays.asList(exporterSupportedConfigs);
+ // For a server, if exporter is a client then we can be an importer
+ if (JAVA8_SSL_SERVER_NAME.equals(description.getName())) {
+ if (supportedConfigs.contains(JAVA8_SSL_CLIENT_NAME))
+ results.add(JAVA8_SSL_SERVER_NAME);
+ // For a client, if exporter is server we can import
+ // or if remote is either generic server or generic client
+ } else if (JAVA8_SSL_CLIENT_NAME.equals(description.getName())) {
+ if (supportedConfigs.contains(JAVA8_SSL_SERVER_NAME) || supportedConfigs.contains(JAVA8_SSL_CLIENT_NAME))
+ results.add(JAVA8_SSL_CLIENT_NAME);
+ }
+ if (results.size() == 0)
+ return null;
+ return (String[]) results.toArray(new String[] {});
+ }
+
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java
new file mode 100644
index 000000000..e3356c6ef
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URISyntaxException;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.SSLServerSOContainer;
+
+public class J8SSLServerSOContainer extends SSLServerSOContainer {
+
+ public J8SSLServerSOContainer(ISharedObjectContainerConfig config,
+ InetAddress bindAddress, int keepAlive) throws IOException,
+ URISyntaxException {
+ super(config, bindAddress, keepAlive);
+ }
+} \ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java
new file mode 100644
index 000000000..243fd4ebd
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.TCPClientSOContainer;
+
+public class J8TCPClientSOContainer extends TCPClientSOContainer {
+
+ public J8TCPClientSOContainer(ISharedObjectContainerConfig config, int ka) {
+ super(config, ka);
+ }
+} \ No newline at end of file
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java
new file mode 100644
index 000000000..637cf822c
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.remoteservice.java8;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URISyntaxException;
+
+import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerConfig;
+import org.eclipse.ecf.provider.generic.TCPServerSOContainer;
+
+public class J8TCPServerSOContainer extends TCPServerSOContainer {
+
+ public J8TCPServerSOContainer(ISharedObjectContainerConfig config,
+ InetAddress bindAddress, int keepAlive) throws IOException,
+ URISyntaxException {
+ super(config, bindAddress, keepAlive);
+ }
+} \ No newline at end of file
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 a278031c5..3cc6ac131 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 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.remoteservice;singleton:=true
-Bundle-Version: 4.0.100.qualifier
+Bundle-Version: 4.1.0.qualifier
Bundle-Activator: org.eclipse.ecf.internal.provider.remoteservice.Activator
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties
index 97c0ea152..fc3411bce 100644
--- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties
@@ -6,5 +6,5 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-pluginName = ECF RemoteService Provider
+pluginName = ECF Generic Provider RemoteServices Support
providerName = Eclipse.org - ECF
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 577d5f3d4..688004cde 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
@@ -199,6 +199,13 @@ public class RegistrySharedObject extends BaseSharedObject implements IRemoteSer
}
}
+ /**
+ * @since 4.1
+ */
+ protected RemoteServiceImpl createRemoteService(RemoteServiceRegistrationImpl registration) {
+ return new RemoteServiceImpl(this, registration);
+ }
+
/* (non-Javadoc)
* @see org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter#getRemoteService(org.eclipse.ecf.remoteservice.IRemoteServiceReference)
*/
@@ -207,7 +214,7 @@ public class RegistrySharedObject extends BaseSharedObject implements IRemoteSer
final RemoteServiceRegistrationImpl registration = getRemoteServiceRegistrationImpl(reference);
if (registration == null)
return null;
- final RemoteServiceImpl remoteService = new RemoteServiceImpl(this, registration);
+ final RemoteServiceImpl remoteService = createRemoteService(registration);
synchronized (refToImplMap) {
List remoteServiceImplList = (List) refToImplMap.get(reference);
if (remoteServiceImplList == null)
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 bf1af2bde..f6db0c12a 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 Datashare Support Fragment
+pluginName = ECF XMPP Provider DataShare Support
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 cab43138f..8334b52ab 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
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.xmpp.remoteservice;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
Fragment-Host: org.eclipse.ecf.provider.xmpp
Bundle-RequiredExecutionEnvironment: J2SE-1.4
Bundle-Vendor: %providerName
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 e7023dc38..0ab30196a 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 RemoteServices Support Fragment
+pluginName = ECF XMPP Provider RemoteServices Support
providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF
index 308f0ae2c..01a6c6a16 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ecf.provider.xmpp;singleton:=true
-Bundle-Version: 3.2.100.qualifier
+Bundle-Version: 3.2.200.qualifier
Bundle-Activator: org.eclipse.ecf.internal.provider.xmpp.XmppPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -12,7 +12,7 @@ Require-Bundle: org.eclipse.ecf;bundle-version="3.1.0",
org.eclipse.ecf.filetransfer,
org.jivesoftware.smack;bundle-version="3.3.0",
org.eclipse.ecf.sharedobject,
- org.eclipse.equinox.common;bundle-version="3.5.0"
+ org.eclipse.equinox.common
Eclipse-LazyStart: true
Export-Package: org.eclipse.ecf.internal.provider.xmpp;x-internal:=true,
org.eclipse.ecf.internal.provider.xmpp.events;x-internal:=true,
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties
index 4292c605a..2e019f5c8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties
@@ -6,5 +6,5 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-pluginName = ECF XMPP Provider
+pluginName = ECF Presence XMPP Provider
providerName = Eclipse.org - ECF
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java
index c2d44f172..9be97880c 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/internal/provider/xmpp/XMPPContainerPresenceHelper.java
@@ -59,9 +59,9 @@ import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
-import org.jivesoftware.smack.packet.RosterPacket;
import org.jivesoftware.smack.packet.Presence.Mode;
import org.jivesoftware.smack.packet.Presence.Type;
+import org.jivesoftware.smack.packet.RosterPacket;
import org.jivesoftware.smackx.packet.VCard;
public class XMPPContainerPresenceHelper implements ISharedObject {
@@ -391,13 +391,53 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
}
}
+ private boolean replace(IRosterItem i1, IRosterItem i2) {
+ if (i1 instanceof IRosterEntry) {
+ IRosterEntry re1 = (IRosterEntry) i1;
+ if (!(i2 instanceof IRosterEntry))
+ return false;
+ IRosterEntry re2 = (IRosterEntry) i2;
+ XMPPID id1 = (XMPPID) re1.getUser().getID();
+ XMPPID id2 = (XMPPID) re2.getUser().getID();
+ String jid1 = id1.getUsernameAtHost();
+ String jid2 = id2.getUsernameAtHost();
+ if (jid1.equals(jid2)) {
+ String r1 = id1.getResourceName();
+ String r2 = id2.getResourceName();
+ if (r1 == null && r2 != null)
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void addUnique(Collection existingItems, IRosterItem newItem) {
+ List toAdd = new ArrayList();
+ if (existingItems.size() == 0)
+ toAdd.add(newItem);
+ else {
+ boolean addNewItem = true;
+ for (Iterator i = existingItems.iterator(); i.hasNext();) {
+ IRosterItem existing = (IRosterItem) i.next();
+ // If the same then we don't add it
+ if (existing.equals(newItem))
+ addNewItem = false;
+ // else if the new item should replace the existing then remove
+ if (replace(existing, newItem))
+ i.remove();
+ }
+ if (addNewItem)
+ toAdd.add(newItem);
+ }
+ for (Iterator i = toAdd.iterator(); i.hasNext();)
+ existingItems.add(i.next());
+ }
+
private void addUniqueToRoster(IRosterItem[] newItems) {
Collection existingItems = roster.getItems();
synchronized (existingItems) {
- for (int i = 0; i < newItems.length; i++) {
- if (!existingItems.contains(newItems[i]))
- existingItems.add(newItems[i]);
- }
+ for (int i = 0; i < newItems.length; i++)
+ addUnique(existingItems, newItems[i]);
}
rosterManager.notifyRosterUpdate(roster);
}
@@ -411,17 +451,20 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
}
protected IRosterEntry createRosterEntry(RosterEntry entry) {
- final XMPPID xmppid = createIDFromName(entry.getUser());
- final String name = (entry.getName() == null) ? xmppid.getUsername()
- : XMPPID.unfixEscapeInNode(entry.getName());
- return createRosterEntry(xmppid, name, entry.getGroups().iterator());
+ XMPPID xmppid = createIDFromName(entry.getUser());
+ return createRosterEntry(xmppid, getEntryName(xmppid, entry.getName()),
+ entry.getGroups().iterator());
+ }
+
+ private String getEntryName(XMPPID xmppid, String entryName) {
+ return (entryName == null) ? xmppid.getUsername() : XMPPID
+ .unfixEscapeInNode(entryName);
}
protected IRosterEntry createRosterEntry(XMPPID xmppid,
RosterPacket.Item entry) {
- final String name = (entry.getName() == null) ? xmppid.getUsername()
- : XMPPID.unfixEscapeInNode(entry.getName());
- return createRosterEntry(xmppid, name, entry.getGroupNames().iterator());
+ return createRosterEntry(xmppid, getEntryName(xmppid, entry.getName()),
+ entry.getGroupNames().iterator());
}
protected void handleIQEvent(IQEvent evt) {
@@ -435,10 +478,8 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
.iterator(); i.hasNext();) {
final RosterPacket.Item item = (RosterPacket.Item) i.next();
final RosterPacket.ItemType itemType = item.getItemType();
- boolean remove = false;
XMPPID newID = createIDFromName(item.getUser());
- final IRosterItem items[] = createRosterEntries(newID, item);
- final IRosterEntry entry = createRosterEntry(newID, item);
+ boolean remove = false;
if (itemType == RosterPacket.ItemType.none
|| itemType == RosterPacket.ItemType.remove) {
removeItemFromRoster(roster.getItems(),
@@ -446,10 +487,10 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
remove = true;
} else {
remove = false;
- addUniqueToRoster(items);
+ addUniqueToRoster(createRosterEntries(newID, item));
}
// In both cases fire set roster entry
- fireSetRosterEntry(remove, entry);
+ fireSetRosterEntry(remove, createRosterEntry(newID, item));
}
}
} else {
@@ -530,13 +571,14 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
final List xhtmlbodylist = new ArrayList();
for (; xhtmlbodies.hasNext();)
xhtmlbodylist.add(xhtmlbodies.next());
- chatManager.fireXHTMLChatMessage(fromID, threadID, msg
- .getType(), subject, body, ECFConnection
- .getPropertiesFromPacket(msg), xhtmlbodylist);
+ chatManager.fireXHTMLChatMessage(fromID, threadID,
+ msg.getType(), subject, body,
+ ECFConnection.getPropertiesFromPacket(msg),
+ xhtmlbodylist);
} else if (body != null) {
chatManager.fireChatMessage(fromID, threadID,
- msg.getType(), subject, body, ECFConnection
- .getPropertiesFromPacket(msg));
+ msg.getType(), subject, body,
+ ECFConnection.getPropertiesFromPacket(msg));
}
}
}
@@ -904,8 +946,8 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
final Presence newPresence = new Presence(
createPresenceType(ipresence), ipresence.getStatus(), 0,
createPresenceMode(ipresence));
- ECFConnection.setPropertiesInPacket(newPresence, ipresence
- .getProperties());
+ ECFConnection.setPropertiesInPacket(newPresence,
+ ipresence.getProperties());
return newPresence;
}
@@ -998,9 +1040,9 @@ public class XMPPContainerPresenceHelper implements ISharedObject {
protected IRosterItem[] createRosterEntries(RosterEntry entry) {
final XMPPID xmppid = createIDFromName(entry.getUser());
final String name = entry.getName();
- final User newUser = (name == null) ? new User(xmppid, xmppid
- .getUsername()) : new User(xmppid, XMPPID
- .unfixEscapeInNode(name));
+ final User newUser = (name == null) ? new User(xmppid,
+ xmppid.getUsername()) : new User(xmppid,
+ XMPPID.unfixEscapeInNode(name));
return createRosterEntries(entry.getGroups().iterator(), roster,
newUser);
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java
index ccb8d1c26..231908d5d 100644
--- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java
+++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/identity/XMPPID.java
@@ -97,6 +97,9 @@ public class XMPPID extends BaseID implements IChatID, IFQID {
public XMPPID(Namespace namespace, String unamehost)
throws URISyntaxException {
super(namespace);
+ // System.out.println("XMPPID.init unamehost=" + unamehost);
+ // Exception except = new Exception();
+ // except.printStackTrace();
unamehost = fixPercentEscape(unamehost);
if (unamehost == null)
throw new URISyntaxException(unamehost,
@@ -148,15 +151,11 @@ public class XMPPID extends BaseID implements IChatID, IFQID {
// Get resources from this and other
String thisResourceName = getResourceName();
String otherResourceName = other.getResourceName();
- // The resources are considered equal if either one is null (not known
- // yet), or they are equal by
- // string comparison
boolean resourceEquals = false;
- if (thisResourceName == null) {
+ if (thisResourceName == null)
resourceEquals = (otherResourceName == null) ? true : false;
- } else {
+ else
resourceEquals = thisResourceName.equals(otherResourceName);
- }
return resourceEquals
&& getUsernameAtHost().equals(other.getUsernameAtHost());
}
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 2448edb65..e73970267 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
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %bundle.name
Bundle-SymbolicName: org.eclipse.ecf.provider.zookeeper;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.1.0.qualifier
Bundle-Activator: org.eclipse.ecf.provider.zookeeper.DiscoveryActivator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
@@ -20,7 +20,7 @@ Import-Package: org.apache.zookeeper,
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",
+Require-Bundle: org.eclipse.equinox.common,
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;version="1.0.0",
diff --git a/releng/features/org.eclipse.ecf.console.feature/.project b/releng/features/org.eclipse.ecf.console.feature/.project
new file mode 100644
index 000000000..3c66bf48f
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.ecf.console.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.console.feature/about.html b/releng/features/org.eclipse.ecf.console.feature/about.html
new file mode 100644
index 000000000..4c79781a5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/about.html
@@ -0,0 +1,28 @@
+<!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/releng/features/org.eclipse.ecf.console.feature/build.properties b/releng/features/org.eclipse.ecf.console.feature/build.properties
new file mode 100644
index 000000000..0769153e4
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+ notice.html,\
+ license.html,\
+ feature.properties,\
+ epl-v10.html,\
+ about.html
+src.includes = about.html,\
+ feature.properties,\
+ feature.xml,\
+ license.html,\
+ notice.html,\
+ epl-v10.html
diff --git a/releng/features/org.eclipse.ecf.console.feature/epl-v10.html b/releng/features/org.eclipse.ecf.console.feature/epl-v10.html
new file mode 100644
index 000000000..fd391227c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</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">
+
+<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
+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>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.console.feature/feature.properties b/releng/features/org.eclipse.ecf.console.feature/feature.properties
new file mode 100644
index 000000000..1de467b83
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/feature.properties
@@ -0,0 +1,142 @@
+############################################################################
+# Copyright (c) 2014 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 Console Feature
+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\
+February 1, 2011\n\
+\n\
+Usage Of 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\
+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\
+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\
+ - 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\
+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\
+ - 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\
+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\
+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\
+ - 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\
+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\
+\n\Use of Provisioning Technology\n\
+\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\
+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\
+ 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\
+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 Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ########################################## \ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.console.feature/feature.xml b/releng/features/org.eclipse.ecf.console.feature/feature.xml
new file mode 100644
index 000000000..1258ec324
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.feature/feature.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.ecf.console.feature"
+ label="ECF Console Feature"
+ version="1.0.0.qualifier"
+ provider-name="Eclipse.org - ECF">
+
+ <description url="http://www.eclipse.org/ecf">
+ This feature provides the ECF OSGI Console extensions...allowing ECF commands to be givenvia
+ the OSGi console.
+ </description>
+
+ <copyright>
+ Copyright (c) 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>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.ecf"/>
+ <import plugin="org.eclipse.ecf.identity"/>
+ </requires>
+
+ <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.console.feature/license.html b/releng/features/org.eclipse.ecf.console.feature/license.html
new file mode 100644
index 000000000..f19c483b9
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.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.console.feature/notice.html b/releng/features/org.eclipse.ecf.console.feature/notice.html
new file mode 100644
index 000000000..f19c483b9
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.console.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.core.feature/buckminster.cspex b/releng/features/org.eclipse.ecf.core.feature/buckminster.cspex
new file mode 100644
index 000000000..047d47f8c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.feature/buckminster.cspex
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cspecExtension
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0"
+ xmlns="http://www.eclipse.org/buckminster/CSpec-1.0">
+ <dependencies>
+ <!-- the feature -->
+ <dependency name="org.eclipse.platform" componentType="eclipse.feature"/>
+ <dependency name="org.eclipse.equinox.concurrent" componentType="osgi.bundle"/>
+ <!-- tests -->
+ <dependency name="org.eclipse.jdt" componentType="eclipse.feature"/>
+ <dependency name="org.eclipse.ecf.tests" componentType="osgi.bundle"/>
+ <dependency name="org.eclipse.ecf.tests.core" componentType="osgi.bundle"/>
+ </dependencies>
+ <generators>
+ <!-- Place your Generators here -->
+ </generators>
+ <artifacts>
+ <!-- Place your Artifacts here -->
+ </artifacts>
+ <actions>
+ <!-- Place your Actions here -->
+ </actions>
+ <groups>
+ <!-- Place your Groups here -->
+ </groups>
+ <alterDependencies>
+ <!-- Place your Dependencies alterations here -->
+ </alterDependencies>
+ <alterArtifacts>
+ <!-- Place your Artifact alterations here -->
+ </alterArtifacts>
+ <alterActions>
+ <!-- Place your Action alterations here -->
+ </alterActions>
+ <alterGroups>
+ <!-- Place your Group alterations here -->
+ </alterGroups>
+</cspecExtension>
+
diff --git a/releng/features/org.eclipse.ecf.core.feature/build.properties b/releng/features/org.eclipse.ecf.core.feature/build.properties
index 82d509145..3ef964f16 100644
--- a/releng/features/org.eclipse.ecf.core.feature/build.properties
+++ b/releng/features/org.eclipse.ecf.core.feature/build.properties
@@ -2,8 +2,11 @@ bin.includes = feature.xml,\
about.html,\
epl-v10.html,\
license.html,\
- notice.html
+ notice.html,\
+ feature.properties
src.includes = notice.html,\
license.html,\
epl-v10.html,\
- about.html
+ about.html,\
+ feature.properties,\
+ feature.xml
diff --git a/releng/features/org.eclipse.ecf.core.feature/feature.xml b/releng/features/org.eclipse.ecf.core.feature/feature.xml
index 237cd0d5b..32ed04cdb 100644
--- a/releng/features/org.eclipse.ecf.core.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.core.feature/feature.xml
@@ -2,11 +2,11 @@
<feature
id="org.eclipse.ecf.core.feature"
label="ECF Core Feature"
- version="1.0.0.qualifier"
+ version="1.1.0.qualifier"
provider-name="Eclipse.org - ECF">
<description url="http://www.eclipse.org/ecf">
- This feature provides the ECF core and ECF identity bundles.
+ This feature provides the ECF core (org.eclipse.ecf) and ECF identity (org.eclipse.ecf.identity) bundles. These two bundles are required for all other parts of ECF.
</description>
<copyright>
@@ -24,6 +24,13 @@ Contributors: Composent, Inc. - initial API and implementation
%license
</license>
+ <requires>
+ <import plugin="org.eclipse.equinox.common" version="3.6" match="compatible"/>
+ <import plugin="org.eclipse.equinox.registry" version="3.5" match="compatible"/>
+ <import plugin="org.eclipse.equinox.concurrent" version="1.0" match="compatible"/>
+ <import plugin="org.eclipse.core.jobs" version="3.5" match="compatible"/>
+ </requires>
+
<plugin
id="org.eclipse.ecf"
download-size="0"
diff --git a/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery
new file mode 100644
index 000000000..e96d822a5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.cquery
@@ -0,0 +1,35 @@
+<?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.core.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:documentation xmlns="http://www.w3.org/1999/xhtml">This name pattern matchesorg.eclipse.ecf.anything.
+
+ The regex (\..+)? matches zero or more occurrences
+ of . followed by one of more of any character.
+
+ Skip Component is not checked.
+ </cq:documentation>
+
+ </cq:advisorNode>
+ <cq:advisorNode namePattern="^org\.eclipse\.equinox\.p2\.user\.ui$" skipComponent="true" useTargetPlatform="false">
+
+ <cq:documentation xmlns="http://www.w3.org/1999/xhtml">The name pattern matches org.eclipse.equinox.p2.user.ui exactly.
+
+ Skip Component is checked so that this component which comes from
+ the platform is not resolved.
+ </cq:documentation>
+
+ </cq:advisorNode>
+ <cq:advisorNode namePattern=".*" mutableLevel="REJECT" sourceLevel="REJECT">
+
+ <cq:documentation xmlns="http://www.w3.org/1999/xhtml">Everything not picked up by the previous name patterns is
+ rejected.
+ </cq:documentation>
+
+ </cq:advisorNode>
+</cq:componentQuery>
diff --git a/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec
new file mode 100644
index 000000000..f44ebe105
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.feature/org.eclipse.ecf.core.mspec
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<md:mspec xmlns:md="http://www.eclipse.org/buckminster/MetaData-1.0"
+ name="org.eclipse.ecf.core"
+ materializer="p2"
+ url="org.eclipse.ecf.core.cquery">
+
+ <md:mspecNode namePattern="^org\.eclipse\.ecf(\..+)?" materializer="workspace"/>
+
+ <!-- commented out for sdk when comparing to platform
+ <md:mspecNode namePattern=".*" installLocation="${target.location}"/>
+ -->
+
+ <md:mspecNode namePattern=".*" installLocation="${targetPlatformPath}"/>
+</md:mspec>
+
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/.project b/releng/features/org.eclipse.ecf.core.ssl.feature/.project
new file mode 100644
index 000000000..be9fe4a0d
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.ecf.core.ssl.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.core.ssl.feature/about.html b/releng/features/org.eclipse.ecf.core.ssl.feature/about.html
new file mode 100644
index 000000000..4c79781a5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/about.html
@@ -0,0 +1,28 @@
+<!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/releng/features/org.eclipse.ecf.core.ssl.feature/build.properties b/releng/features/org.eclipse.ecf.core.ssl.feature/build.properties
new file mode 100644
index 000000000..fdec9b8ab
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/build.properties
@@ -0,0 +1,10 @@
+bin.includes = feature.xml,\
+ about.html,\
+ license.html,\
+ notice.html,\
+ feature.properties
+src.includes = notice.html,\
+ license.html,\
+ feature.xml,\
+ about.html,\
+ feature.properties
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties
new file mode 100644
index 000000000..7288bd8d2
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.properties
@@ -0,0 +1,142 @@
+############################################################################
+# Copyright (c) 2014 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 Core SSL API
+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\
+February 1, 2011\n\
+\n\
+Usage Of 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\
+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\
+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\
+ - 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\
+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\
+ - 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\
+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\
+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\
+ - 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\
+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\
+\n\Use of Provisioning Technology\n\
+\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\
+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\
+ 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\
+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 Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ########################################## \ No newline at end of file
diff --git a/releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml
new file mode 100644
index 000000000..1a8244fed
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.feature/feature.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.ecf.core.ssl.feature"
+ label="ECF Core SSL Feature"
+ version="1.0.0.qualifier"
+ provider-name="Eclipse.org - ECF">
+
+ <description url="http://www.eclipse.org/ecf">
+ This feature provides the ECF core SSL fragment. On Equinox-based frameworks, this fragment exposes the Equinox TrustManager to ECF FileTransfer and other ECF-based communications.
+ </description>
+
+ <copyright>
+ Copyright (c) 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>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.ecf"/>
+ <import plugin="org.eclipse.ecf.identity"/>
+ </requires>
+
+ <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.ssl.feature/license.html b/releng/features/org.eclipse.ecf.core.ssl.feature/license.html
new file mode 100644
index 000000000..f19c483b9
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.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.core.ssl.feature/notice.html b/releng/features/org.eclipse.ecf.core.ssl.feature/notice.html
new file mode 100644
index 000000000..f19c483b9
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.core.ssl.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.core/feature.properties b/releng/features/org.eclipse.ecf.core/feature.properties
index e51f6e715..dd777c2f4 100644
--- a/releng/features/org.eclipse.ecf.core/feature.properties
+++ b/releng/features/org.eclipse.ecf.core/feature.properties
@@ -6,7 +6,7 @@
# http://www.eclipse.org/legal/epl-v10.html
#
############################################################################
-featureName=ECF Target Components for Eclipse
+featureName=ECF SDK for Eclipse
providerName=Eclipse.org - ECF
# "licenseURL" property - URL of the "Feature License"
diff --git a/releng/features/org.eclipse.ecf.core/feature.xml b/releng/features/org.eclipse.ecf.core/feature.xml
index ceef55475..24f2b07e9 100644
--- a/releng/features/org.eclipse.ecf.core/feature.xml
+++ b/releng/features/org.eclipse.ecf.core/feature.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.ecf.core"
- label="ECF Target Components for Eclipse"
+ label="ECF SDK for Eclipse"
version="3.8.0.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.
+ This feature provides an all-in-one distribution of ECF APIs, providers, ui, tools, and examples for Eclipse. Use this feature if you want to install all of ECF into Eclipse.
</description>
<copyright>
@@ -26,9 +26,14 @@ Contributors: Composent, Inc. - initial API and implementation
</license>
<includes
- id="org.eclipse.ecf.remoteservice.sdk.feature"
+ id="org.eclipse.ecf.docshare.feature"
version="0.0.0"/>
+ <requires>
+ <import feature="org.eclipse.ecf.remoteservice.sdk.feature" version="3.8" match="compatible"/>
+ <import feature="org.eclipse.ecf.remoteservice.sdk.examples.feature" version="1.0" match="compatible"/>
+ </requires>
+
<plugin
id="org.eclipse.ecf.doc"
download-size="0"
@@ -170,13 +175,6 @@ Contributors: Composent, Inc. - initial API and implementation
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"
@@ -198,13 +196,6 @@ Contributors: Composent, Inc. - initial API and implementation
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"
@@ -304,4 +295,32 @@ Contributors: Composent, Inc. - initial API and implementation
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.sync"
+ 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.provider.msn"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
index 2415adba5..8bf01012e 100644
--- a/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.datashare.feature/feature.xml
@@ -3,11 +3,11 @@
id="org.eclipse.ecf.datashare.feature"
label="ECF Datashare"
version="1.0.0.qualifier"
- provider-name="%providerName">
+ provider-name="Eclipse.org - ECF">
<description url="http://www.eclipse.org/ecf">
This feature provides the ECF Datashare API for asynchronous
-messaging within a channel.
+messaging within a named channel.
</description>
<copyright>
@@ -26,22 +26,13 @@ messaging within a channel.
%license
</license>
- <plugin
- id="org.eclipse.ecf.datashare"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
+ <requires>
+ <import plugin="org.eclipse.ecf"/>
+ <import plugin="org.eclipse.ecf.identity"/>
+ </requires>
<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"
+ id="org.eclipse.ecf.datashare"
download-size="0"
install-size="0"
version="0.0.0"
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 6e3af0099..b6659b4d0 100644
--- a/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.dnssd.feature/feature.xml
@@ -6,7 +6,7 @@
provider-name="%providerName">
<description url="http://www.eclipse.org/ecf">
- This feature provides the ECF Discovery DNS-SD Provider.
+ This feature provides the ECF Discovery DNS-SD Provider. This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
</description>
<copyright>
@@ -26,7 +26,7 @@
</license>
<requires>
- <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+ <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
</requires>
<plugin
diff --git a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
index 099007d49..27add58fc 100644
--- a/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.feature/feature.xml
@@ -25,6 +25,11 @@
%license
</license>
+ <requires>
+ <import plugin="org.eclipse.ecf"/>
+ <import plugin="org.eclipse.ecf.identity"/>
+ </requires>
+
<plugin
id="org.eclipse.ecf.discovery"
download-size="0"
@@ -39,11 +44,4 @@
version="0.0.0"
unpack="false"/>
- <plugin
- id="org.eclipse.equinox.concurrent"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
</feature>
diff --git a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
index 169a45ddb..ce2a78da7 100644
--- a/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.jmdns.feature/feature.xml
@@ -6,7 +6,7 @@
provider-name="%providerName">
<description url="http://www.eclipse.org/ecf">
- This feature provides the ECF Discovery Zeroconf Provider.
+ This feature provides the ECF Discovery Zeroconf Provider. This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
</description>
<copyright>
@@ -26,7 +26,7 @@
</license>
<requires>
- <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+ <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
</requires>
<plugin
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 7bf836af2..0ed2dea2d 100644
--- a/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.slp.feature/feature.xml
@@ -7,7 +7,7 @@
<description url="http://www.eclipse.org/ecf">
This feature provides the ECF Discovery Service Location Protocol
-(RFC 2608) Provider.
+(RFC 2608) Provider. This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
</description>
<copyright>
@@ -27,7 +27,7 @@
</license>
<requires>
- <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0"/>
+ <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
</requires>
<plugin
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 fa1d4971f..fc024fafb 100644
--- a/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.discovery.zookeeper.feature/feature.xml
@@ -6,7 +6,7 @@
provider-name="%providerName">
<description url="http://wiki.eclipse.org/Zookeeper_Based_ECF_Discovery">
- This feature provides the Apache Zookeeper Discovery Provider.
+ This feature provides the Apache Zookeeper Discovery Provider. This provider can be used by OSGi Remote Services Discovery to publish and discover OSGi RS EndpointDescriptions.
</description>
<copyright url="http://www.eclipse.org/legal/epl-v10.html">
@@ -27,16 +27,7 @@
</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"/>
+ <import feature="org.eclipse.ecf.discovery.feature" version="1.0.0" match="compatible"/>
</requires>
<plugin
@@ -60,11 +51,4 @@
version="0.0.0"
unpack="false"/>
- <plugin
- id="org.slf4j.api"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
</feature>
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/.project b/releng/features/org.eclipse.ecf.docshare.feature/.project
new file mode 100644
index 000000000..034cbe9e1
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.ecf.docshare.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.docshare.feature/about.html b/releng/features/org.eclipse.ecf.docshare.feature/about.html
new file mode 100644
index 000000000..4c79781a5
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/about.html
@@ -0,0 +1,28 @@
+<!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/releng/features/org.eclipse.ecf.docshare.feature/build.properties b/releng/features/org.eclipse.ecf.docshare.feature/build.properties
new file mode 100644
index 000000000..748532e0f
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/build.properties
@@ -0,0 +1,12 @@
+bin.includes = feature.xml,\
+ about.html,\
+ epl-v10.html,\
+ feature.properties,\
+ notice.html,\
+ license.html
+src.includes = notice.html,\
+ license.html,\
+ feature.xml,\
+ feature.properties,\
+ epl-v10.html,\
+ about.html
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html b/releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html
new file mode 100644
index 000000000..fd391227c
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/epl-v10.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</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">
+
+<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
+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>
+
+</body>
+
+</html>
diff --git a/releng/features/org.eclipse.ecf.docshare.feature/feature.properties b/releng/features/org.eclipse.ecf.docshare.feature/feature.properties
new file mode 100644
index 000000000..cce49b170
--- /dev/null
+++ b/releng/features/org.eclipse.ecf.docshare.feature/feature.properties
@@ -0,0 +1,142 @@
+############################################################################
+# Copyright (c) 2014 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
+#
+############################################################################
+featureName=ECF Docshare
+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\
+February 1, 2011\n\
+\n\
+Usage Of 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\
+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\
+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\
+ - 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\
+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\
+ - 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\
+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\
+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\
+ - 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\
+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\
+\n\Use of Provisioning Technology\n\
+\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\
+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\
+ 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\
+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 Oracle Corporation in the United States, other