From 44b1f871420ed447d8d66a27af84780bb18def91 Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 17 Jan 2014 10:24:20 -0800 Subject: Additions to address RFC 203 additions of capabilities represented by bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=422752. This commit adds the discovery provider capability (section 5.5.2) for the following ECF providers (protocol): Composite (ecf.discovery.composite), SLP (SLP), JMDNS (ZEROCONF), dnssd (DNSSD) and Zookeeper (ZOOKEEPER). Change-Id: I9d67d8b147ac52a4af451335d5af2149b912e31b --- .../bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF | 3 ++- providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 1 + providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF | 3 ++- providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF | 3 ++- .../bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF | 1 + 5 files changed, 8 insertions(+), 3 deletions(-) (limited to 'providers') 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..558e06e81 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.1.300.qualifier Bundle-Vendor: %pluginProvider Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0", org.osgi.framework, @@ -16,3 +16,4 @@ Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, Bundle-Activator: org.eclipse.ecf.internal.provider.discovery.Activator Export-Package: org.eclipse.ecf.provider.discovery;x-friends:="org.eclipse.ecf.tests.provider.discovery" Bundle-ActivationPolicy: lazy +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ecf.discovery.composite”;version:Version=1.1 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..628da63e4 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 @@ -24,3 +24,4 @@ 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" Bundle-Localization: plugin +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”DNSSD”;version:Version=1.1 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..1fd8d01f9 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.1.100.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.jmdns.JMDNSPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -20,3 +20,4 @@ Import-Package: org.osgi.framework;version="1.3.0", org.osgi.service.log;version="1.3.0", org.osgi.util.tracker;version="1.3.2" Bundle-ActivationPolicy: lazy +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZEROCONF”;version:Version=1.1 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..95d6ee8bf 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.0.200.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.jslp.Activator Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -22,3 +22,4 @@ Export-Package: org.eclipse.ecf.internal.provider.jslp;x-friends:="org.eclipse.e org.eclipse.ecf.provider.jslp.container;version="3.0.0", org.eclipse.ecf.provider.jslp.identity;version="3.0.0" Bundle-ActivationPolicy: lazy +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”SLP”;version:Version=1.1 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..6c88bc285 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 @@ -30,3 +30,4 @@ Export-Package: org.eclipse.ecf.provider.zookeeper;version="1.0.0", org.eclipse.ecf.provider.zookeeper.util;x-internal:=true Bundle-Vendor: %bundle.provider Bundle-Localization: bundle +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZOOKEEPER”;version:Version=1.1 -- cgit v1.2.3 From 1b85fd9e62ae62a331c6d81e6db183b8ad3149c0 Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 17 Jan 2014 10:29:26 -0800 Subject: Forgot to update version number Change-Id: Ic5f704da64ea63a484625bb398b0ea94038509d2 --- .../bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 6c88bc285..0a7a6cc8d 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.0.200.qualifier Bundle-Activator: org.eclipse.ecf.provider.zookeeper.DiscoveryActivator Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 -- cgit v1.2.3 From daca6615476837891a71bb7757a8069e01dcbf90 Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 17 Jan 2014 10:42:22 -0800 Subject: Updated minor version of bundles associated with previous commit. See comment: https://bugs.eclipse.org/bugs/show_bug.cgi?id=422752#c8 Change-Id: If6e300e7572cab37220306e2570f82fb9cfbaa29 --- .../bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'providers') 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 558e06e81..7eac57952 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.300.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.dnssd/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF index 628da63e4..ef013b114 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 @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ECF Discovery Provider based on DNS-SD 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-RequiredExecutionEnvironment: J2SE-1.4 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 1fd8d01f9..86225924b 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.100.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.jslp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF index 95d6ee8bf..e03a4736f 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.200.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.zookeeper/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF index 0a7a6cc8d..a39a0125d 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.200.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Activator: org.eclipse.ecf.provider.zookeeper.DiscoveryActivator Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 -- cgit v1.2.3 From 3cbde40054900ed7bf55f241dd215dd9655ab9ca Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 17 Jan 2014 12:41:01 -0800 Subject: Addition of Distribution Provider capabilities for ECF remote service providers as per 5.5.3 of RFC 203. See bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=422752 Change-Id: I84cf67ab8e25e3fe04007c70b09a64a82ed92c34 --- .../META-INF/MANIFEST.MF | 3 ++- .../META-INF/MANIFEST.MF | 3 ++- .../META-INF/MANIFEST.MF | 4 ++-- .../bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF | 3 ++- .../bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF | 1 + providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF | 3 ++- .../bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF | 3 ++- .../org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF | 1 + .../org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF | 3 ++- 9 files changed, 16 insertions(+), 8 deletions(-) (limited to 'providers') 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..9ad370ae3 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 @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Timeservice Provider Rest Consumer Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.consumer;singleton:=true -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Vendor: MyCorp Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy @@ -18,3 +18,4 @@ Import-Package: com.mycorp.examples.timeservice;version="1.0.0", org.osgi.framework Require-Bundle: org.eclipse.ecf, org.eclipse.equinox.common;bundle-version="3.6.200" +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”com.mycorp.examples.timeservice.rest.consumer”; version:Version=1.1 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..8f20ba4f2 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 @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ECF TimeService Rest Provider Host Bundle-SymbolicName: com.mycorp.examples.timeservice.provider.rest.host;singleton:=true -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Vendor: MyCorp Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.equinox.common, @@ -21,3 +21,4 @@ Import-Package: com.mycorp.examples.timeservice;version="1.0.0", org.osgi.service.http Service-Component: OSGI-INF/httpservicecomponent.xml Bundle-ActivationPolicy: lazy +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”com.mycorp.examples.timeservice.rest.host”; version:Version=1.1 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..4a6cf694b 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, @@ -20,3 +19,4 @@ Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0" 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 +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.container.example.rs”; version:Version=1.1 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..d96bceece 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 @@ -39,3 +39,4 @@ Require-Bundle: org.eclipse.equinox.common, org.eclipse.ecf.identity Service-Component: META-INF/dspresent.xml Bundle-Localization: plugin +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.rest.client”; version:Version=1.1 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..0a9c1819f 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 @@ -34,3 +34,4 @@ Export-Package: org.eclipse.ecf.internal.remoteservice.rpc;x-internal:=true, org.eclipse.ecf.remoteservice.rpc.identity;version="1.0.0" Bundle-Localization: plugin DynamicImport-Package: * +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.xmlrpc.client”; version:Version=1.1 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..d49aa1902 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, @@ -24,3 +24,4 @@ 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" +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.local”; version:Version=1.1 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..fc90a0380 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", @@ -21,3 +21,4 @@ Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, Bundle-ActivationPolicy: lazy Bundle-Localization: plugin DynamicImport-Package: * +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.r_osgi.peer”; version:Version=1.1 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..9e6a221a0 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 @@ -24,3 +24,4 @@ Import-Package: org.eclipse.core.runtime.jobs, org.osgi.service.log, org.osgi.util.tracker Bundle-ActivationPolicy: lazy +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.generic.server,ecf.generic.client,ecf.generic.ssl.server,ecf.generic.ssl.client”; version:Version=1.1 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..cf40052d2 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,10 +2,11 @@ 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 Require-Bundle: org.eclipse.ecf.remoteservice;bundle-version="4.1.0", org.eclipse.ecf.provider.remoteservice Bundle-Localization: plugin +Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.xmpp.smack,ecf.xmpps.smack”; version:Version=1.1 -- cgit v1.2.3 From 5ad7ef4274ba2f29d42e8f59a7930ec2b6efab9c Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Thu, 23 Jan 2014 19:08:09 +0100 Subject: bug 426374: Notify IServiceListeners registered via OSGi ServiceRegistry of previously registered services Bug-URL: https://bugs.eclipse.org/bugs/show_bug.cgi?id=426374 --- .../org.eclipse.ecf.discovery/META-INF/MANIFEST.MF | 2 +- .../AbstractDiscoveryContainerAdapter.java | 51 ++++++-- .../eclipse/ecf/discovery/IServiceListener.java | 15 +-- .../discovery/DiscoveryServiceListener.java | 145 ++++++--------------- .../discovery/CompositeDiscoveryContainer.java | 7 + .../ecf/tests/discovery/DiscoveryServiceTest.java | 100 +++++--------- .../tests/discovery/ThreadTestServiceListener.java | 33 ----- .../discovery/listener/TestServiceListener.java | 4 + .../listener/ThreadTestServiceListener.java | 39 ++++++ 9 files changed, 162 insertions(+), 234 deletions(-) delete mode 100644 tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/ThreadTestServiceListener.java create mode 100644 tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java (limited to 'providers') 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 edb0a6a23..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 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 69c88f0c9..64d7e7ba5 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 @@ -68,9 +68,9 @@ public abstract class AbstractDiscoveryContainerAdapter extends allServiceListeners = Collections.synchronizedSet(new HashSet()); discoveryServiceListener = new DiscoveryServiceListener(this, - IServiceListener.class, config); + IServiceListener.class); discoveryServiceTypeListener = new DiscoveryServiceListener(this, - IServiceTypeListener.class, config); + IServiceTypeListener.class); discoveryServiceListenerComparator = new ServiceTypeComparator(); @@ -84,9 +84,25 @@ 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(new ServiceContainerEvent( + iServiceInfo, getConfig().getID())); + } + return null; + } + }, null); + } } /* @@ -97,8 +113,8 @@ 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 @@ -109,6 +125,22 @@ public abstract class AbstractDiscoveryContainerAdapter extends } v.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(aType); + + for (int i = 0; i < services.length; i++) { + final IServiceInfo iServiceInfo = services[i]; + aListener.serviceDiscovered(new ServiceContainerEvent( + iServiceInfo, getConfig().getID())); + } + return null; + } + }, null); + } } /* @@ -129,13 +161,6 @@ public abstract class AbstractDiscoveryContainerAdapter extends allServiceListeners.clear(); } - /** - * @since 4.1 - */ - public void disconnect() { - iServiceInfoServiceListener.dispose(); - } - /* * (non-Javadoc) * @@ -147,6 +172,7 @@ public abstract class AbstractDiscoveryContainerAdapter extends config = null; discoveryServiceListener.dispose(); discoveryServiceTypeListener.dispose(); + iServiceInfoServiceListener.dispose(); super.dispose(); } @@ -357,7 +383,6 @@ public abstract class AbstractDiscoveryContainerAdapter extends * @since 3.0 */ public IServiceInfo[] purgeCache() { - this.discoveryServiceListener.purgeCache(); return new IServiceInfo[] {}; } 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 fed691c56..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,15 +38,14 @@ package org.eclipse.ecf.discovery; public interface IServiceListener { /** - * @since 4.1 - * @noimplement This interface is not intended to be implemented by clients. + * @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 static interface Cache { - - public static final String USE = "org.eclipse.ecf.discovery.IServiceListener.Cache.USE"; - public static final String REFRESH = "org.eclipse.ecf.discovery.IServiceListener.Cache.REFRESH"; - } - + public boolean triggerDiscovery(); + /** * Notification that a service has been discovered (the service is fully resolved). * 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 d0dc6d42f..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,15 +10,12 @@ ******************************************************************************/ package org.eclipse.ecf.internal.discovery; -import java.util.*; -import org.eclipse.core.runtime.*; -import org.eclipse.core.runtime.jobs.ILock; -import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.ecf.core.identity.*; import org.eclipse.ecf.core.util.StringUtils; import org.eclipse.ecf.discovery.*; import org.eclipse.ecf.discovery.identity.*; -import org.eclipse.equinox.concurrent.future.*; import org.osgi.framework.*; public class DiscoveryServiceListener implements ServiceListener { @@ -29,45 +26,10 @@ public class DiscoveryServiceListener implements ServiceListener { private final IServiceIDFactory idFactory; private final Namespace discoveryNamespace; - // Need a fair lock to gurantee ordering of add and remove events - private final ILock cacheLock; - private final Set cache = new HashSet(); - private final IExecutor executor; - private final IServiceListener cachingListener = new IServiceListener() { - - public void serviceUndiscovered(IServiceEvent anEvent) { - try { - cacheLock.acquire(); - cache.remove(anEvent); - } finally { - cacheLock.release(); - } - } - - public void serviceDiscovered(IServiceEvent anEvent) { - try { - cacheLock.acquire(); - cache.add(anEvent); - } finally { - cacheLock.release(); - } - } - }; - private final DiscoveryContainerConfig config; - public DiscoveryServiceListener( AbstractDiscoveryContainerAdapter anAbstractDiscoveryContainerAdapter, - Class clazz, DiscoveryContainerConfig config) { - - this.config = config; - executor = new ThreadsExecutor(); - cacheLock = Job.getJobManager().newLock(); - + Class clazz) { discoveryContainer = anAbstractDiscoveryContainerAdapter; - - // Add a cache to the discovery container - discoveryContainer.addServiceListener(cachingListener); - listenerClass = clazz; discoveryNamespace = IDFactory.getDefault().getNamespaceByName( DiscoveryNamespace.NAME); @@ -89,9 +51,6 @@ public class DiscoveryServiceListener implements ServiceListener { } public void dispose() { - discoveryContainer.removeServiceListener(cachingListener); - purgeCache(); - if (!DiscoveryPlugin.isStopped()) { context.removeServiceListener(this); } @@ -101,66 +60,28 @@ public class DiscoveryServiceListener implements ServiceListener { if (references == null) { return; } - final Map futures = new HashMap(references.length); for (int i = 0; i < references.length; i++) { final ServiceReference serviceReference = references[i]; if (listenerClass.getName() .equals(IServiceListener.class.getName())) { - final IServiceTypeID aType = getIServiceTypeID(serviceReference); - if (aType == null) { - continue; - } - final IServiceListener aListener = (IServiceListener) context - .getService(serviceReference); - discoveryContainer.addServiceListener(aType, aListener); - - // Notify newly registered ISI of previously discovered services - if (serviceReference.getProperty(IServiceListener.Cache.USE) != null) { - for (Iterator iterator = cache.iterator(); iterator - .hasNext();) { - final IServiceEvent event = (IServiceEvent) iterator - .next(); - // if - // (aType.equals(event.getServiceInfo().getServiceID() - // .getServiceTypeID())) { - aListener.serviceDiscovered(event); - // } + if (isAllWildcards(serviceReference)) { + final IServiceListener aListener = (IServiceListener) context + .getService(serviceReference); + discoveryContainer.addServiceListener(aListener); + } else { + final IServiceTypeID aType = getIServiceTypeID(serviceReference); + if (aType == null) { + continue; } - } - if (Boolean.TRUE.equals(serviceReference - .getProperty(IServiceListener.Cache.REFRESH))) { - // Just trigger re-discovery without caring for the result - futures.put(discoveryContainer.getAsyncServices(), - aListener); + final IServiceListener aListener = (IServiceListener) context + .getService(serviceReference); + discoveryContainer.addServiceListener(aType, aListener); } } else { final IServiceTypeListener aListener = (IServiceTypeListener) context .getService(serviceReference); discoveryContainer.addServiceTypeListener(aListener); } - - // Finally notify all listeners - if (futures.size() > 0) { - final IProgressRunnable runnable = new IProgressRunnable() { - public Object run(final IProgressMonitor arg0) - throws Exception { - for (final Iterator iterator = futures.keySet() - .iterator(); iterator.hasNext();) { - final IFuture f = (IFuture) iterator.next(); - final IServiceListener listener = (IServiceListener) futures - .get(f); - final IServiceInfo[] infos = (IServiceInfo[]) f - .get(); - for (int i = 0; i < infos.length; i++) { - listener.serviceDiscovered(new ServiceContainerEvent( - infos[i], config.getID())); - } - } - return null; - } - }; - executor.execute(runnable, null); - } } } @@ -176,13 +97,19 @@ public class DiscoveryServiceListener implements ServiceListener { final ServiceReference serviceReference = references[i]; if (listenerClass.getName() .equals(IServiceListener.class.getName())) { - final IServiceTypeID aType = getIServiceTypeID(serviceReference); - if (aType == null) { - continue; + if (isAllWildcards(serviceReference)) { + final IServiceListener aListener = (IServiceListener) context + .getService(serviceReference); + discoveryContainer.removeServiceListener(aListener); + } else { + final IServiceTypeID aType = getIServiceTypeID(serviceReference); + if (aType == null) { + continue; + } + final IServiceListener aListener = (IServiceListener) context + .getService(serviceReference); + discoveryContainer.removeServiceListener(aType, aListener); } - final IServiceListener aListener = (IServiceListener) context - .getService(serviceReference); - discoveryContainer.removeServiceListener(aType, aListener); } else { final IServiceTypeListener aListener = (IServiceTypeListener) context .getService(serviceReference); @@ -195,6 +122,17 @@ public class DiscoveryServiceListener implements ServiceListener { removeServiceListener(new ServiceReference[] { reference }); } + private boolean isAllWildcards(ServiceReference serviceReference) { + return serviceReference + .getProperty("org.eclipse.ecf.discovery.namingauthority") == null + && serviceReference + .getProperty("org.eclipse.ecf.discovery.services") == null + && serviceReference + .getProperty("org.eclipse.ecf.discovery.scopes") == null + && 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$ @@ -259,13 +197,4 @@ public class DiscoveryServiceListener implements ServiceListener { return "(" + Constants.OBJECTCLASS + "=" + listenerClass.getName() //$NON-NLS-1$ //$NON-NLS-2$ + ")"; //$NON-NLS-1$ } - - public void purgeCache() { - try { - cacheLock.acquire(); - cache.clear(); - } finally { - cacheLock.release(); - } - } } 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..f87fbe90d 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 @@ -70,6 +70,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 { diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java index 05185e993..b9ae8664b 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java @@ -25,6 +25,7 @@ import org.eclipse.ecf.discovery.IServiceTypeListener; import org.eclipse.ecf.discovery.identity.IServiceTypeID; import org.eclipse.ecf.tests.discovery.listener.TestServiceListener; import org.eclipse.ecf.tests.discovery.listener.TestServiceTypeListener; +import org.eclipse.ecf.tests.discovery.listener.ThreadTestServiceListener; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; @@ -56,86 +57,43 @@ public abstract class DiscoveryServiceTest extends DiscoveryTest { return Activator.getDefault().getDiscoveryAdvertiser(containerUnderTest); } - // Check newly added IServiceListener is notified about service discovered _before_ the listener is registered -// public void testGetPreregisteredService() { -// IServiceInfo[] services = discoveryLocator.getServices(); -// assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); -// -// registerService(); -// -// final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator); -// Properties props = new Properties(); -// props.put(IDiscoveryLocator.CONTAINER_NAME, containerUnderTest); -// props.put(IServiceListener.Cache.USE, Boolean.TRUE); -// BundleContext ctxt = Activator.getDefault().getContext(); -// ServiceRegistration registration = ctxt.registerService(IServiceListener.class.getName(), tsl, props); -// -// // No need to wait() on TSL here -// -// registration.unregister(); -// -// IContainerEvent[] event = tsl.getEvent(); -// assertNotNull("Test listener didn't receive any discovery event", event); -// assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(event), eventsToExpect, event.length); -// IServiceInfo serviceInfo2 = ((IServiceEvent) event[eventsToExpect - 1]).getServiceInfo(); -// assertTrue("IServiceInfo should match, expected:\n\t" + serviceInfo + " but was \n\t" + serviceInfo2, comparator.compare(serviceInfo2, serviceInfo) == 0); -// } - - public void testGetRefreshService() { + public void testAddServiceListenerWithRefresh() { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); registerService(); services = discoveryLocator.getServices(); assertTrue("A single services must be registerd at this point " + (services.length != 1 ? "" : services.toString()), services.length == 1); - try { - // Purge the DiscoveryServiceListener explicitly - //discoveryLocator.purgeCache(); - - final ThreadTestServiceListener tsl = new ThreadTestServiceListener(eventsToExpect, discoveryLocator); - Properties props = new Properties(); - props.put(IDiscoveryLocator.CONTAINER_NAME, containerUnderTest); - props.put(IServiceListener.Cache.REFRESH, Boolean.TRUE); - //props.put(IServiceListener.Cache.USE, Boolean.TRUE); - BundleContext ctxt = Activator.getDefault().getContext(); - ServiceRegistration registration = ctxt.registerService(IServiceListener.class.getName(), tsl, props); - - // Because the cache has been purged, it shouldn't know about the previously registered service - IContainerEvent[] event = tsl.getEvent(); - assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(event), 0, event.length); - - // Here's is a race condition between the DiscoveryServiceListener - // already actively discovering services and us. If the discovery of - // the service has finished before we wait on the tsl, we will miss - // the event? - // OTOH won't the event be received by the tsl anyway and - // we just have to wait for the timeout? - // IServiceListener.Cache.REFRESH should have triggered re-discovery - synchronized (tsl) { - // register a service which we expect the test listener to get notified of - try { - tsl.wait(waitTimeForProvider); - } catch (final InterruptedException e) { - Thread.currentThread().interrupt(); - fail("Some discovery unrelated threading issues?"); - } + final ThreadTestServiceListener tsl = new ThreadTestServiceListener(eventsToExpect, discoveryLocator); + Properties props = new Properties(); + props.put(IDiscoveryLocator.CONTAINER_NAME, containerUnderTest); + BundleContext ctxt = Activator.getDefault().getContext(); + ServiceRegistration registration = ctxt.registerService(IServiceListener.class.getName(), tsl, props); + + // Because the cache has been purged, it shouldn't know about the previously registered service + IContainerEvent[] event = tsl.getEvent(); + assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(event), 0, event.length); + + // IServiceListener.Cache.REFRESH should have triggered re-discovery + synchronized (tsl) { + // register a service which we expect the test listener to get notified of + try { + tsl.wait(waitTimeForProvider); + } catch (final InterruptedException e) { + Thread.currentThread().interrupt(); + fail("Some discovery unrelated threading issues?"); } - - registration.unregister(); - - event = tsl.getEvent(); - assertTrue("Discovery event must have originated in backend thread", Thread.currentThread() != tsl.getCallingThread()); - assertNotNull("Test listener didn't receive any discovery event", event); - assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(event), eventsToExpect, event.length); - IServiceInfo serviceInfo2 = ((IServiceEvent) event[eventsToExpect - 1]).getServiceInfo(); - assertTrue("IServiceInfo should match, expected:\n\t" + serviceInfo + " but was \n\t" + serviceInfo2, comparator.compare(serviceInfo2, serviceInfo) == 0); - } finally { - //de-register the manually registered service manually again. - // 1. registerService(..) - // 2. addListenerRegisterAndWait(..) - unregisterService(); } + + registration.unregister(); + + event = tsl.getEvent(); + assertTrue("Discovery event must have originated from backend thread", Thread.currentThread() != tsl.getCallingThread() && tsl.getCallingThread() != null); + assertNotNull("Test listener didn't receive any discovery event", event); + assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(event), eventsToExpect, event.length); + IServiceInfo serviceInfo2 = ((IServiceEvent) event[eventsToExpect - 1]).getServiceInfo(); + assertTrue("IServiceInfo should match, expected:\n\t" + serviceInfo + " but was \n\t" + serviceInfo2, comparator.compare(serviceInfo2, serviceInfo) == 0); } public void testAddServiceListenerIServiceListenerOSGi() throws ContainerConnectException { diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/ThreadTestServiceListener.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/ThreadTestServiceListener.java deleted file mode 100644 index 1ff89d5b6..000000000 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/ThreadTestServiceListener.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014 Markus Alexander Kuppe and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Markus Alexander Kuppe - initial API and implementation - ******************************************************************************/ -package org.eclipse.ecf.tests.discovery; - -import org.eclipse.ecf.discovery.IDiscoveryLocator; -import org.eclipse.ecf.discovery.IServiceEvent; -import org.eclipse.ecf.tests.discovery.listener.TestServiceListener; - -public class ThreadTestServiceListener extends TestServiceListener { - - private Thread currentThread; - - public Thread getCallingThread() { - return currentThread; - } - - public ThreadTestServiceListener(int eventsToExpect, - IDiscoveryLocator aLocator) { - super(eventsToExpect, aLocator); - } - - public void serviceDiscovered(IServiceEvent anEvent) { - super.serviceDiscovered(anEvent); - currentThread = Thread.currentThread(); - } -} diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java index 541697142..65be9cb07 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java @@ -53,4 +53,8 @@ public class TestServiceListener extends TestListener implements IServiceListene public IContainer getLocator() { return (IContainer) locator; } + + public boolean triggerDiscovery() { + return false; + } } diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java new file mode 100644 index 000000000..71ffaa77f --- /dev/null +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2014 Markus Alexander Kuppe and others. All rights reserved. + * This program and the accompanying materials are made available under the terms + * of the Eclipse Public License v1.0 which accompanies this distribution, and is + * available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Markus Alexander Kuppe - initial API and implementation + ******************************************************************************/ +package org.eclipse.ecf.tests.discovery.listener; + +import org.eclipse.ecf.discovery.IDiscoveryLocator; +import org.eclipse.ecf.discovery.IServiceEvent; + +public class ThreadTestServiceListener extends TestServiceListener { + + private Thread currentThread; + + public Thread getCallingThread() { + return currentThread; + } + + /* (non-Javadoc) + * @see org.eclipse.ecf.tests.discovery.listener.TestServiceListener#triggerDiscovery() + */ + public boolean triggerDiscovery() { + return true; + } + + public ThreadTestServiceListener(int eventsToExpect, + IDiscoveryLocator aLocator) { + super(eventsToExpect, aLocator); + } + + public void serviceDiscovered(IServiceEvent anEvent) { + super.serviceDiscovered(anEvent); + currentThread = Thread.currentThread(); + } +} -- cgit v1.2.3 From fb4c29bdffe1617e3e4708bf98a7f8b43fb469e0 Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 24 Jan 2014 10:35:37 -0800 Subject: Addition of discover provider 'protocol' entries as per discussion on bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=422752 Change-Id: I1d12542aa9cfc599a6b0b49a840a4a4186ca60dc --- .../bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'providers') 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 7eac57952..61f45237b 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 @@ -16,4 +16,4 @@ Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, Bundle-Activator: org.eclipse.ecf.internal.provider.discovery.Activator Export-Package: org.eclipse.ecf.provider.discovery;x-friends:="org.eclipse.ecf.tests.provider.discovery" Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ecf.discovery.composite”;version:Version=1.1 +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ecf.discovery.composite,ecf.discovery.composite.locator,ecf.discovery.composite.advertiser”;version:Version=1.1 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 ef013b114..9e28666a6 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 @@ -24,4 +24,4 @@ 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" Bundle-Localization: plugin -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”DNSSD”;version:Version=1.1 +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”DNSSD,ecf.discovery.dnssd.locator,ecf.discovery.dnssd.advertiser”;version:Version=1.1 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 86225924b..964b0cf2e 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 @@ -20,4 +20,4 @@ Import-Package: org.osgi.framework;version="1.3.0", org.osgi.service.log;version="1.3.0", org.osgi.util.tracker;version="1.3.2" Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZEROCONF”;version:Version=1.1 +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZEROCONF,ecf.discovery.jmdns,ecf.discovery.jmdns.locator,ecf.discovery.jmdns.advertiser”;version:Version=1.1 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 e03a4736f..56742900e 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 @@ -22,4 +22,4 @@ Export-Package: org.eclipse.ecf.internal.provider.jslp;x-friends:="org.eclipse.e org.eclipse.ecf.provider.jslp.container;version="3.0.0", org.eclipse.ecf.provider.jslp.identity;version="3.0.0" Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”SLP”;version:Version=1.1 +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”SLP,JSLP,ecf.discovery.jslp,ecf.discovery.jslp.locator,ecf.discovery.jslp.advertiser”;version:Version=1.1 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 a39a0125d..af1ae366b 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 @@ -30,4 +30,4 @@ Export-Package: org.eclipse.ecf.provider.zookeeper;version="1.0.0", org.eclipse.ecf.provider.zookeeper.util;x-internal:=true Bundle-Vendor: %bundle.provider Bundle-Localization: bundle -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZOOKEEPER”;version:Version=1.1 +Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZOOKEEPER,ecf.discovery.zoodiscovery,ecf.discovery.zoodiscovery.locator,ecf.discovery.zoodiscovery.advertiser”;version:Version=1.1 -- cgit v1.2.3 From 8f6cb46a980adeecc6e68e1fe8d772a4ebbdb860 Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 24 Jan 2014 14:11:34 -0800 Subject: Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=425868 Change-Id: I811b30c3fda2808c276d3998bd982d908713f305 --- .../org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF | 2 +- .../filetransfer/retrieve/AbstractRetrieveFileTransfer.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF index b620e00bf..674f8f6d3 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer;singleton:=true -Bundle-Version: 3.2.0.qualifier +Bundle-Version: 3.2.100.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.Activator Bundle-Vendor: %plugin.provider Bundle-Localization: plugin diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java index 3ecfd66f4..8ae247c2b 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/AbstractRetrieveFileTransfer.java @@ -137,7 +137,7 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans } protected InputStream wrapTransferReadInputStream(InputStream inputStream, IProgressMonitor monitor) { - return new PollingInputStream(remoteFileContents, getRetryAttempts(), monitor, readTimeoutMessage, closeTimeoutMessage); + return new PollingInputStream(inputStream, getRetryAttempts(), monitor, readTimeoutMessage, closeTimeoutMessage); } private int getRetryAttempts() { @@ -165,8 +165,14 @@ public abstract class AbstractRetrieveFileTransfer implements IIncomingFileTrans double factor = (totalWork > Integer.MAX_VALUE) ? (((double) Integer.MAX_VALUE) / ((double) totalWork)) : 1.0; int work = (totalWork > Integer.MAX_VALUE) ? Integer.MAX_VALUE : (int) totalWork; monitor.beginTask(getRemoteFileURL().toString() + Messages.AbstractRetrieveFileTransfer_Progress_Data, work); - InputStream readInputStream = wrapTransferReadInputStream(remoteFileContents, monitor); + InputStream readInputStream = null; try { + // We will test for remoteFileContents is null...if it is null then we can't continue. + // See bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=425868 + if (remoteFileContents == null) + throw new IOException("input stream cannot be null"); //$NON-NLS-1$ + // Create read input stream + readInputStream = wrapTransferReadInputStream(remoteFileContents, monitor); while (!isDone() && !isPaused()) { try { final int bytes = readInputStream.read(buf); -- cgit v1.2.3 From 0e15b8c58c0edb5f18a8c4f94be92dafaedc2c0a Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Tue, 28 Jan 2014 16:38:35 +0100 Subject: bug 426374: Notify IServiceListeners of previously registered services - Register IServiceListener _after_ explicit discovery to reduce likelyhood of seeing the same discovery event twice - Lock TestListener early to not miss discovery events - Wrap discovery events send nested discovery containers in CompositeContainer before listeners are notified - Let TestListener only react to its accompanied unit test (to prevent test failures due to dangling discovery events) Bug-URL: https://bugs.eclipse.org/bugs/show_bug.cgi?id=426374 --- .../AbstractDiscoveryContainerAdapter.java | 47 +++++++++++++----- .../discovery/CompositeDiscoveryContainer.java | 57 ++++++++++++++++++++++ .../discovery/CompositeServiceContainerEvent.java | 10 +++- .../ecf/tests/discovery/AbstractDiscoveryTest.java | 9 +++- .../ecf/tests/discovery/DiscoveryServiceTest.java | 43 ++++++++-------- .../eclipse/ecf/tests/discovery/DiscoveryTest.java | 8 +-- .../discovery/listener/TestServiceListener.java | 10 ++-- .../listener/ThreadTestServiceListener.java | 4 +- .../CompositeDiscoveryServiceContainerTest.java | 3 +- 9 files changed, 147 insertions(+), 44 deletions(-) (limited to 'providers') 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 64d7e7ba5..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 @@ -86,7 +86,6 @@ public abstract class AbstractDiscoveryContainerAdapter extends */ public void addServiceListener(final IServiceListener aListener) { Assert.isNotNull(aListener); - allServiceListeners.add(aListener); if (aListener.triggerDiscovery()) { final IExecutor executor = new ThreadsExecutor(); @@ -96,15 +95,25 @@ public abstract class AbstractDiscoveryContainerAdapter extends for (int i = 0; i < services.length; i++) { final IServiceInfo iServiceInfo = services[i]; - aListener.serviceDiscovered(new ServiceContainerEvent( + 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); + } + /* * (non-Javadoc) * @@ -117,14 +126,6 @@ public abstract class AbstractDiscoveryContainerAdapter extends final IServiceListener aListener) { Assert.isNotNull(aListener); Assert.isNotNull(aType); - synchronized (serviceListeners) { // put-if-absent idiom race condition - Collection v = (Collection) serviceListeners.get(aType); - if (v == null) { - v = Collections.synchronizedSet(new HashSet()); - serviceListeners.put(aType, v); - } - v.add(aListener); - } if (aListener.triggerDiscovery()) { final IExecutor executor = new ThreadsExecutor(); @@ -134,12 +135,36 @@ public abstract class AbstractDiscoveryContainerAdapter extends for (int i = 0; i < services.length; i++) { final IServiceInfo iServiceInfo = services[i]; - aListener.serviceDiscovered(new ServiceContainerEvent( + 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()); + serviceListeners.put(aType, v); + } + v.add(aListener); } } 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 f87fbe90d..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; @@ -200,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() */ @@ -264,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/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/AbstractDiscoveryTest.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/AbstractDiscoveryTest.java index 34db649ff..2c8efb05c 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/AbstractDiscoveryTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/AbstractDiscoveryTest.java @@ -43,12 +43,18 @@ public abstract class AbstractDiscoveryTest extends TestCase { protected IDiscoveryAdvertiser discoveryAdvertiser = null; private String hostname = DiscoveryTestHelper.HOSTNAME; + + private String testId; public AbstractDiscoveryTest(String name) { super(); this.containerUnderTest = name; this.random = new Random(); } + + public String getTestId() { + return testId; + } protected abstract IDiscoveryLocator getDiscoveryLocator(); @@ -99,7 +105,8 @@ public abstract class AbstractDiscoveryTest extends TestCase { assertNotNull(serviceTypeID); final ServiceProperties serviceProperties = new ServiceProperties(props); serviceProperties.setPropertyString(TEST_NAME, getName()); - serviceProperties.setPropertyString(getName() + "testIdentifier", Long.toString(random.nextLong())); + testId = Long.toString(random.nextLong()); + serviceProperties.setPropertyString(getName() + "testIdentifier", testId); serviceProperties.setPropertyString(getName() + "servicePropertiesString", "serviceProperties"); serviceProperties.setProperty(getName() + "servicePropertiesIntegerMax", new Integer(Integer.MIN_VALUE)); serviceProperties.setProperty(getName() + "servicePropertiesIntegerMin", new Integer(Integer.MAX_VALUE)); diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java index 910a97535..650834982 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryServiceTest.java @@ -74,33 +74,38 @@ public abstract class DiscoveryServiceTest extends DiscoveryTest { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); - registerService(); - services = discoveryLocator.getServices(); - assertTrue(eventsToExpect + " services must be registerd at this point " + (services.length > 0 ? "" : services.toString()), services.length == eventsToExpect); - - final ThreadTestServiceListener tsl = new ThreadTestServiceListener(eventsToExpect, discoveryLocator, getName()); - Properties props = new Properties(); - props.put(IDiscoveryLocator.CONTAINER_NAME, containerUnderTest); - BundleContext ctxt = Activator.getDefault().getContext(); - ServiceRegistration registration = ctxt.registerService(IServiceListener.class.getName(), tsl, props); - - IContainerEvent[] event = tsl.getEvent(); - assertEquals("Test listener received unexpected amount of discovery events: \n\t" + Arrays.asList(event), 0, event.length); + final ThreadTestServiceListener tsl = new ThreadTestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); - // IServiceListener#triggerDiscovery should have triggered re-discovery + // OSGi + final Properties props = new Properties(); + props.put(IDiscoveryLocator.CONTAINER_NAME, containerUnderTest); + final BundleContext ctxt = Activator.getDefault().getContext(); + + // Lock the listener first so that we won't miss any discovery event synchronized (tsl) { + + registerService(); + + // Check that services have been registered successfully + services = discoveryLocator.getServices(); + assertTrue(eventsToExpect + " services must be registerd at this point " + (services.length > 0 ? "" : services.toString()), services.length == eventsToExpect); + + // Register listener with OSGi + ServiceRegistration registration = ctxt.registerService(IServiceListener.class.getName(), tsl, props); + + // IServiceListener#triggerDiscovery should have triggered re-discovery // register a service which we expect the test listener to get notified of try { tsl.wait(waitTimeForProvider); } catch (final InterruptedException e) { Thread.currentThread().interrupt(); fail("Some discovery unrelated threading issues?"); + } finally { + registration.unregister(); } } - registration.unregister(); - - event = tsl.getEvent(); + final IContainerEvent[] event = tsl.getEvent(); assertNotNull("Test listener didn't receive any discovery event", event); // Diff the expected ids with what actually has been discovered. The @@ -129,7 +134,7 @@ public abstract class DiscoveryServiceTest extends DiscoveryTest { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); - final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); Properties props = new Properties(); props.put(IDiscoveryLocator.CONTAINER_NAME, containerUnderTest); @@ -151,7 +156,7 @@ public abstract class DiscoveryServiceTest extends DiscoveryTest { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); - final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); IServiceTypeID serviceTypeID = serviceInfo.getServiceID().getServiceTypeID(); Properties props = new Properties(); @@ -179,7 +184,7 @@ public abstract class DiscoveryServiceTest extends DiscoveryTest { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); - final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); Properties props = new Properties(); props.put("org.eclipse.ecf.discovery.services", "*"); diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java index 48705609a..83d63d5f0 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/DiscoveryTest.java @@ -210,7 +210,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); - final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); addServiceListener(tsl); } @@ -223,7 +223,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { IServiceInfo[] services = discoveryLocator.getServices(); assertTrue("No Services must be registerd at this point " + (services.length == 0 ? "" : services[0].toString()), services.length == 0); - final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener tsl = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); discoveryLocator.addServiceListener(serviceInfo.getServiceID().getServiceTypeID(), tsl); addListenerRegisterAndWait(tsl, serviceInfo); discoveryLocator.removeServiceListener(serviceInfo.getServiceID().getServiceTypeID(), tsl); @@ -272,7 +272,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { * @throws ContainerConnectException */ public void testRemoveServiceListenerIServiceListener() throws ContainerConnectException { - final TestServiceListener serviceListener = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener serviceListener = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); addServiceListener(serviceListener); //TODO reregister and verify the listener doesn't receive any events any longer. } @@ -283,7 +283,7 @@ public abstract class DiscoveryTest extends AbstractDiscoveryTest { * @throws ContainerConnectException */ public void testRemoveServiceListenerIServiceTypeIDIServiceListener() throws ContainerConnectException { - final TestServiceListener serviceListener = new TestServiceListener(eventsToExpect, discoveryLocator, getName()); + final TestServiceListener serviceListener = new TestServiceListener(eventsToExpect, discoveryLocator, getName(), getTestId()); addServiceListener(serviceListener); //TODO reregister and verify the listener doesn't receive any events any longer. } diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java index e06945b16..c8aafb17d 100755 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/TestServiceListener.java @@ -15,16 +15,18 @@ import org.eclipse.ecf.core.IContainer; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.discovery.IServiceEvent; import org.eclipse.ecf.discovery.IServiceListener; -import org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest; public class TestServiceListener extends TestListener implements IServiceListener { private final IDiscoveryLocator locator; private final String testName; + private final String testId; - public TestServiceListener(int eventsToExpect, IDiscoveryLocator aLocator, String testName) { + public TestServiceListener(int eventsToExpect, IDiscoveryLocator aLocator, String testName, String testId) { super(eventsToExpect); + Assert.isNotNull(testId); + this.testId = testId; Assert.isNotNull(testName); this.testName = testName; Assert.isNotNull(aLocator); @@ -50,8 +52,8 @@ public class TestServiceListener extends TestListener implements IServiceListene } protected boolean matchesExpected(IServiceEvent anEvent) { - return (testName.equals(anEvent.getServiceInfo().getServiceProperties() - .getProperty(AbstractDiscoveryTest.TEST_NAME))); + return (testId.equals(anEvent.getServiceInfo().getServiceProperties() + .getProperty(testName + "testIdentifier"))); } /* (non-Javadoc) diff --git a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java index 9edb41b82..0380f659e 100644 --- a/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java +++ b/tests/bundles/org.eclipse.ecf.tests.discovery/src/org/eclipse/ecf/tests/discovery/listener/ThreadTestServiceListener.java @@ -28,8 +28,8 @@ public class ThreadTestServiceListener extends TestServiceListener { } public ThreadTestServiceListener(int eventsToExpect, - IDiscoveryLocator aLocator, String testName) { - super(eventsToExpect, aLocator, testName); + IDiscoveryLocator aLocator, String testName, String testId) { + super(eventsToExpect, aLocator, testName, testId); } public void serviceDiscovered(IServiceEvent anEvent) { diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/CompositeDiscoveryServiceContainerTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/CompositeDiscoveryServiceContainerTest.java index ada4ae512..37917c44a 100644 --- a/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/CompositeDiscoveryServiceContainerTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.provider.discovery/src/org/eclipse/ecf/tests/provider/discovery/CompositeDiscoveryServiceContainerTest.java @@ -112,7 +112,8 @@ public class CompositeDiscoveryServiceContainerTest extends final CompositeServiceContainerEvent csce = (CompositeServiceContainerEvent) iContainerEvent; originalIds.add(csce.getOriginalLocalContainerID()); } else { - originalIds.add(iContainerEvent.getLocalContainerID()); + System.err.println("WARNING: Skipping non CompositeServiceContainerEvent in CompositeDiscoveryServiceContainerTest#getContainerIds(IContainerEvent[])"); + //originalIds.add(iContainerEvent.getLocalContainerID()); } } return originalIds; -- cgit v1.2.3 From 68c7939508ec641379cf3e7e7e9c5ccc1796f024 Mon Sep 17 00:00:00 2001 From: slewis Date: Wed, 12 Feb 2014 13:54:19 -0800 Subject: Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=273823 Change-Id: Iab03f17c96c1ab83baaf1ba388ee1aa83074047c --- providers/bundles/org.eclipse.ecf.provider.irc/META-INF/MANIFEST.MF | 2 +- .../eclipse/ecf/internal/provider/irc/container/IRCRootContainer.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'providers') 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) -- cgit v1.2.3 From c726130a6b13282a617c47a27b749344f20cca4a Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 13 Feb 2014 23:22:01 -0800 Subject: Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=392664 Change-Id: I413ece1161d2a7876939aee119b9533151797bf0 --- .../META-INF/MANIFEST.MF | 2 +- .../provider/xmpp/XMPPContainerPresenceHelper.java | 96 ++++++++++++++++------ .../eclipse/ecf/provider/xmpp/identity/XMPPID.java | 11 ++- 3 files changed, 75 insertions(+), 34 deletions(-) (limited to 'providers') 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..c065bd3bd 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 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()); } -- cgit v1.2.3 From 6ae6b566128bc21033751b9a06e1d629a71dc3b2 Mon Sep 17 00:00:00 2001 From: slewis Date: Tue, 4 Mar 2014 20:03:04 -0800 Subject: Fixes for slewis push mistake Change-Id: I0000000000000000000000000000000000000000 --- .../META-INF/MANIFEST.MF | 1 - .../META-INF/MANIFEST.MF | 1 - .../org.eclipse.ecf.examples.provider.remoteservice/META-INF/MANIFEST.MF | 1 - .../bundles/org.eclipse.ecf.remoteservice.rest/META-INF/MANIFEST.MF | 1 - framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF | 1 - .../bundles/org.eclipse.ecf.provider.discovery/META-INF/MANIFEST.MF | 1 - providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 1 - providers/bundles/org.eclipse.ecf.provider.jmdns/META-INF/MANIFEST.MF | 1 - providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF | 1 - providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF | 1 - providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF | 1 - .../bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF | 1 - .../org.eclipse.ecf.provider.xmpp.remoteservice/META-INF/MANIFEST.MF | 1 - .../bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF | 1 - 14 files changed, 14 deletions(-) (limited to 'providers') 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 08dcd0b98..5c6f4be67 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 @@ -18,4 +18,3 @@ Import-Package: com.mycorp.examples.timeservice;version="1.0.0", org.osgi.framework Require-Bundle: org.eclipse.ecf, org.eclipse.equinox.common;bundle-version="3.6.200" -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”com.mycorp.examples.timeservice.rest.consumer”; version:Version=1.1 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 2fd257263..6eae593bd 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 @@ -21,4 +21,3 @@ Import-Package: com.mycorp.examples.timeservice;version="1.0.0", org.osgi.service.http Service-Component: OSGI-INF/httpservicecomponent.xml Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”com.mycorp.examples.timeservice.rest.host”; version:Version=1.1 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 4a6cf694b..644fb4d33 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 @@ -19,4 +19,3 @@ Require-Bundle: org.eclipse.equinox.common;bundle-version="3.6.0" 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 -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.container.example.rs”; version:Version=1.1 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 d96bceece..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 @@ -39,4 +39,3 @@ Require-Bundle: org.eclipse.equinox.common, org.eclipse.ecf.identity Service-Component: META-INF/dspresent.xml Bundle-Localization: plugin -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.rest.client”; version:Version=1.1 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 61b3ba06d..dedeed3eb 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 @@ -39,4 +39,3 @@ Export-Package: org.eclipse.ecf.internal.remoteservice.rpc;x-internal:=true, org.eclipse.ecf.remoteservice.rpc.server Bundle-Localization: plugin DynamicImport-Package: * -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.xmlrpc.client”; version:Version=1.1 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 61f45237b..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 @@ -16,4 +16,3 @@ Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, Bundle-Activator: org.eclipse.ecf.internal.provider.discovery.Activator Export-Package: org.eclipse.ecf.provider.discovery;x-friends:="org.eclipse.ecf.tests.provider.discovery" Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ecf.discovery.composite,ecf.discovery.composite.locator,ecf.discovery.composite.advertiser”;version:Version=1.1 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 9e28666a6..524fdb9ce 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 @@ -24,4 +24,3 @@ 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" Bundle-Localization: plugin -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”DNSSD,ecf.discovery.dnssd.locator,ecf.discovery.dnssd.advertiser”;version:Version=1.1 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 964b0cf2e..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 @@ -20,4 +20,3 @@ Import-Package: org.osgi.framework;version="1.3.0", org.osgi.service.log;version="1.3.0", org.osgi.util.tracker;version="1.3.2" Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZEROCONF,ecf.discovery.jmdns,ecf.discovery.jmdns.locator,ecf.discovery.jmdns.advertiser”;version:Version=1.1 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 56742900e..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 @@ -22,4 +22,3 @@ Export-Package: org.eclipse.ecf.internal.provider.jslp;x-friends:="org.eclipse.e org.eclipse.ecf.provider.jslp.container;version="3.0.0", org.eclipse.ecf.provider.jslp.identity;version="3.0.0" Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”SLP,JSLP,ecf.discovery.jslp,ecf.discovery.jslp.locator,ecf.discovery.jslp.advertiser”;version:Version=1.1 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 d49aa1902..cea0e992b 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 @@ -24,4 +24,3 @@ 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" -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.local”; version:Version=1.1 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 fc90a0380..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 @@ -21,4 +21,3 @@ Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, Bundle-ActivationPolicy: lazy Bundle-Localization: plugin DynamicImport-Package: * -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.r_osgi.peer”; version:Version=1.1 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 9e6a221a0..a278031c5 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 @@ -24,4 +24,3 @@ Import-Package: org.eclipse.core.runtime.jobs, org.osgi.service.log, org.osgi.util.tracker Bundle-ActivationPolicy: lazy -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.generic.server,ecf.generic.client,ecf.generic.ssl.server,ecf.generic.ssl.client”; version:Version=1.1 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 cf40052d2..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 @@ -9,4 +9,3 @@ Bundle-Vendor: %providerName Require-Bundle: org.eclipse.ecf.remoteservice;bundle-version="4.1.0", org.eclipse.ecf.provider.remoteservice Bundle-Localization: plugin -Provide-Capability: osgi.remoteserviceadmin.distribution; configs:List=”ecf.xmpp.smack,ecf.xmpps.smack”; version:Version=1.1 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 af1ae366b..9e36de6d9 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 @@ -30,4 +30,3 @@ Export-Package: org.eclipse.ecf.provider.zookeeper;version="1.0.0", org.eclipse.ecf.provider.zookeeper.util;x-internal:=true Bundle-Vendor: %bundle.provider Bundle-Localization: bundle -Provide-Capability: osgi.remoteserviceadmin.discovery;protocols:List=”ZOOKEEPER,ecf.discovery.zoodiscovery,ecf.discovery.zoodiscovery.locator,ecf.discovery.zoodiscovery.advertiser”;version:Version=1.1 -- cgit v1.2.3 From f261bf7ca9d01ec9af7b4f491cd45d132901557f Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 17:42:32 -0800 Subject: Removed version specification for org.eclipse.equinox.common Change-Id: Ic11883d934ad64ee1791d8b4d9bccdf81dccec2d --- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../org.eclipse.ecf.remoteservice.rest.synd/META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.provider.mqtt.paho/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF | 2 +- providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) (limited to 'providers') 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 644fb4d33..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 @@ -15,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.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.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.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.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.rpc/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF index dedeed3eb..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 @@ -6,7 +6,7 @@ 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: javax.servlet;version="2.6.0", 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/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/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF index 524fdb9ce..61e9bddea 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 @@ -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.local/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF index cea0e992b..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 @@ -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.xmpp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.xmpp/META-INF/MANIFEST.MF index c065bd3bd..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 @@ -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.zookeeper/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.zookeeper/META-INF/MANIFEST.MF index 9e36de6d9..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 @@ -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", -- cgit v1.2.3 From b959ad943939a0696cf5d7c81c250e1846a64101 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 21:00:58 -0800 Subject: Fix for name of NIO Provider bundle Change-Id: Idcbab581c3f99eab2d28c059028558bb5a59dce7 --- .../bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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..3726ad5d7 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 - initial API and implementation ################################################################################ -plugin.name = ECF NIO Datashare Implementation +plugin.name = ECF Datashare NIO Provider plugin.provider = Eclipse.org - ECF -- cgit v1.2.3 From b06cc3d3cdf41d8d093cff29327457f602603627 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 21:04:28 -0800 Subject: Fix for DNSSD provider name Change-Id: I33f830dd177011b5de06dcaa5624cc9f48a5f11e --- providers/bundles/org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'providers') 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 61e9bddea..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.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, -- cgit v1.2.3 From d05eebbcb1c794aa683b10fe44ae8fd7e8351ec7 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 21:05:17 -0800 Subject: Fix for JMDNS discovery provider Change-Id: I840ff1891a2ad4fe5b85e6d337263128aaa8cf60 --- providers/bundles/org.eclipse.ecf.provider.jmdns/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 -- cgit v1.2.3 From 770547280663aa6128fedaf99a2e0563a78946c0 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 21:07:20 -0800 Subject: Fix for r-OSGi provider name Change-Id: I8ed1501eb4c57e0eb37a049dc654e62a5f777c6f --- providers/bundles/org.eclipse.ecf.provider.r_osgi/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 -- cgit v1.2.3 From 7ada31de677b34f4bb3b5312130aab80c0df1a7d Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 21:09:21 -0800 Subject: Fix for XMPP provider remote service fragment name Change-Id: Icdc2c217cacd92ed26cfe8bce79c37f92afd3937 --- .../org.eclipse.ecf.provider.xmpp.remoteservice/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 -- cgit v1.2.3 From ca720448e9559a762e1265d25a2a37ced14556ef Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 21:10:13 -0800 Subject: Fix for XMPP provider datashare fragment name Change-Id: I5e091cdb75339470c1aba09719daf88c81788090 --- .../bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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..b32cb931f 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 -- cgit v1.2.3 From df6ab867e8a559a1f6e8f08ff8be4a443db1a3ef Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 22:52:38 -0800 Subject: Fix for NIO bundle name Change-Id: I7c837c594d33dbfca946c7bfdc357d270ac3d0ba --- .../bundles/org.eclipse.ecf.provider.datashare.nio/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 3726ad5d7..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 - initial API and implementation ################################################################################ -plugin.name = ECF Datashare NIO Provider +plugin.name = ECF DataShare NIO Provider plugin.provider = Eclipse.org - ECF -- cgit v1.2.3 From 64edc1ac17c302275e0a81f2e5f0d879746f1ded Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 22:57:13 -0800 Subject: Fix for datashare provider bundle name Change-Id: Iaa6ba53da48a88e75b6eeb9f70f85f4482ede781 --- providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties index 64b776234..edd033be4 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 DataShare Provider plugin.provider=Eclipse.org - ECF -- cgit v1.2.3 From 068a221c7a38af0683449cf1dc6747d43945e7a5 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 23:03:49 -0800 Subject: Fix for generic provider bundle names Change-Id: I50de5b5dfe21e22207beeb15c6579e3f4b550c42 --- framework/bundles/org.eclipse.ecf.provider/plugin.properties | 2 +- .../bundles/org.eclipse.ecf.provider.remoteservice/plugin.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'providers') 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/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 -- cgit v1.2.3 From 6de588a8a1520b1098a497d14c11a811405be708 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 23:04:52 -0800 Subject: Fix for generic datashare support bundle name Change-Id: I1d203649b1add6f432f4e5fa1a80f72991a1b3f9 --- providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.properties index edd033be4..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 -- cgit v1.2.3 From 1bf86b830720bfed51603237b0777e7c8839809e Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 23:06:01 -0800 Subject: Fix for xmpp datashare support bundle name. Change-Id: Iec882ad6b006cda68143d97b062bc7a54f4dd378 --- .../bundles/org.eclipse.ecf.provider.xmpp.datashare/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 b32cb931f..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 Provider Datashare Support +pluginName = ECF XMPP Provider DataShare Support providerName = Eclipse.org - ECF -- cgit v1.2.3 From 6b621cffbb3b3e345c409b4fbb1258456f4cc0a9 Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 6 Mar 2014 23:06:46 -0800 Subject: Fix for xmpp provider bundle name Change-Id: Ib474b4b08c83bb84ad62dd0b4365893cc53f87e6 --- providers/bundles/org.eclipse.ecf.provider.xmpp/plugin.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 -- cgit v1.2.3 From 57b2df2315db1b837e9bca428debab3af900813c Mon Sep 17 00:00:00 2001 From: slewis Date: Wed, 19 Mar 2014 12:01:00 -0700 Subject: Proposed fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704 for the httpclient4 provider Change-Id: Ia2d218bcb435ba028ab2a1ce08bd6ab15d119929 --- .../META-INF/MANIFEST.MF | 2 +- .../httpclient4/ConnectingSocketMonitor.java | 47 +++++++++++++++++++++- .../httpclient4/HttpClientFileSystemBrowser.java | 26 ++++-------- .../HttpClientRetrieveFileTransfer.java | 13 +----- 4 files changed, 56 insertions(+), 32 deletions(-) (limited to 'providers') 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) { -- cgit v1.2.3 From fccff721935973648b96bd2af6f4d0a2d9b56bae Mon Sep 17 00:00:00 2001 From: slewis Date: Wed, 19 Mar 2014 12:01:34 -0700 Subject: Proposed fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=430704 for the httpclient3 provider Change-Id: I0000000000000000000000000000000000000000 --- .../META-INF/MANIFEST.MF | 2 +- .../httpclient/ConnectingSocketMonitor.java | 47 +++++++++++++++++++++- .../httpclient/HttpClientFileSystemBrowser.java | 12 +----- .../httpclient/HttpClientRetrieveFileTransfer.java | 12 +----- 4 files changed, 48 insertions(+), 25 deletions(-) (limited to 'providers') 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) { -- cgit v1.2.3 From 9e23ad85ca9570473953d4ccf6b409fab084404f Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 23 Mar 2014 12:49:36 -0700 Subject: Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=430963 Change-Id: Ia70f2514f46a863a778257903151e65a50f0624b --- .../ecf/provider/remoteservice/generic/RegistrySharedObject.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'providers') 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) -- cgit v1.2.3 From bd48bc6447c7d6a51e5331db8f54807ea42995f5 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 23 Mar 2014 12:50:46 -0700 Subject: Increment of bundle minor version for https://bugs.eclipse.org/bugs/show_bug.cgi?id=430963 Change-Id: I7439d0bfb51373587bbd7e228b402277a37c2c04 --- .../bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'providers') 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 -- cgit v1.2.3 From 5b5e004b91e6dca670fd3e53594f40bae5b0887c Mon Sep 17 00:00:00 2001 From: slewis Date: Mon, 24 Mar 2014 21:44:24 -0700 Subject: Initial checkin of generic provider java8 remote services support Change-Id: I8e84e824ba6fd122f34e60af1011b8063ea07a09 --- .../.classpath | 7 +++ .../.gitignore | 1 + .../.project | 28 +++++++++ .../.settings/org.eclipse.jdt.core.prefs | 7 +++ .../.settings/org.eclipse.pde.core.prefs | 3 + .../META-INF/MANIFEST.MF | 17 ++++++ .../about.html | 28 +++++++++ .../build.properties | 8 +++ .../plugin.properties | 10 ++++ .../plugin.xml | 40 +++++++++++++ .../java8/J8GenericContainerInstantiator.java | 67 ++++++++++++++++++++++ .../J8RemoteServiceContainerAdapterFactory.java | 58 +++++++++++++++++++ .../java8/J8TCPClientSOContainer.java | 19 ++++++ .../java8/J8TCPServerSOContainer.java | 25 ++++++++ 14 files changed, 318 insertions(+) create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.classpath create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.gitignore create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.project create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.jdt.core.prefs create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/.settings/org.eclipse.pde.core.prefs create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/META-INF/MANIFEST.MF create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/build.properties create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.properties create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8GenericContainerInstantiator.java create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8RemoteServiceContainerAdapterFactory.java create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPClientSOContainer.java create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8TCPServerSOContainer.java (limited to 'providers') 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 @@ + + + + + + + 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 @@ + + + org.eclipse.ecf.provider.remoteservice.java8 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + 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/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html new file mode 100644 index 000000000..4c79781a5 --- /dev/null +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/about.html @@ -0,0 +1,28 @@ + + + + +About + + +

About This Content

+ +

June 25, 2008

+

License

+ +

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at http://www.eclipse.org/legal/epl-v10.html. +For purposes of the EPL, "Program" will mean the Content.

+ +

If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") 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 http://www.eclipse.org.

+ + + \ No newline at end of file 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..3fa1bdf64 --- /dev/null +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + 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..1f6401160 --- /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(TCPCLIENT_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/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 -- cgit v1.2.3 From ea88e73ed7fcf5ecbe7e7e9e004ced274e530417 Mon Sep 17 00:00:00 2001 From: slewis Date: Tue, 25 Mar 2014 16:34:52 -0700 Subject: Initial checkin of ssl generic provider java8 remote services support Change-Id: I0000000000000000000000000000000000000000 --- .../plugin.xml | 35 +++++++++++ .../java8/J8GenericContainerInstantiator.java | 2 +- .../java8/J8SSLClientSOContainer.java | 19 ++++++ .../java8/J8SSLGenericContainerInstantiator.java | 67 ++++++++++++++++++++++ .../java8/J8SSLServerSOContainer.java | 25 ++++++++ 5 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLClientSOContainer.java create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLGenericContainerInstantiator.java create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/J8SSLServerSOContainer.java (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml index 3fa1bdf64..a8e6731fb 100644 --- a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/plugin.xml @@ -19,6 +19,25 @@ hidden="true" name="ecf.generic.client.java8"> + + + + + + @@ -35,6 +54,22 @@ class="org.eclipse.ecf.provider.internal.remoteservice.java8.J8RemoteServiceContainerAdapterFactory"> + + + + + + + + + + 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 index 1f6401160..c5644795a 100644 --- 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 @@ -56,7 +56,7 @@ public class J8GenericContainerInstantiator extends // 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(TCPCLIENT_NAME)) + if (supportedConfigs.contains(JAVA8_SERVER_NAME) || supportedConfigs.contains(JAVA8_CLIENT_NAME)) results.add(JAVA8_CLIENT_NAME); } if (results.size() == 0) 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 -- cgit v1.2.3 From aa9b4b319c5b4e3367a23f6b6f0789ddeb92738c Mon Sep 17 00:00:00 2001 From: slewis Date: Wed, 26 Mar 2014 22:51:41 -0700 Subject: Reused AdapterManagerFactory Change-Id: I93698b040d124ece9d804ad3be921f138d3b41d6 --- .../eclipse/ecf/internal/provider/ProviderPlugin.java | 16 +++++----------- .../ecf/internal/provider/datashare/Activator.java | 13 ++++--------- 2 files changed, 9 insertions(+), 20 deletions(-) (limited to 'providers') diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java index 52099e772..0a388ee69 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java @@ -13,7 +13,8 @@ package org.eclipse.ecf.internal.provider; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocketFactory; -import org.eclipse.core.runtime.*; +import org.eclipse.core.runtime.IAdapterManager; +import org.eclipse.core.runtime.IStatus; import org.eclipse.ecf.core.util.*; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; @@ -36,7 +37,7 @@ public class ProviderPlugin implements BundleActivator { private ServiceTracker logServiceTracker = null; - private ServiceTracker adapterManagerTracker = null; + private AdapterManagerTracker adapterManagerTracker = null; private ServiceTracker sslServerSocketFactoryTracker; private ServiceTracker sslSocketFactoryTracker; @@ -46,17 +47,10 @@ public class ProviderPlugin implements BundleActivator { return null; // First, try to get the adapter manager via if (adapterManagerTracker == null) { - adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null); + adapterManagerTracker = new AdapterManagerTracker(this.context); adapterManagerTracker.open(); } - IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService(); - // Then, if the service isn't there, try to get from Platform class via - // PlatformHelper class - if (adapterManager == null) - adapterManager = PlatformHelper.getPlatformAdapterManager(); - if (adapterManager == null) - getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$ - return adapterManager; + return adapterManagerTracker.getAdapterManager(); } /** diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java index 1c29ebfcf..e2bacf0c4 100644 --- a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java @@ -14,8 +14,8 @@ package org.eclipse.ecf.internal.provider.datashare; import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.core.runtime.IStatus; import org.eclipse.ecf.core.IContainerManager; +import org.eclipse.ecf.core.util.AdapterManagerTracker; import org.eclipse.ecf.core.util.LogHelper; -import org.eclipse.ecf.core.util.PlatformHelper; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.service.log.LogService; @@ -35,7 +35,7 @@ public class Activator implements BundleActivator { private ServiceTracker logServiceTracker = null; - private ServiceTracker adapterManagerTracker = null; + private AdapterManagerTracker adapterManagerTracker = null; private ServiceTracker containerManagerTracker = null; @@ -103,15 +103,10 @@ public class Activator implements BundleActivator { public IAdapterManager getAdapterManager() { // First, try to get the adapter manager via if (adapterManagerTracker == null) { - adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null); + adapterManagerTracker = new AdapterManagerTracker(this.context); adapterManagerTracker.open(); } - IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService(); - // Then, if the service isn't there, try to get from Platform class via - // PlatformHelper class - if (adapterManager == null) - adapterManager = PlatformHelper.getPlatformAdapterManager(); - return adapterManager; + return adapterManagerTracker.getAdapterManager(); } /** -- cgit v1.2.3 From 0c7a3a1287fd45106d8691b1cf61bb5c26a8f953 Mon Sep 17 00:00:00 2001 From: slewis Date: Fri, 28 Mar 2014 23:33:17 -0700 Subject: Added support for generic provider container type registration and adapter factory registration without extension registry for bug 421569 Change-Id: I0000000000000000000000000000000000000000 --- .../org.eclipse.ecf.provider/build.properties | 3 +- .../ecf/internal/provider/ProviderPlugin.java | 16 +++++-- .../internal/provider/remoteservice/Activator.java | 50 ++++++++++++++++++++-- 3 files changed, 60 insertions(+), 9 deletions(-) (limited to 'providers') diff --git a/framework/bundles/org.eclipse.ecf.provider/build.properties b/framework/bundles/org.eclipse.ecf.provider/build.properties index 4203b3f2e..7a0fd6349 100644 --- a/framework/bundles/org.eclipse.ecf.provider/build.properties +++ b/framework/bundles/org.eclipse.ecf.provider/build.properties @@ -12,8 +12,7 @@ bin.includes = .,\ plugin.xml,\ META-INF/,\ about.html,\ - plugin.properties,\ - OSGI-INF/ + plugin.properties src.includes = about.html jars.compile.order = . source.. = src/ diff --git a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java index 0a388ee69..6e7280610 100644 --- a/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java +++ b/framework/bundles/org.eclipse.ecf.provider/src/org/eclipse/ecf/internal/provider/ProviderPlugin.java @@ -13,9 +13,11 @@ package org.eclipse.ecf.internal.provider; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocketFactory; -import org.eclipse.core.runtime.IAdapterManager; -import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.*; +import org.eclipse.ecf.core.ContainerTypeDescription; import org.eclipse.ecf.core.util.*; +import org.eclipse.ecf.provider.generic.GenericContainerInstantiator; +import org.eclipse.ecf.provider.generic.SSLGenericContainerInstantiator; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.service.log.LogService; @@ -64,8 +66,16 @@ public class ProviderPlugin implements BundleActivator { /** * This method is called upon plug-in activation */ - public void start(BundleContext context1) throws Exception { + public void start(final BundleContext context1) throws Exception { this.context = context1; + SafeRunner.run(new ExtensionRegistryRunnable(this.context) { + protected void runWithoutRegistry() throws Exception { + context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(GenericContainerInstantiator.TCPSERVER_NAME, new GenericContainerInstantiator(), "ECF Generic Server", true, false), null); //$NON-NLS-1$ + context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(GenericContainerInstantiator.TCPCLIENT_NAME, new GenericContainerInstantiator(), "ECF Generic Client", false, true), null); //$NON-NLS-1$ + context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(SSLGenericContainerInstantiator.SSLSERVER_NAME, new SSLGenericContainerInstantiator(), "ECF SSL Generic Server", true, false), null); //$NON-NLS-1$ + context1.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(SSLGenericContainerInstantiator.SSLCLIENT_NAME, new SSLGenericContainerInstantiator(), "ECF SSL Generic Client", false, true), null); //$NON-NLS-1$ + } + }); } /** diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java index 1a2531ce3..30a6342e8 100644 --- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/internal/provider/remoteservice/Activator.java @@ -8,9 +8,12 @@ ******************************************************************************/ package org.eclipse.ecf.internal.provider.remoteservice; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.ecf.core.util.LogHelper; -import org.eclipse.ecf.core.util.SystemLogService; +import java.util.*; +import org.eclipse.core.runtime.*; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.*; +import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory; +import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceNamespace; import org.osgi.framework.*; import org.osgi.service.log.LogService; import org.osgi.util.tracker.ServiceTracker; @@ -39,8 +42,39 @@ public class Activator implements BundleActivator { plugin = this; } - public void start(BundleContext ctxt) throws Exception { + private List rscAdapterFactories; + + private static IAdapterManager getAdapterManager(BundleContext ctx) { + AdapterManagerTracker t = new AdapterManagerTracker(ctx); + t.open(); + IAdapterManager am = t.getAdapterManager(); + t.close(); + return am; + } + + public void start(final BundleContext ctxt) throws Exception { this.context = ctxt; + SafeRunner.run(new ExtensionRegistryRunnable(this.context) { + protected void runWithoutRegistry() throws Exception { + ctxt.registerService(Namespace.class, new RemoteServiceNamespace(org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceNamespace.NAME, "Generic remote service namespace"), null); //$NON-NLS-1$ + IAdapterManager am = getAdapterManager(ctxt); + if (am != null) { + rscAdapterFactories = new ArrayList(); + IAdapterFactory af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLServerSOContainer.class); + rscAdapterFactories.add(af); + af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPServerSOContainer.class); + rscAdapterFactories.add(af); + af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLClientSOContainer.class); + rscAdapterFactories.add(af); + af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPClientSOContainer.class); + rscAdapterFactories.add(af); + } + } + }); } public void stop(BundleContext ctxt) throws Exception { @@ -49,6 +83,14 @@ public class Activator implements BundleActivator { logServiceTracker = null; logService = null; } + if (rscAdapterFactories != null) { + IAdapterManager am = getAdapterManager(this.context); + if (am != null) { + for (Iterator i = rscAdapterFactories.iterator(); i.hasNext();) + am.unregisterAdapters((IAdapterFactory) i.next()); + } + rscAdapterFactories = null; + } this.context = null; plugin = null; } -- cgit v1.2.3 From 13dabf26528a07883a2205b9dc67de66d9dec7ec Mon Sep 17 00:00:00 2001 From: slewis Date: Sat, 29 Mar 2014 12:11:28 -0700 Subject: Added no extension registry support to java8 generic provider Change-Id: If2f60e9229b3c58e7756821e20f103b93bca2368 --- .../META-INF/MANIFEST.MF | 5 +- .../internal/remoteservice/java8/Activator.java | 68 ++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java (limited to 'providers') 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 index 5dfaaed49..5f462461f 100644 --- 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 @@ -12,6 +12,9 @@ Require-Bundle: org.eclipse.ecf;bundle-version="3.3.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" + org.osgi.framework;version="1.8.0", + org.osgi.util.tracker;version="1.5.1" Bundle-Localization: plugin +Bundle-ActivationPolicy: lazy +Bundle-Activator: org.eclipse.ecf.provider.internal.remoteservice.java8.Activator diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java new file mode 100644 index 000000000..3da80c269 --- /dev/null +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java @@ -0,0 +1,68 @@ +package org.eclipse.ecf.provider.internal.remoteservice.java8; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.core.runtime.IAdapterManager; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.ecf.core.ContainerTypeDescription; +import org.eclipse.ecf.core.util.AdapterManagerTracker; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; +import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +public class Activator implements BundleActivator { + + private List rscAdapterFactories; + + private static IAdapterManager getAdapterManager(BundleContext ctx) { + AdapterManagerTracker t = new AdapterManagerTracker(ctx); + t.open(); + IAdapterManager am = t.getAdapterManager(); + t.close(); + return am; + } + + @Override + public void start(final BundleContext context) throws Exception { + SafeRunner.run(new ExtensionRegistryRunnable(context) { + protected void runWithoutRegistry() throws Exception { + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_SERVER_NAME, new J8GenericContainerInstantiator(), "ECF Generic Server", true, false), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Generic Client", false, true), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF SSL Generic Server", true, false), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF SSL Generic Client", false, true), null); //$NON-NLS-1$ + IAdapterManager am = getAdapterManager(context); + if (am != null) { + rscAdapterFactories = new ArrayList(); + IAdapterFactory af = new J8RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, J8SSLServerSOContainer.class); + rscAdapterFactories.add(af); + af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, J8TCPServerSOContainer.class); + rscAdapterFactories.add(af); + af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, J8SSLClientSOContainer.class); + rscAdapterFactories.add(af); + af = new RemoteServiceContainerAdapterFactory(); + am.registerAdapters(af, J8TCPClientSOContainer.class); + rscAdapterFactories.add(af); + } + } + }); + + } + + @Override + public void stop(BundleContext context) throws Exception { + if (rscAdapterFactories != null) { + IAdapterManager am = getAdapterManager(context); + if (am != null) { + for (IAdapterFactory af : rscAdapterFactories) + am.unregisterAdapters(af); + } + } + } + +} -- cgit v1.2.3 From c2c021a2c39100409ec8322172f87657487750e0 Mon Sep 17 00:00:00 2001 From: slewis Date: Sat, 29 Mar 2014 14:58:53 -0700 Subject: Update discovery api and jmdns discovery provider to be usable without extension registry per bug 421569 Change-Id: I02dc9a9659606b1803255369371e8e98bd78249f --- .../ecf/internal/discovery/DiscoveryNamespace.java | 8 ++++ .../ecf/internal/discovery/DiscoveryPlugin.java | 46 ++++++++++++---------- .../META-INF/MANIFEST.MF | 2 +- .../ecf/internal/provider/jmdns/JMDNSPlugin.java | 26 +++++++----- .../jmdns/container/ContainerInstantiator.java | 16 +++++++- .../provider/jmdns/identity/JMDNSNamespace.java | 11 ++++++ 6 files changed, 76 insertions(+), 33 deletions(-) (limited to 'providers') diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java index 258de6c17..264c95401 100644 --- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java +++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryNamespace.java @@ -20,6 +20,14 @@ public class DiscoveryNamespace extends Namespace { private static final long serialVersionUID = 6474091408790223505L; public static final String NAME = "ecf.namespace.discovery"; //$NON-NLS-1$ + public DiscoveryNamespace() { + super(); + } + + public DiscoveryNamespace(String description) { + super(NAME, description); + } + /* * (non-Javadoc) * diff --git a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java index 5cead024a..c6ff207c0 100644 --- a/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java +++ b/framework/bundles/org.eclipse.ecf.discovery/src/org/eclipse/ecf/internal/discovery/DiscoveryPlugin.java @@ -10,8 +10,8 @@ package org.eclipse.ecf.internal.discovery; import org.eclipse.core.runtime.*; -import org.eclipse.ecf.core.util.LogHelper; -import org.eclipse.ecf.core.util.PlatformHelper; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.*; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.service.log.LogService; @@ -29,7 +29,7 @@ public class DiscoveryPlugin implements BundleActivator { private BundleContext context; - private ServiceTracker adapterManagerTracker; + private AdapterManagerTracker adapterManagerTracker; private ServiceTracker logServiceTracker = null; /** @@ -43,22 +43,16 @@ public class DiscoveryPlugin implements BundleActivator { public IAdapterManager getAdapterManager() { // First, try to get the adapter manager via if (adapterManagerTracker == null) { - adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null); + adapterManagerTracker = new AdapterManagerTracker(this.context); adapterManagerTracker.open(); } - IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService(); - // Then, if the service isn't there, try to get from Platform class via - // PlatformHelper class - if (adapterManager == null) - adapterManager = PlatformHelper.getPlatformAdapterManager(); - if (adapterManager == null) - getDefault().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "Cannot get adapter manager", null)); //$NON-NLS-1$ - return adapterManager; + return adapterManagerTracker.getAdapterManager(); } public LogService getLogService() { if (logServiceTracker == null) { - logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null); + logServiceTracker = new ServiceTracker(this.context, + LogService.class.getName(), null); logServiceTracker.open(); } return (LogService) logServiceTracker.getService(); @@ -67,23 +61,34 @@ public class DiscoveryPlugin implements BundleActivator { public void log(IStatus status) { LogService logService = getLogService(); if (logService != null) { - logService.log(LogHelper.getLogCode(status), LogHelper.getLogMessage(status), status.getException()); + logService.log(LogHelper.getLogCode(status), + LogHelper.getLogMessage(status), status.getException()); } } /** * This method is called upon plug-in activation - * @param ctxt the bundle context - * @throws Exception + * + * @param ctxt + * the bundle context + * @throws Exception */ - public void start(BundleContext ctxt) throws Exception { + public void start(final BundleContext ctxt) throws Exception { this.context = ctxt; + SafeRunner.run(new ExtensionRegistryRunnable(this.context) { + protected void runWithoutRegistry() throws Exception { + ctxt.registerService(Namespace.class, new DiscoveryNamespace( + "Discovery Namespace"), null); + } + }); } /** * This method is called when the plug-in is stopped - * @param ctxt the bundle context - * @throws Exception + * + * @param ctxt + * the bundle context + * @throws Exception */ public void stop(BundleContext ctxt) throws Exception { if (logServiceTracker != null) { @@ -100,6 +105,7 @@ public class DiscoveryPlugin implements BundleActivator { /** * Returns the shared instance. + * * @return default discovery plugin instance. */ public synchronized static DiscoveryPlugin getDefault() { @@ -112,7 +118,7 @@ public class DiscoveryPlugin implements BundleActivator { public static boolean isStopped() { return plugin == null; } - + public BundleContext getBundleContext() { return context; } 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 c08179f25..9e1d8fd86 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.2.0.qualifier +Bundle-Version: 4.3.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/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java index 620ccbd69..0a1b56a84 100644 --- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java +++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/internal/provider/jmdns/JMDNSPlugin.java @@ -12,14 +12,17 @@ package org.eclipse.ecf.internal.provider.jmdns; import java.util.Properties; import org.eclipse.core.runtime.IAdapterManager; -import org.eclipse.ecf.core.ContainerConnectException; -import org.eclipse.ecf.core.IContainer; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.ecf.core.*; import org.eclipse.ecf.core.identity.IDCreateException; +import org.eclipse.ecf.core.identity.Namespace; import org.eclipse.ecf.core.util.*; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.discovery.service.IDiscoveryService; +import org.eclipse.ecf.provider.jmdns.container.ContainerInstantiator; import org.eclipse.ecf.provider.jmdns.container.JMDNSDiscoveryContainer; +import org.eclipse.ecf.provider.jmdns.identity.JMDNSNamespace; import org.osgi.framework.*; import org.osgi.service.log.LogService; import org.osgi.util.tracker.ServiceTracker; @@ -45,7 +48,7 @@ public class JMDNSPlugin implements BundleActivator { plugin = this; } - private ServiceTracker adapterManagerTracker = null; + private AdapterManagerTracker adapterManagerTracker = null; private ServiceRegistration serviceRegistration; @@ -56,15 +59,10 @@ public class JMDNSPlugin implements BundleActivator { public IAdapterManager getAdapterManager() { // First, try to get the adapter manager via if (adapterManagerTracker == null) { - adapterManagerTracker = new ServiceTracker(this.context, IAdapterManager.class.getName(), null); + adapterManagerTracker = new AdapterManagerTracker(this.context); adapterManagerTracker.open(); } - IAdapterManager adapterManager = (IAdapterManager) adapterManagerTracker.getService(); - // Then, if the service isn't there, try to get from Platform class via - // PlatformHelper class - if (adapterManager == null) - adapterManager = PlatformHelper.getPlatformAdapterManager(); - return adapterManager; + return adapterManagerTracker.getAdapterManager(); } /** @@ -78,6 +76,14 @@ public class JMDNSPlugin implements BundleActivator { props.put(Constants.SERVICE_RANKING, new Integer(750)); String[] clazzes = new String[] {IDiscoveryService.class.getName(), IDiscoveryLocator.class.getName(), IDiscoveryAdvertiser.class.getName()}; serviceRegistration = context.registerService(clazzes, serviceFactory, props); + SafeRunner.run(new ExtensionRegistryRunnable(ctxt) { + protected void runWithoutRegistry() throws Exception { + ctxt.registerService(Namespace.class, new JMDNSNamespace("JMDNS Discovery Namespace"), null); + ctxt.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(ContainerInstantiator.JMDNS_CONTAINER_NAME, new ContainerInstantiator(), "JMDNS Discovery Container", true, false), null); + ctxt.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(ContainerInstantiator.JMDNS_LOCATOR_NAME, new ContainerInstantiator(), "JMDNS Discovery Locator"), null); + ctxt.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(ContainerInstantiator.JMDNS_ADVERTISER_NAME, new ContainerInstantiator(), "JMDNS Discovery Advertiser"), null); + } + }); } private final DiscoveryServiceFactory serviceFactory = new DiscoveryServiceFactory(); diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java index 6fc8b3ce3..1fb03aa82 100644 --- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java +++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/ContainerInstantiator.java @@ -17,13 +17,25 @@ import org.eclipse.ecf.discovery.IDiscoveryContainerAdapter; public class ContainerInstantiator implements IContainerInstantiator { + /** + * @since 4.3 + */ + public static final String JMDNS_CONTAINER_NAME = "ecf.container.jmdns"; + /** + * @since 4.3 + */ + public static final String JMDNS_LOCATOR_NAME = "ecf.container.jmdns.locator"; + /** + * @since 4.3 + */ + public static final String JMDNS_ADVERTISER_NAME = "ecf.container.jmdns.advertiser"; + /* (non-Javadoc) * @see org.eclipse.ecf.core.provider.IContainerInstantiator#createInstance(org.eclipse.ecf.core.ContainerTypeDescription, java.lang.Object[]) */ public IContainer createInstance(final ContainerTypeDescription description, final Object[] args) throws ContainerCreateException { try { - final AbstractContainer container = new JMDNSDiscoveryContainer(); - return container; + return new JMDNSDiscoveryContainer(); } catch (final IDCreateException e) { final ContainerCreateException excep = new ContainerCreateException("Jmdns container create failed", e); //$NON-NLS-1$ excep.setStackTrace(e.getStackTrace()); diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java index 5c2691495..ac6a046fa 100644 --- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/identity/JMDNSNamespace.java @@ -23,6 +23,17 @@ public class JMDNSNamespace extends Namespace { public static final String NAME = "ecf.namespace.jmdns"; //$NON-NLS-1$ + public JMDNSNamespace() { + super(); + } + + /** + * @since 4.3 + */ + public JMDNSNamespace(String description) { + super(NAME, description); + } + private String getInitFromExternalForm(final Object[] args) { if (args == null || args.length < 1 || args[0] == null) return null; -- cgit v1.2.3 From 9b1e192c7ef5ebf007b403d843bd2f71b4a6d7b4 Mon Sep 17 00:00:00 2001 From: slewis Date: Sat, 29 Mar 2014 18:36:49 -0700 Subject: Updates to support r_osgi provider working without equinox extension registry as per bug 421569 Change-Id: If6102913c94f46279ee56abd028a670aff7a1f51 --- .../org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF | 2 +- .../org/eclipse/ecf/internal/provider/r_osgi/Activator.java | 13 +++++++++++++ .../provider/r_osgi/R_OSGiContainerInstantiator.java | 1 + .../r_osgi/identity/R_OSGiRemoteServiceNamespace.java | 4 ++++ 4 files changed, 19 insertions(+), 1 deletion(-) (limited to 'providers') 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 2b40780f9..b0a7c8973 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.3.0.qualifier +Bundle-Version: 3.4.0.qualifier Import-Package: org.eclipse.ecf.core.util.reflection, org.eclipse.equinox.concurrent.future;version="1.0.0", org.osgi.framework;version="1.3.0", diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java index e5d33c2bb..216b2fcad 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/Activator.java @@ -12,6 +12,12 @@ package org.eclipse.ecf.internal.provider.r_osgi; import ch.ethz.iks.r_osgi.RemoteOSGiService; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.ecf.core.ContainerTypeDescription; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; +import org.eclipse.ecf.provider.r_osgi.identity.R_OSGiNamespace; +import org.eclipse.ecf.provider.r_osgi.identity.R_OSGiRemoteServiceNamespace; import org.eclipse.equinox.concurrent.future.IExecutor; import org.osgi.framework.*; import org.osgi.util.tracker.ServiceTracker; @@ -64,6 +70,13 @@ public final class Activator implements BundleActivator { this.context = bc; r_osgi_tracker = new ServiceTracker(context, RemoteOSGiService.class.getName(), null); r_osgi_tracker.open(); + SafeRunner.run(new ExtensionRegistryRunnable(bc) { + protected void runWithoutRegistry() throws Exception { + bc.registerService(Namespace.class, new R_OSGiNamespace(), null); + bc.registerService(Namespace.class, new R_OSGiRemoteServiceNamespace(), null); + bc.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(R_OSGiContainerInstantiator.NAME, new R_OSGiContainerInstantiator(), "R_OSGi Container", true, false), null); //$NON-NLS-1$ + } + }); } /** diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java index db3bd9eaa..4e88fd40f 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiContainerInstantiator.java @@ -104,6 +104,7 @@ public final class R_OSGiContainerInstantiator implements IContainerInstantiator } private static final String ROSGI_CONFIG = "ecf.r_osgi.peer"; //$NON-NLS-1$ + public static final String NAME = ROSGI_CONFIG; private static final String[] ROSGI_CONFIGS = new String[] {ROSGI_CONFIG}; diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java index ac1ff8569..db8983bec 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/provider/r_osgi/identity/R_OSGiRemoteServiceNamespace.java @@ -23,6 +23,10 @@ public class R_OSGiRemoteServiceNamespace extends Namespace { public static final String NAME = "ecf.namespace.r_osgi.remoteservice"; //$NON-NLS-1$ + public R_OSGiRemoteServiceNamespace() { + super(NAME, "R_OSGi Remote Service Namespace"); //$NON-NLS-1$ + } + public ID createInstance(Object[] parameters) throws IDCreateException { if (parameters == null || parameters.length != 2) throw new IDCreateException("Parameters incorrect for remote ID creation"); //$NON-NLS-1$ -- cgit v1.2.3 From 286a091c369ece5625101e5cbb7eabe1e7a7e9c2 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 12:30:03 -0700 Subject: Fix for java8 generic provider to allow for not using registry as per bug 421569 Change-Id: Ia9ee62256a5d1ffbf39423f45f7cc9f4ae26795e --- .../ecf/provider/internal/remoteservice/java8/Activator.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java index 3da80c269..ba64b4865 100644 --- a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java @@ -29,10 +29,10 @@ public class Activator implements BundleActivator { public void start(final BundleContext context) throws Exception { SafeRunner.run(new ExtensionRegistryRunnable(context) { protected void runWithoutRegistry() throws Exception { - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_SERVER_NAME, new J8GenericContainerInstantiator(), "ECF Generic Server", true, false), null); //$NON-NLS-1$ - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Generic Client", false, true), null); //$NON-NLS-1$ - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF SSL Generic Server", true, false), null); //$NON-NLS-1$ - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF SSL Generic Client", false, true), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_SERVER_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Server", true, false), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Client", false, true), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Server", true, false), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Client", false, true), null); //$NON-NLS-1$ IAdapterManager am = getAdapterManager(context); if (am != null) { rscAdapterFactories = new ArrayList(); -- cgit v1.2.3 From a3f70fb5838739de3f6792d16e34aa2739f1a038 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 14:29:34 -0700 Subject: Fix for generic java8 provider for bug 421569 Change-Id: Icd8a18e54c7bc417897e1f1a696af32b3b7d3425 --- .../ecf/provider/internal/remoteservice/java8/Activator.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java index ba64b4865..5645cb39e 100644 --- a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java @@ -30,22 +30,22 @@ public class Activator implements BundleActivator { SafeRunner.run(new ExtensionRegistryRunnable(context) { protected void runWithoutRegistry() throws Exception { context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_SERVER_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Server", true, false), null); //$NON-NLS-1$ - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Client", false, true), null); //$NON-NLS-1$ - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Server", true, false), null); //$NON-NLS-1$ - context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Client", false, true), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8GenericContainerInstantiator.JAVA8_CLIENT_NAME, new J8GenericContainerInstantiator(), "ECF Java8 Generic Client", false, false), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_CLIENT_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Client", false, false), null); //$NON-NLS-1$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(J8SSLGenericContainerInstantiator.JAVA8_SSL_SERVER_NAME, new J8SSLGenericContainerInstantiator(), "ECF Java8 SSL Generic Server", true, false), null); //$NON-NLS-1$ IAdapterManager am = getAdapterManager(context); if (am != null) { rscAdapterFactories = new ArrayList(); IAdapterFactory af = new J8RemoteServiceContainerAdapterFactory(); am.registerAdapters(af, J8SSLServerSOContainer.class); rscAdapterFactories.add(af); - af = new RemoteServiceContainerAdapterFactory(); + af = new J8RemoteServiceContainerAdapterFactory(); am.registerAdapters(af, J8TCPServerSOContainer.class); rscAdapterFactories.add(af); - af = new RemoteServiceContainerAdapterFactory(); + af = new J8RemoteServiceContainerAdapterFactory(); am.registerAdapters(af, J8SSLClientSOContainer.class); rscAdapterFactories.add(af); - af = new RemoteServiceContainerAdapterFactory(); + af = new J8RemoteServiceContainerAdapterFactory(); am.registerAdapters(af, J8TCPClientSOContainer.class); rscAdapterFactories.add(af); } -- cgit v1.2.3 From 7fba5ac802f0be0f3a5e9c7d7599b609f0a01915 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 14:30:30 -0700 Subject: Fix for generic java8 provider for bug 421569 Change-Id: I0000000000000000000000000000000000000000 --- .../org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java | 1 - 1 file changed, 1 deletion(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java index 5645cb39e..4791bf408 100644 --- a/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice.java8/src/org/eclipse/ecf/provider/internal/remoteservice/java8/Activator.java @@ -9,7 +9,6 @@ import org.eclipse.core.runtime.SafeRunner; import org.eclipse.ecf.core.ContainerTypeDescription; import org.eclipse.ecf.core.util.AdapterManagerTracker; import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; -import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; -- cgit v1.2.3 From c690aba14eb31e4fe085b0c6b80db497ad7bdbb8 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 20:21:48 -0700 Subject: Additions to convert datashare provider to allow no registry bug 421569 Change-Id: Ia7f7558210a4b886e5b6d9836673d5369df32d8f --- .../META-INF/MANIFEST.MF | 2 +- .../org.eclipse.ecf.provider.datashare/plugin.xml | 18 +++++++++++++ .../ecf/internal/provider/datashare/Activator.java | 31 ++++++++++++++++++---- 3 files changed, 45 insertions(+), 6 deletions(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF index 04cb9629d..c0c72691e 100644 --- a/providers/bundles/org.eclipse.ecf.provider.datashare/META-INF/MANIFEST.MF +++ b/providers/bundles/org.eclipse.ecf.provider.datashare/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.datashare;singleton:=true -Bundle-Version: 1.4.100.qualifier +Bundle-Version: 1.5.0.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.datashare.Activator Bundle-Vendor: %plugin.provider Bundle-Localization: plugin diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml index bf74e668b..38cd24e8c 100644 --- a/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml +++ b/providers/bundles/org.eclipse.ecf.provider.datashare/plugin.xml @@ -18,5 +18,23 @@ + + + + + + + + + + + + diff --git a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java index e2bacf0c4..035178190 100644 --- a/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.datashare/src/org/eclipse/ecf/internal/provider/datashare/Activator.java @@ -11,11 +11,11 @@ package org.eclipse.ecf.internal.provider.datashare; -import org.eclipse.core.runtime.IAdapterManager; -import org.eclipse.core.runtime.IStatus; +import java.util.List; +import org.eclipse.core.runtime.*; import org.eclipse.ecf.core.IContainerManager; -import org.eclipse.ecf.core.util.AdapterManagerTracker; -import org.eclipse.ecf.core.util.LogHelper; +import org.eclipse.ecf.core.util.*; +import org.eclipse.ecf.provider.datashare.DatashareContainerAdapterFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.service.log.LogService; @@ -61,11 +61,32 @@ public class Activator implements BundleActivator { } } + List rscAdapterFactories; + /** * This method is called upon plug-in activation */ - public void start(BundleContext ctxt) throws Exception { + public void start(final BundleContext ctxt) throws Exception { this.context = ctxt; + SafeRunner.run(new ExtensionRegistryRunnable(ctxt) { + protected void runWithoutRegistry() throws Exception { + IAdapterManager am = getAdapterManager(); + if (am != null) { + IAdapterFactory af = new DatashareContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLServerSOContainer.class); + rscAdapterFactories.add(af); + af = new DatashareContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPServerSOContainer.class); + rscAdapterFactories.add(af); + af = new DatashareContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.SSLClientSOContainer.class); + rscAdapterFactories.add(af); + af = new DatashareContainerAdapterFactory(); + am.registerAdapters(af, org.eclipse.ecf.provider.generic.TCPClientSOContainer.class); + rscAdapterFactories.add(af); + } + } + }); } /** -- cgit v1.2.3 From 387d3378fe26db656d3ccbf3f23318a1b7ef988d Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 20:40:34 -0700 Subject: Additions to allow org.eclipse.ecf.provider.discovery to be usable without extension registry bug 421569 Change-Id: I771e198fe86974f84da0ef536cabb81673a68b32 --- .../ecf/internal/provider/discovery/Activator.java | 18 +++++++++++++++++- .../provider/discovery/CompositeNamespace.java | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java index 829b484c1..ced3201c6 100644 --- a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/Activator.java @@ -12,12 +12,16 @@ package org.eclipse.ecf.internal.provider.discovery; import java.util.HashSet; import java.util.Properties; +import org.eclipse.core.runtime.SafeRunner; import org.eclipse.ecf.core.ContainerConnectException; +import org.eclipse.ecf.core.ContainerTypeDescription; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; import org.eclipse.ecf.core.util.Trace; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.discovery.service.IDiscoveryService; -import org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer; +import org.eclipse.ecf.provider.discovery.*; import org.osgi.framework.*; import org.osgi.util.tracker.ServiceTracker; @@ -47,6 +51,17 @@ public class Activator implements BundleActivator { * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext) */ public void start(final BundleContext context) throws Exception { + + SafeRunner.run(new ExtensionRegistryRunnable(context) { + protected void runWithoutRegistry() throws Exception { + context.registerService(Namespace.class, new CompositeNamespace(), null); + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.composite", new CompositeDiscoveryContainerInstantiator(), "Composite Discovery Container", true, false), null); //$NON-NLS-1$ //$NON-NLS-2$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.singleton.discovery", new SingletonDiscoveryContainerInstantiator(), "Composite Discovery Container Locator", true, false), null); //$NON-NLS-1$ //$NON-NLS-2$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.composite.locator", new CompositeDiscoveryContainerInstantiator(), "Composite Discovery Container Locator"), null); //$NON-NLS-1$ //$NON-NLS-2$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.composite.advertiser", new CompositeDiscoveryContainerInstantiator(), "Composite Discovery Container Advertiser"), null); //$NON-NLS-1$ //$NON-NLS-2$ + } + }); + final Properties props = new Properties(); props.put(IDiscoveryLocator.CONTAINER_NAME, CompositeDiscoveryContainer.NAME); props.put(Constants.SERVICE_RANKING, new Integer(1000)); @@ -119,6 +134,7 @@ public class Activator implements BundleActivator { ((CompositeDiscoveryContainer) service).dispose(); } }, props); + } /* diff --git a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java index e37e23168..5ffc44e04 100644 --- a/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.discovery/src/org/eclipse/ecf/internal/provider/discovery/CompositeNamespace.java @@ -20,6 +20,10 @@ public class CompositeNamespace extends Namespace { private static final long serialVersionUID = -4774766051014928510L; public static final String NAME = "ecf.namespace.composite"; //$NON-NLS-1$ + public CompositeNamespace() { + super(NAME, "Composite Namespace"); //$NON-NLS-1$ + } + /* (non-Javadoc) * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[]) */ -- cgit v1.2.3 From 4e613370ac1e29572d1c7f597de1adc701efcbbb Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 20:50:56 -0700 Subject: Additions to allow org.eclipse.ecf.provider.dnssd to be used without extension registry bug 421569 Change-Id: Iee2d9793b10eee155535cedb4da1f848db6739f2 --- .../org.eclipse.ecf.provider.dnssd/META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.provider.dnssd/plugin.xml | 4 ++-- .../src/org/eclipse/ecf/provider/dnssd/Activator.java | 14 +++++++++++++- .../src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java | 4 ++++ 4 files changed, 20 insertions(+), 4 deletions(-) (limited to 'providers') 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 f5b132cb8..2b7a86804 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 @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.ecf.provider.dnssd;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-Activator: org.eclipse.ecf.provider.dnssd.Activator Bundle-Vendor: %pluginProvider Bundle-RequiredExecutionEnvironment: J2SE-1.4 diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml index a93033e6b..43aac56d7 100644 --- a/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml +++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/plugin.xml @@ -5,7 +5,7 @@ point="org.eclipse.ecf.containerFactory"> @@ -13,7 +13,7 @@ point="org.eclipse.ecf.containerFactory"> diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java index b60c52fbb..d5471c4e5 100644 --- a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/Activator.java @@ -16,8 +16,12 @@ import java.util.Iterator; import java.util.Map; import java.util.Properties; +import org.eclipse.core.runtime.SafeRunner; import org.eclipse.ecf.core.ContainerConnectException; +import org.eclipse.ecf.core.ContainerTypeDescription; import org.eclipse.ecf.core.IContainer; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.osgi.framework.Bundle; @@ -46,9 +50,17 @@ public class Activator implements BundleActivator { * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ - public void start(BundleContext context) throws Exception { + public void start(final BundleContext context) throws Exception { this.context = context; + SafeRunner.run(new ExtensionRegistryRunnable(context) { + protected void runWithoutRegistry() throws Exception { + context.registerService(Namespace.class, new DnsSdNamespace(), null); + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(DISCOVERY_CONTAINER_NAME_VALUE + LOCATOR,new ContainerInstantiator(),"Discovery Locator Container"), null); + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription(DISCOVERY_CONTAINER_NAME_VALUE + ADVERTISER,new ContainerInstantiator(),"Discovery Advertiser Container"), null); + } + }); + // register a managed factory for the locator service final Properties locCmProps = new Properties(); locCmProps.put(Constants.SERVICE_PID, DISCOVERY_CONTAINER_NAME_VALUE + LOCATOR); diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java index 57bb9a9ef..7c1c2ac41 100644 --- a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdNamespace.java @@ -26,6 +26,10 @@ public class DnsSdNamespace extends Namespace { public static final String SCHEME = "dnssd"; //$NON-NLS-1$ public static final String NAME = "ecf.namespace.dnssd"; //$NON-NLS-1$ + public DnsSdNamespace() { + super(NAME,"Dns SD Namespace"); + } + /* (non-Javadoc) * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[]) */ -- cgit v1.2.3 From dc21fceea68dac3130698ca8fdb74431953d030a Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 21:02:11 -0700 Subject: Additions to allow org.eclipse.ecf.provider.jslp to be used without extension registry bug 421569 Change-Id: I0000000000000000000000000000000000000000 --- .../org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF | 2 +- .../eclipse/ecf/internal/provider/jslp/Activator.java | 17 +++++++++++++++-- .../ecf/provider/jslp/identity/JSLPNamespace.java | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) (limited to 'providers') 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 2d62d7871..f8b5eb56a 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.1.0.qualifier +Bundle-Version: 3.2.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.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java index 3a09c540b..49917c798 100644 --- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java @@ -13,13 +13,17 @@ package org.eclipse.ecf.internal.provider.jslp; import ch.ethz.iks.slp.Advertiser; import ch.ethz.iks.slp.Locator; import java.util.Properties; -import org.eclipse.ecf.core.ContainerConnectException; -import org.eclipse.ecf.core.IContainer; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.ecf.core.*; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; import org.eclipse.ecf.core.util.Trace; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.discovery.service.IDiscoveryService; +import org.eclipse.ecf.provider.jslp.container.ContainerInstantiator; import org.eclipse.ecf.provider.jslp.container.JSLPDiscoveryContainer; +import org.eclipse.ecf.provider.jslp.identity.JSLPNamespace; import org.osgi.framework.*; import org.osgi.util.tracker.ServiceTracker; @@ -82,6 +86,15 @@ public class Activator implements BundleActivator { public void start(final BundleContext context) throws Exception { bundleContext = context; + SafeRunner.run(new ExtensionRegistryRunnable(context) { + protected void runWithoutRegistry() throws Exception { + context.registerService(Namespace.class, new JSLPNamespace(), null); + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.jslp", new ContainerInstantiator(), "JSLP Discovery Container", true, false), null); //$NON-NLS-1$//$NON-NLS-2$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.jslp.locator", new ContainerInstantiator(), "JSLP Discovery Locator Container", true, false), null); //$NON-NLS-1$//$NON-NLS-2$ + context.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.discovery.jslp.advertiser", new ContainerInstantiator(), "JSLP Discovery Advertiser Container", true, false), null); //$NON-NLS-1$//$NON-NLS-2$ + } + }); + // initially get the locator and add a life cycle listener locatorSt = new ServiceTracker(context, Locator.class.getName(), null); diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java index e0d45cc7e..505831d92 100644 --- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java @@ -23,6 +23,10 @@ public class JSLPNamespace extends Namespace { public static final String NAME = "ecf.namespace.slp"; //$NON-NLS-1$ + public JSLPNamespace() { + super(NAME, "JSLP Namespace"); //$NON-NLS-1$ + } + /* (non-Javadoc) * @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[]) */ -- cgit v1.2.3 From b4d560fd891d1fe327910f53f7fcb9534885d9b3 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 21:08:54 -0700 Subject: Additions to allow org.eclipse.ecf.provider.local to be used without extension registry bug 421569 Change-Id: I0000000000000000000000000000000000000000 --- .../org.eclipse.ecf.provider.local/META-INF/MANIFEST.MF | 2 +- .../eclipse/ecf/internal/provider/local/Activator.java | 15 ++++++++++++++- .../ecf/provider/local/identity/LocalNamespace.java | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) (limited to 'providers') 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 060762c01..7aaddeb01 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.2.0.qualifier +Bundle-Version: 1.3.0.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.local.Activator Bundle-Vendor: Eclipse.org - ECF Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, diff --git a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java index 5add95bcd..40c0f7b8b 100644 --- a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/internal/provider/local/Activator.java @@ -1,5 +1,11 @@ package org.eclipse.ecf.internal.provider.local; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.ecf.core.ContainerTypeDescription; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; +import org.eclipse.ecf.internal.provider.local.container.LocalRemoteServiceContainerInstantiator; +import org.eclipse.ecf.provider.local.identity.LocalNamespace; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; @@ -15,8 +21,15 @@ public class Activator implements BundleActivator { * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ - public void start(BundleContext bundleContext) throws Exception { + public void start(final BundleContext bundleContext) throws Exception { Activator.context = bundleContext; + + SafeRunner.run(new ExtensionRegistryRunnable(bundleContext) { + protected void runWithoutRegistry() throws Exception { + bundleContext.registerService(Namespace.class, new LocalNamespace(), null); + bundleContext.registerService(ContainerTypeDescription.class, new ContainerTypeDescription("ecf.local", new LocalRemoteServiceContainerInstantiator(), "Local Container Instantiator", false, false), null); //$NON-NLS-1$//$NON-NLS-2$ + } + }); } /* diff --git a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java index cc4cdfa48..58355279c 100644 --- a/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.local/src/org/eclipse/ecf/provider/local/identity/LocalNamespace.java @@ -19,6 +19,10 @@ public class LocalNamespace extends Namespace { public static final String NAME = "ecf.namespace.local"; //$NON-NLS-1$ public static final String SCHEME = "local"; //$NON-NLS-1$ + public LocalNamespace() { + super(NAME, "Local Namespace"); //$NON-NLS-1$ + } + public ID createInstance(Object[] parameters) throws IDCreateException { try { final String init = getInitStringFromExternalForm(parameters); -- cgit v1.2.3 From 8156bccb78e28630dd6098df2ecb394f2cdeb407 Mon Sep 17 00:00:00 2001 From: slewis Date: Sun, 30 Mar 2014 21:19:14 -0700 Subject: Additions to allow org.eclipse.ecf.provider.zookeeper to be used without extension registry bug 421569 Change-Id: I0000000000000000000000000000000000000000 --- .../META-INF/MANIFEST.MF | 2 +- .../bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml | 8 ++++---- .../eclipse/ecf/provider/zookeeper/DiscoveryActivator.java | 14 ++++++++++++++ .../ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) (limited to 'providers') 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 e73970267..8bf393314 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.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-Activator: org.eclipse.ecf.provider.zookeeper.DiscoveryActivator Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml b/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml index 2ca709379..97fa861c0 100644 --- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml +++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/plugin.xml @@ -5,17 +5,17 @@ point="org.eclipse.ecf.containerFactory"> @@ -23,7 +23,7 @@ point="org.eclipse.ecf.identity.namespace"> diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java index 0bac43bda..8175053f6 100644 --- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java +++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/DiscoveryActivator.java @@ -16,10 +16,15 @@ import java.util.HashSet; import java.util.Properties; import java.util.Set; +import org.eclipse.core.runtime.SafeRunner; +import org.eclipse.ecf.core.ContainerTypeDescription; +import org.eclipse.ecf.core.identity.Namespace; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; import org.eclipse.ecf.discovery.IDiscoveryLocator; import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainer; import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryContainerInstantiator; +import org.eclipse.ecf.provider.zookeeper.core.ZooDiscoveryNamespace; import org.eclipse.ecf.provider.zookeeper.core.internal.BundleStoppingListener; import org.eclipse.ecf.provider.zookeeper.util.Logger; import org.eclipse.ecf.provider.zookeeper.util.PrettyPrinter; @@ -42,6 +47,15 @@ public class DiscoveryActivator implements BundleActivator { public void start(final BundleContext ctxt) { context = ctxt; + SafeRunner.run(new ExtensionRegistryRunnable(ctxt) { + protected void runWithoutRegistry() throws Exception { + ctxt.registerService(Namespace.class,new ZooDiscoveryNamespace(), null); + ctxt.registerService(ContainerTypeDescription.class,new ContainerTypeDescription(ZooDiscoveryContainerInstantiator.NAME,new ZooDiscoveryContainerInstantiator(),"Zookeeper Discovery Container"), null); + ctxt.registerService(ContainerTypeDescription.class,new ContainerTypeDescription(ZooDiscoveryContainerInstantiator.NAME+".advertiser",new ZooDiscoveryContainerInstantiator(),"Zookeeper Discovery Advertiser Container"), null); + ctxt.registerService(ContainerTypeDescription.class,new ContainerTypeDescription(ZooDiscoveryContainerInstantiator.NAME+".locator",new ZooDiscoveryContainerInstantiator(),"Zookeeper Discovery Locator Container"), null); + } + }); + final Properties props = new Properties(); props.put(IDiscoveryLocator.CONTAINER_NAME, ZooDiscoveryContainerInstantiator.NAME); props.put(IDiscoveryAdvertiser.CONTAINER_NAME, ZooDiscoveryContainerInstantiator.NAME); diff --git a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java index a6e5339a5..bc15ecb60 100644 --- a/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java +++ b/providers/bundles/org.eclipse.ecf.provider.zookeeper/src/org/eclipse/ecf/provider/zookeeper/core/ZooDiscoveryNamespace.java @@ -26,7 +26,7 @@ public class ZooDiscoveryNamespace extends Namespace { public static final String NAME = "ecf.namespace.zoodiscovery"; //$NON-NLS-1$ public ZooDiscoveryNamespace() { - super(NAME, "ZooKeeper Based Discovery Namespace"); //$NON-NLS-1$ + super(NAME, "ZooKeeper Discovery Namespace"); //$NON-NLS-1$ } public ID createInstance(Object[] parameters) throws IDCreateException { -- cgit v1.2.3 From e348f13d49783d8e22f532bf832b386c1657a773 Mon Sep 17 00:00:00 2001 From: slewis Date: Tue, 1 Apr 2014 20:54:30 -0700 Subject: Changes to org.eclipse.ecf.remoteservice.AbstractRemoteService to use AbstractAsyncProxyRemoteService as superclass...and associated changed (to import org.eclipse.ecf.remoteservice.asyncproxy package). Also added org.eclipse.ecf.remoteservice.asyncproxy bundle to org.eclipse.ecf.remoteservice.feature. Change-Id: Ib91036a8ea255716c7225a48d91d69a6774778ad --- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 7 +-- .../META-INF/MANIFEST.MF | 1 + .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 5 +- .../META-INF/MANIFEST.MF | 1 + .../ecf/remoteservice/AbstractRemoteService.java | 56 +++++++++++----------- .../org/eclipse/ecf/remoteservice/RemoteCall.java | 3 +- .../META-INF/MANIFEST.MF | 1 + .../J8RemoteServiceContainerAdapterFactory.java | 35 +------------- .../META-INF/MANIFEST.MF | 1 + .../feature.xml | 7 +++ .../META-INF/MANIFEST.MF | 5 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 5 +- .../META-INF/MANIFEST.MF | 5 +- .../META-INF/MANIFEST.MF | 3 +- .../META-INF/MANIFEST.MF | 5 +- 19 files changed, 73 insertions(+), 79 deletions(-) (limited to 'providers') diff --git a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF index d450a4188..7d26f3354 100644 --- a/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF +++ b/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.consumer.rs/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %bundleName Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.hello.consumer.rs -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Activator: org.eclipse.ecf.internal.examples.remoteservices.hello.consumer.rs.Activator Bundle-Vendor: %bundleProvider Require-Bundle: org.eclipse.equinox.common @@ -14,6 +14,7 @@ Import-Package: org.eclipse.ecf.core, org.eclipse.ecf.core.identity;version="3.0.0", org.eclipse.ecf.examples.remoteservices.hello;version="3.0.0", org.eclipse.ecf.remoteservice, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.events, org.osgi.framework;version="1.5.0", org.osgi.util.tracker 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 b6d48786e..da1ed3891 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 @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.examples.remoteservices.rest.rss -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Activator: org.eclipse.ecf.remoteservices.rest.rss.Activator Bundle-Vendor: %plugin.provider Bundle-RequiredExecutionEnvironment: JavaSE-1.6 @@ -10,6 +10,7 @@ Import-Package: com.sun.syndication.feed.synd;version="0.9.0", org.eclipse.ecf.core;version="3.0.0", org.eclipse.ecf.core.identity;version="3.0.0", org.eclipse.ecf.remoteservice, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.client, org.eclipse.ecf.remoteservice.events, org.eclipse.ecf.remoteservice.rest, 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 d3ee0d704..c53012b34 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 @@ -15,18 +15,19 @@ Export-Package: org.eclipse.ecf.internal.remoteservice.rest;x-internal:=true, org.eclipse.ecf.remoteservice.rest.identity;version="2.2.200", org.eclipse.ecf.remoteservice.rest.util;version="2.2.200" Import-Package: org.apache.http;version="4.1.2", + org.apache.http.auth;version="4.1.2", org.apache.http.client;version="4.1.2", org.apache.http.client.entity;version="4.1.2", + org.apache.http.client.methods;version="4.1.2", org.apache.http.client.params;version="4.1.2", + org.apache.http.entity;version="4.1.2", org.apache.http.impl.auth;version="4.1.2", org.apache.http.impl.client;version="4.1.2", - org.apache.http.entity;version="4.1.2", org.apache.http.message;version="4.1.2", - org.apache.http.auth;version="4.1.2", - org.apache.http.client.methods;version="4.1.2", org.apache.http.params;version="4.1.2", org.apache.http.util, org.eclipse.ecf.remoteservice;version="6.0.0", + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.client, org.eclipse.ecf.remoteservice.events, org.eclipse.ecf.remoteservice.util, diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.rpc/META-INF/MANIFEST.MF index 710cb9a68..ccb073728 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 @@ -28,6 +28,7 @@ Import-Package: javax.servlet;version="2.6.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.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.client, org.osgi.framework, org.osgi.service.log;version="1.3.0", diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF index 6686cbbd6..ec89ff907 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF +++ b/framework/bundles/org.eclipse.ecf.remoteservice.soap/META-INF/MANIFEST.MF @@ -3,12 +3,13 @@ Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-Vendor: %plugin.provider Bundle-SymbolicName: org.eclipse.ecf.remoteservice.soap;singleton:=true -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-RequiredExecutionEnvironment: J2SE-1.4 Import-Package: org.eclipse.ecf.core;version="3.0.0", org.eclipse.ecf.core.identity;version="3.0.0", org.eclipse.ecf.core.util, org.eclipse.ecf.remoteservice, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.client Bundle-ClassPath: . Export-Package: org.eclipse.ecf.remoteservice.soap.client;version="1.0.0", diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF index c78f64472..1a3ee79a5 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice.ui/META-INF/MANIFEST.MF +++ b/framework/bundles/org.eclipse.ecf.remoteservice.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.remoteservice.ui;singleton:=true -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.1.0.qualifier Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, J2SE-1.4 Require-Bundle: org.eclipse.core.runtime, @@ -18,4 +18,5 @@ Bundle-ActivationPolicy: lazy Bundle-Vendor: %plugin.provider Bundle-Localization: plugin Bundle-Activator: org.eclipse.ecf.internal.remoteservices.ui.Activator -Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0" +Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", + org.eclipse.equinox.concurrent.future;version="1.0.0" 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 1b52fcb33..586c29e59 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF +++ b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF @@ -17,6 +17,7 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.equinox.common, org.eclipse.ecf Import-Package: org.eclipse.ecf.core.util.reflection;version="2.2.100", + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.equinox.concurrent.future;version="1.0.0", org.osgi.framework, org.osgi.service.log, 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 2d65eed5b..bfff43d5a 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 @@ -16,6 +16,9 @@ import org.eclipse.core.runtime.*; import org.eclipse.ecf.core.jobs.JobsExecutor; import org.eclipse.ecf.core.util.ECFException; import org.eclipse.ecf.internal.remoteservice.Activator; +import org.eclipse.ecf.remoteservice.asyncproxy.*; +import org.eclipse.ecf.remoteservice.events.IRemoteCallCompleteEvent; +import org.eclipse.ecf.remoteservice.events.IRemoteCallEvent; import org.eclipse.equinox.concurrent.future.*; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceException; @@ -28,7 +31,7 @@ import org.osgi.util.tracker.ServiceTracker; * @since 4.1 */ //@ProviderType -public abstract class AbstractRemoteService implements IRemoteService, InvocationHandler { +public abstract class AbstractRemoteService extends AbstractAsyncProxyRemoteService implements IRemoteService, InvocationHandler { protected static final Object[] EMPTY_ARGS = new Object[0]; @@ -108,6 +111,11 @@ public abstract class AbstractRemoteService implements IRemoteService, Invocatio return IRemoteCall.DEFAULT_TIMEOUT; } + @Override + protected IFuture callAsync(AbstractAsyncProxyRemoteCall call) { + return callAsync((IRemoteCall) call); + } + public IFuture callAsync(final IRemoteCall call) { IExecutor executor = getIFutureExecutor(call); if (executor == null) @@ -437,43 +445,37 @@ 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); - return callAsync(new IRemoteCall() { - public String getMethod() { - return invokeMethodName; - } - - public Object[] getParameters() { - return asyncArgs.getArgs(); - } - - public long getTimeout() { - return DEFAULT_TIMEOUT; - } - }, asyncArgs.getListener(), asyncArgs.getReturnType()); + IRemoteCallListener listener = asyncArgs.getListener(); + RemoteCall remoteCall = new RemoteCall(invokeMethodName, asyncArgs.getArgs(), IRemoteCall.DEFAULT_TIMEOUT); + return (listener != null) ? callAsyncWithResult(remoteCall, listener) : callFuture(remoteCall, asyncArgs.getReturnType()); } /** - * @since 8.4 + * @since 8.2 */ - protected Object callAsync(IRemoteCall call, IRemoteCallListener listener, Class returnType) { - return (listener != null) ? callAsyncWithResult(call, listener) : callFuture(call, returnType); + protected Object callAsyncWithResult(IRemoteCall call, IRemoteCallListener listener) { + callAsync(call, listener); + return null; } /** * @since 8.4 */ - protected Object callFuture(IRemoteCall call, Class returnType) { - if (IFuture.class.isAssignableFrom(returnType)) - return callAsync(call); - return callFutureAsync(call); + @Override + protected void callCompletableAsync(AbstractAsyncProxyRemoteCall call, final IAsyncProxyCompletable completable) { + callAsync((IRemoteCall) call, new IRemoteCallListener() { + public void handleEvent(IRemoteCallEvent event) { + if (event instanceof IRemoteCallCompleteEvent) { + IRemoteCallCompleteEvent cce = (IRemoteCallCompleteEvent) event; + completable.handleComplete(cce.getResponse(), cce.hadException(), cce.getException()); + } + } + }); } - /** - * @since 8.2 - */ - protected Object callAsyncWithResult(IRemoteCall call, IRemoteCallListener listener) { - callAsync(call, listener); - return null; + @Override + protected Future callFutureAsync(AbstractAsyncProxyRemoteCall call) { + return callFutureAsync((IRemoteCall) call); } /** diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java index 7a2ca6f5f..a438cb189 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java +++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteCall.java @@ -11,11 +11,12 @@ package org.eclipse.ecf.remoteservice; import java.util.Arrays; import org.eclipse.core.runtime.Assert; +import org.eclipse.ecf.remoteservice.asyncproxy.AbstractAsyncProxyRemoteCall; /** * @since 4.0 */ -public class RemoteCall implements IRemoteCall { +public class RemoteCall extends AbstractAsyncProxyRemoteCall implements IRemoteCall { protected String method; protected Object[] parameters; 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 b0a7c8973..322738f0d 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 @@ -4,6 +4,7 @@ Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.provider.r_osgi;singleton:=true Bundle-Version: 3.4.0.qualifier Import-Package: org.eclipse.ecf.core.util.reflection, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.equinox.concurrent.future;version="1.0.0", org.osgi.framework;version="1.3.0", org.osgi.util.tracker;version="1.3.3" 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 index 9a91c810d..c591adee3 100644 --- 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 @@ -8,49 +8,18 @@ ******************************************************************************/ 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.core.sharedobject.ISharedObject; +import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer; 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/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.remoteservice/META-INF/MANIFEST.MF index 3cc6ac131..ddeeacb5e 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 @@ -18,6 +18,7 @@ Require-Bundle: org.eclipse.equinox.common, org.eclipse.ecf.provider, org.eclipse.ecf.remoteservice;bundle-version="6.0.0" Import-Package: org.eclipse.core.runtime.jobs, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.equinox.concurrent.future, org.eclipse.osgi.framework.eventmgr, org.osgi.framework, diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml index 7b2a5d3be..744a6604c 100644 --- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml +++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml @@ -46,4 +46,11 @@ https://wiki.eclipse.org/ECF#OSGi_Remote_Services version="0.0.0" unpack="false"/> + + diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF index a3f3ccd17..5814d451a 100644 --- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF +++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.distribution/META-INF/MANIFEST.MF @@ -2,11 +2,12 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.distribution -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Activator: org.eclipse.ecf.tests.internal.osgi.services.distribution.Activator Bundle-Vendor: %plugin.provider Bundle-RequiredExecutionEnvironment: J2SE-1.5 -Import-Package: org.osgi.framework, +Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", + org.osgi.framework, org.osgi.util.tracker;version="1.4.2" Bundle-ActivationPolicy: lazy Bundle-Localization: plugin diff --git a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF index b956d3692..357115d1c 100644 --- a/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF +++ b/tests/bundles/org.eclipse.ecf.tests.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %bundle.name Bundle-SymbolicName: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Activator: org.eclipse.ecf.tests.osgi.services.remoteserviceadmin.Activator Bundle-Vendor: %bundle.provider Bundle-RequiredExecutionEnvironment: JavaSE-1.6 @@ -15,6 +15,7 @@ Import-Package: org.eclipse.ecf.core, org.eclipse.ecf.discovery.identity;version="3.0.0", org.eclipse.ecf.osgi.services.remoteserviceadmin, org.eclipse.ecf.remoteservice, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.events, org.eclipse.ecf.tests.remoteservice, org.eclipse.equinox.concurrent.future;version="1.0.0", diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF index b7e5c8b2a..821d00631 100755 --- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF +++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.generic/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice.generic;singleton:=true -Bundle-Version: 2.0.0.qualifier +Bundle-Version: 2.1.0.qualifier Bundle-Vendor: %plugin.provider Bundle-Localization: plugin Require-Bundle: org.eclipse.equinox.common, @@ -15,7 +15,8 @@ Require-Bundle: org.eclipse.equinox.common, org.eclipse.ecf.provider;bundle-version="3.0.0", org.eclipse.ecf.server.generic;bundle-version="3.0.0" Bundle-ActivationPolicy: lazy -Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0", +Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", + org.eclipse.equinox.concurrent.future;version="1.0.0", org.eclipse.osgi.util, org.osgi.framework;version="1.4.0", org.osgi.util.tracker;version="1.3.3" diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF index 0462664b3..890946f94 100644 --- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF +++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rest/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: REST API Tests Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice.rest;singleton:=true -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.ecf.remoteservice.rest;bundle-version="1.0.0", org.junit;bundle-version="3.8.2", @@ -13,7 +13,8 @@ Require-Bundle: org.eclipse.ecf.remoteservice.rest;bundle-version="1.0.0", org.eclipse.equinox.concurrent;bundle-version="1.0.0", org.json;bundle-version="1.0.0" Import-Package: org.apache.commons.httpclient;version="3.0.1", - org.apache.commons.httpclient.server + org.apache.commons.httpclient.server, + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0" Export-Package: org.eclipse.ecf.tests.remoteservice.rest, org.eclipse.ecf.tests.remoteservice.rest.service, org.eclipse.ecf.tests.remoteservice.rest.twitter diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF index 7d261b3b4..bd2a7ef35 100644 --- a/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF +++ b/tests/bundles/org.eclipse.ecf.tests.remoteservice.rpc/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.tests.remoteservice.rpc -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.1.0.qualifier Bundle-Activator: org.eclipse.ecf.internal.tests.remoteservice.rpc.Activator Bundle-Vendor: %plugin.provider Require-Bundle: org.eclipse.core.runtime, @@ -19,6 +19,7 @@ Bundle-ActivationPolicy: lazy Import-Package: javax.servlet;version="2.5.0", javax.servlet.http;version="2.5.0", org.eclipse.ecf.remoteservice;version="6.0.0", + org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", org.eclipse.ecf.remoteservice.client;version="6.0.0", org.eclipse.ecf.remoteservice.events;version="6.0.0", org.eclipse.equinox.concurrent.future;version="1.0.0", diff --git a/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF b/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF index 4475db2b0..bb6e94dab 100644 --- a/tests/bundles/org.eclipse.ecf.tests.remoteservice/META-INF/MANIFEST.MF +++ b/tests/bundles/org.eclipse.ecf.tests.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.tests.remoteservice -Bundle-Version: 2.0.0.qualifier +Bundle-Version: 2.1.0.qualifier Bundle-Vendor: %plugin.provider Bundle-Localization: plugin Require-Bundle: org.eclipse.equinox.common, @@ -12,7 +12,8 @@ Require-Bundle: org.eclipse.equinox.common, org.junit, org.eclipse.equinox.app;bundle-version="1.2.0" Export-Package: org.eclipse.ecf.tests.remoteservice;version="2.0.0" -Import-Package: org.eclipse.equinox.concurrent.future;version="1.0.0", +Import-Package: org.eclipse.ecf.remoteservice.asyncproxy;version="1.0.0", + org.eclipse.equinox.concurrent.future;version="1.0.0", org.eclipse.osgi.util, org.osgi.framework;version="1.4.0", org.osgi.util.tracker;version="1.3.3" -- cgit v1.2.3 From d509b5eb22e194991f030b430fa1b4aa78c8b14c Mon Sep 17 00:00:00 2001 From: slewis Date: Sat, 12 Apr 2014 07:06:15 -0700 Subject: Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=432662 Change-Id: Iebca08a3092db407586412a924c0e35cb4f1f2e8 --- .../META-INF/MANIFEST.MF | 2 +- .../ecf/internal/provider/filetransfer/httpclient/Activator.java | 4 ++-- .../META-INF/MANIFEST.MF | 2 +- .../ecf/internal/provider/filetransfer/httpclient4/Activator.java | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'providers') 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 f2b2c872e..ac271d36e 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.400.qualifier +Bundle-Version: 4.0.500.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/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java index a725abc58..3f713e923 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient/Activator.java @@ -110,7 +110,7 @@ public class Activator implements BundleActivator { return plugin; } - protected LogService getLogService() { + private synchronized LogService getLogService() { if (logServiceTracker == null) { logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null); logServiceTracker.open(); @@ -125,7 +125,7 @@ public class Activator implements BundleActivator { } } - public SSLSocketFactory getSSLSocketFactory() { + public synchronized SSLSocketFactory getSSLSocketFactory() { if (sslSocketFactoryTracker == null) { sslSocketFactoryTracker = new ServiceTracker(this.context, SSLSocketFactory.class.getName(), null); sslSocketFactoryTracker.open(); 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 e66e4d225..7ae5588fd 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.400.qualifier +Bundle-Version: 1.0.500.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/Activator.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java index 43cce0f16..139dcab26 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/internal/provider/filetransfer/httpclient4/Activator.java @@ -97,7 +97,7 @@ public class Activator implements BundleActivator { return plugin; } - protected LogService getLogService() { + private synchronized LogService getLogService() { if (logServiceTracker == null) { logServiceTracker = new ServiceTracker(this.context, LogService.class.getName(), null); logServiceTracker.open(); @@ -112,7 +112,7 @@ public class Activator implements BundleActivator { } } - public SSLSocketFactory getSSLSocketFactory() { + public synchronized SSLSocketFactory getSSLSocketFactory() { if (sslSocketFactoryTracker == null) { sslSocketFactoryTracker = new ServiceTracker(this.context, SSLSocketFactory.class.getName(), null); sslSocketFactoryTracker.open(); -- cgit v1.2.3 From b95892ecddf70caf184feaf348ead8110f9c61f4 Mon Sep 17 00:00:00 2001 From: slewis Date: Tue, 15 Apr 2014 15:56:25 -0700 Subject: Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=432662 Change-Id: If3e35acb398e835d952a241ac5fca1aaba228eaa --- .../httpclient/HttpClientDefaultSSLSocketFactoryModifier.java | 4 ++-- .../httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java | 7 +++---- .../filetransfer/httpclient4/HttpClientRetrieveFileTransfer.java | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java index 25c55eb99..4b0dccbb4 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient/src/org/eclipse/ecf/provider/filetransfer/httpclient/HttpClientDefaultSSLSocketFactoryModifier.java @@ -32,7 +32,7 @@ public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFact // empty } - public SSLSocketFactory getSSLSocketFactory() throws IOException { + public synchronized SSLSocketFactory getSSLSocketFactory() throws IOException { if (null == sslContext) { try { sslContext = getSSLContext(defaultProtocolNames); @@ -45,7 +45,7 @@ public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFact return (sslContext == null) ? (SSLSocketFactory) SSLSocketFactory.getDefault() : sslContext.getSocketFactory(); } - public SSLContext getSSLContext(String protocols) { + public synchronized SSLContext getSSLContext(String protocols) { SSLContext rtvContext = null; if (protocols != null) { diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java index cb59b4120..2e4753ef9 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient4/src/org/eclipse/ecf/provider/filetransfer/httpclient4/HttpClientDefaultSSLSocketFactoryModifier.java @@ -12,8 +12,6 @@ package org.eclipse.ecf.provider.filetransfer.httpclient4; -import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier; - import java.io.IOException; import java.net.Socket; import javax.net.ssl.SSLContext; @@ -21,6 +19,7 @@ import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import org.eclipse.ecf.core.util.StringUtils; import org.eclipse.ecf.filetransfer.events.socketfactory.INonconnectedSocketFactory; +import org.eclipse.ecf.internal.provider.filetransfer.httpclient4.ISSLSocketFactoryModifier; public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFactoryModifier, INonconnectedSocketFactory { public static final String DEFAULT_SSL_PROTOCOL = "https.protocols"; //$NON-NLS-1$ @@ -33,7 +32,7 @@ public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFact // empty } - public SSLSocketFactory getSSLSocketFactory() throws IOException { + public synchronized SSLSocketFactory getSSLSocketFactory() throws IOException { if (null == sslContext) { try { sslContext = getSSLContext(defaultProtocolNames); @@ -46,7 +45,7 @@ public class HttpClientDefaultSSLSocketFactoryModifier implements ISSLSocketFact return (sslContext == null) ? (SSLSocketFactory) SSLSocketFactory.getDefault() : sslContext.getSocketFactory(); } - public SSLContext getSSLContext(String protocols) { + public synchronized SSLContext getSSLContext(String protocols) { SSLContext rtvContext = null; if (protocols != null) { 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 c14fc6ef3..2107927e5 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 @@ -175,7 +175,7 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer registerSchemes(socketEventSource, connectingSockets); } - private void registerSchemes(ISocketEventSource source, ISocketListener socketListener) { + private synchronized void registerSchemes(ISocketEventSource source, ISocketListener socketListener) { SchemeRegistry schemeRegistry = this.httpClient.getConnectionManager().getSchemeRegistry(); Scheme http = new Scheme(HttpClientRetrieveFileTransfer.HTTP, HTTP_PORT, new ECFHttpClientProtocolSocketFactory(SocketFactory.getDefault(), source, socketListener)); -- cgit v1.2.3 From c14257da3ce444dc2432ecd9d33e1833cbd8d3a6 Mon Sep 17 00:00:00 2001 From: Alex Blewitt Date: Fri, 2 May 2014 12:19:23 +0100 Subject: Allow cache-control to be configured by system property The Cache-Control request header determines whether or not requests made by the ECF HTTP transfers use cached values from intermediate proxies or not. Due to bug 249990 caching was intentionally disabled. However this causes problems when proxies are configured correctly from taking advantage of caching. Exposing this as a system property allows the age to be controlled externally from ECF, and can be completely disabled by setting -Dorg.eclipse.ecf.http.cache.max-age=-1 Alternatively, a non-zero number represents a maximum age that can be requested, and is passed through to the server. Bug: 410813 Signed-off-by: Alex Blewitt Change-Id: If231f3f5d88a146b38e56836bf69d5c25b162fd1 --- .../httpclient/HttpClientFileSystemBrowser.java | 8 +++++++- .../httpclient/HttpClientRetrieveFileTransfer.java | 16 ++++++++++++++-- .../httpclient4/HttpClientFileSystemBrowser.java | 8 +++++++- .../HttpClientRetrieveFileTransfer.java | 16 ++++++++++++++-- .../UrlConnectionRetrieveFileTransfer.java | 22 ++++++++++++++++------ 5 files changed, 58 insertions(+), 12 deletions(-) (limited to 'providers') 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 330cff684..d2e60a7fe 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 @@ -208,8 +208,14 @@ public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser { // Define a CredentialsProvider - found that possibility while debugging in org.apache.commons.httpclient.HttpMethodDirector.processProxyAuthChallenge(HttpMethod) // Seems to be another way to select the credentials. headMethod.getParams().setParameter(CredentialsProvider.PROVIDER, credProvider); + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$ // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - headMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + headMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + headMethod.addRequestHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } headMethod.addRequestHeader("Connection", "Keep-Alive"); //$NON-NLS-1$ //$NON-NLS-2$ long lastModified = 0; 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 40a514e8e..de027fdeb 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 @@ -478,8 +478,14 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer Trace.trace(Activator.PLUGIN_ID, "retrieve range header=" + rangeHeader); //$NON-NLS-1$ setRangeHeader(rangeHeader); } + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$ // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + getMethod.addRequestHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } setRequestHeaderValuesFromOptions(); } @@ -888,8 +894,14 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived) throw new IOException(Messages.HttpClientRetrieveFileTransfer_RESUME_START_ERROR); setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$ + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$ // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + getMethod.addRequestHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + getMethod.addRequestHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } setRequestHeaderValuesFromOptions(); } 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 af9fec4c0..eb20d6c0c 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 @@ -239,8 +239,14 @@ public class HttpClientFileSystemBrowser extends AbstractFileSystemBrowser { setupAuthentication(urlString); headMethod = new HttpHead(urlString); + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$ // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - headMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + headMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + headMethod.addHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } long lastModified = 0; long fileLength = -1; 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 2107927e5..5759cf846 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 @@ -361,8 +361,14 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer Trace.trace(Activator.PLUGIN_ID, "retrieve range header=" + rangeHeader); //$NON-NLS-1$ setRangeHeader(rangeHeader); } + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0); //$NON-NLS-1$ // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + getMethod.addHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } setRequestHeaderValuesFromOptions(); } @@ -815,8 +821,14 @@ public class HttpClientRetrieveFileTransfer extends AbstractRetrieveFileTransfer if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived) throw new IOException(Messages.HttpClientRetrieveFileTransfer_RESUME_START_ERROR); setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$ + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0); //$NON-NLS-1$ // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + getMethod.addHeader("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + getMethod.addHeader("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } setRequestHeaderValuesFromOptions(); } diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java index 72e8e1019..d8d847312 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java @@ -114,9 +114,14 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans if (this.bytesReceived <= 0 || this.fileLength <= this.bytesReceived) throw new IOException(Messages.UrlConnectionRetrieveFileTransfer_RESUME_START_ERROR); setRangeHeader("bytes=" + this.bytesReceived + "-"); //$NON-NLS-1$ //$NON-NLS-2$ - // set max-age for cache control to 0 for bug - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$ + // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + urlConnection.setRequestProperty("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } setRequestHeaderValuesFromOptions(); } @@ -154,9 +159,14 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans // also see http 1.1 rfc section 14-10 in // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html urlConnection.setRequestProperty("Connection", "close"); //$NON-NLS-1$ //$NON-NLS-2$ - // set max-age for cache control to 0 for bug - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 - urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + int maxAge = Integer.getInteger("org.eclipse.ecf.http.cache.max-age", 0).intValue(); //$NON-NLS-1$ + // set max-age for cache control to 0 for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=249990 + // fix the fix for bug 249990 with bug 410813 + if (maxAge == 0) { + urlConnection.setRequestProperty("Cache-Control", "max-age=0"); //$NON-NLS-1$//$NON-NLS-2$ + } else if (maxAge > 0) { + urlConnection.setRequestProperty("Cache-Control", "max-age=" + maxAge); //$NON-NLS-1$//$NON-NLS-2$ + } setRequestHeaderValuesFromOptions(); } -- cgit v1.2.3 From cab79447ffd20f4a6673a0c58e98bc1856c3afdb Mon Sep 17 00:00:00 2001 From: slewis Date: Thu, 22 May 2014 15:17:59 -0700 Subject: Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=435159 Change-Id: I53dfb85848b2831161e539d40361dcf061b37b68 --- .../META-INF/MANIFEST.MF | 2 +- .../filetransfer/scp/ScpOutgoingFileTransfer.java | 72 +++++++---- .../filetransfer/scp/ScpRetrieveFileTransfer.java | 137 ++++++++++++++++----- .../provider/filetransfer/scp/ScpUtil.java | 109 +++++++++++----- .../META-INF/MANIFEST.MF | 2 +- .../filetransfer/identity/FileTransferID.java | 4 +- .../provider/filetransfer/scp/SCPOutgoingTest.java | 11 +- .../provider/filetransfer/scp/SCPRetrieveTest.java | 20 ++- 8 files changed, 253 insertions(+), 104 deletions(-) (limited to 'providers') diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF index a94bbeaea..d1f06ee60 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/META-INF/MANIFEST.MF +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/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.scp;singleton:=true -Bundle-Version: 2.0.0.qualifier +Bundle-Version: 2.0.100.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.scp.Activator Bundle-Vendor: %plugin.provider Import-Package: com.jcraft.jsch, diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java index 8449f005d..6f5f5d84c 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpOutgoingFileTransfer.java @@ -27,10 +27,14 @@ import org.eclipse.osgi.util.NLS; /** * */ -public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implements IScpFileTransfer { +public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer + implements IScpFileTransfer { - private static final String SCP_COMMAND = "scp -p -t "; //$NON-NLS-1$ - private static final String SCP_EXEC = "exec"; //$NON-NLS-1$ + private static final String SCP_COMMAND = System + .getProperty( + "org.eclipse.ecf.filetransfer.scp.outgoing.scpcommand", "scp -p -t "); //$NON-NLS-1$; //$NON-NLS-1$ + private static final String SCP_EXEC = System.getProperty( + "org.eclipse.ecf.filetransfer.scp.outgoing.scpcommand", "exec"); //$NON-NLS-1$ String username; @@ -39,14 +43,19 @@ public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implem private InputStream responseStream; private ScpUtil scpUtil; - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#openStreams() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer + * #openStreams() */ protected void openStreams() throws SendFileTransferException { try { final File localFile = getFileTransferInfo().getFile(); // Set input stream from local file - setInputStream(new BufferedInputStream(new FileInputStream(localFile))); + setInputStream(new BufferedInputStream(new FileInputStream( + localFile))); final URL url = getRemoteFileURL(); this.username = url.getUserInfo(); scpUtil = new ScpUtil(this); @@ -63,7 +72,9 @@ public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implem sendFileNameAndSize(localFile, targetFileName, outs, responseStream); setOutputStream(outs); } catch (final Exception e) { - throw new SendFileTransferException(NLS.bind(Messages.ScpOutgoingFileTransfer_EXCEPTION_CONNECTING, getRemoteFileURL().toString()), e); + throw new SendFileTransferException(NLS.bind( + Messages.ScpOutgoingFileTransfer_EXCEPTION_CONNECTING, + getRemoteFileURL().toString()), e); } } @@ -80,19 +91,25 @@ public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implem return this.proxy; } - private void sendFileNameAndSize(File localFile, String fileName, OutputStream outs, InputStream ins) throws IOException { + private void sendFileNameAndSize(File localFile, String fileName, + OutputStream outs, InputStream ins) throws IOException { // send "C0644 filesize filename", where filename should not include '/' final long filesize = localFile.length(); String[] targetFile = StringUtils.split(fileName, '/'); final StringBuffer command = new StringBuffer("C0644 "); //$NON-NLS-1$ - command.append(filesize).append(" ").append(targetFile[targetFile.length - 1]).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$ + command.append(filesize) + .append(" ").append(targetFile[targetFile.length - 1]).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$ outs.write(command.toString().getBytes()); outs.flush(); scpUtil.checkAck(ins); } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#hardClose() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer + * #hardClose() */ protected void hardClose() { try { @@ -100,10 +117,6 @@ public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implem scpUtil.sendZeroToStream(remoteFileContents); scpUtil.checkAck(responseStream); } - if (remoteFileContents != null) { - remoteFileContents.close(); - remoteFileContents = null; - } if (channel != null) { channel.disconnect(); channel = null; @@ -119,29 +132,42 @@ public class ScpOutgoingFileTransfer extends AbstractOutgoingFileTransfer implem super.hardClose(); } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#setupProxy(org.eclipse.ecf.core.util.Proxy) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer + * #setupProxy(org.eclipse.ecf.core.util.Proxy) */ protected void setupProxy(Proxy proxy) { this.proxy = proxy; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername() */ public String getUsername() { return username; } - /* (non-Javadoc) - * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer#getConnectContext() + /* + * (non-Javadoc) + * + * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer# + * getConnectContext() */ public IConnectContext getConnectContext() { return connectContext; } - /* (non-Javadoc) - * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer#setUsername(java.lang.String) + /* + * (non-Javadoc) + * + * @see org.eclipse.ecf.internal.provider.filetransfer.scp.IScpFileTransfer# + * setUsername(java.lang.String) */ public void setUsername(String username) { this.username = username; diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java index 81d0e0e86..a40cec28b 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpRetrieveFileTransfer.java @@ -26,10 +26,13 @@ import org.eclipse.osgi.util.NLS; /** * */ -public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implements IScpFileTransfer { +public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer + implements IScpFileTransfer { - private static final String SCP_COMMAND = "scp -f "; //$NON-NLS-1$ - private static final String SCP_EXEC = "exec"; //$NON-NLS-1$ + private static final String SCP_COMMAND = System.getProperty( + "org.eclipse.ecf.filetransfer.scp.retrieve.scpcommand", "scp -f "); //$NON-NLS-1$ + private static final String SCP_EXEC = System.getProperty( + "org.eclipse.ecf.filetransfer.scp.retrieve.scpcommand", "exec"); //$NON-NLS-1$ String username; @@ -39,15 +42,23 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem private ScpUtil scpUtil; - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#doPause() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer + * #doPause() */ protected boolean doPause() { return false; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#doResume() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer + * #doResume() */ protected boolean doResume() { return false; @@ -61,8 +72,12 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem return options; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#openStreams() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer + * #openStreams() */ protected void openStreams() throws IncomingFileTransferException { try { @@ -74,7 +89,8 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem final Session s = scpUtil.getSession(); s.connect(); - final String command = SCP_COMMAND + scpUtil.trimTargetFile(url.getPath()); + final String command = SCP_COMMAND + + scpUtil.trimTargetFile(url.getPath()); channel = s.openChannel(SCP_EXEC); ((ChannelExec) channel).setCommand(command); channel.connect(); @@ -82,10 +98,11 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem final InputStream ins = channel.getInputStream(); responseStream = channel.getOutputStream(); scpUtil.sendZeroToStream(responseStream); - // read and set filesize - final int c = ins.read(); + + final int c = checkAck(ins); if (c != 'C') - throw new IOException(Messages.ScpRetrieveFileTransfer_EXCEPTION_SCP_PROTOCOL); + throw new IOException( + Messages.ScpRetrieveFileTransfer_EXCEPTION_SCP_PROTOCOL); // read '0644 ' final byte[] buf = new byte[1024]; ins.read(buf, 0, 5); @@ -93,22 +110,58 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem setFileLength(readFileSize(ins, buf)); readFileName(ins, buf); // set input stream for reading rest of file - setInputStream(ins); + remoteFileContents = ins; + scpUtil.sendZeroToStream(responseStream); fireReceiveStartEvent(); } catch (final Exception e) { channel = null; username = null; - throw new IncomingFileTransferException(NLS.bind(Messages.ScpRetrieveFileTransfer_EXCEPTION_CONNECTING, getRemoteFileURL().toString()), e); + throw new IncomingFileTransferException(NLS.bind( + Messages.ScpRetrieveFileTransfer_EXCEPTION_CONNECTING, + getRemoteFileURL().toString()), e); } } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#handleReceivedData(byte[], int, double, org.eclipse.core.runtime.IProgressMonitor) + static int checkAck(InputStream in) throws IOException { + int b = in.read(); + // b may be 0 for success, + // 1 for error, + // 2 for fatal error, + // -1 + if (b == 0) + return b; + if (b == -1) + return b; + + if (b == 1 || b == 2) { + StringBuffer sb = new StringBuffer(); + int c; + do { + c = in.read(); + sb.append((char) c); + } while (c != '\n'); + if (b == 1 || b == 2) { // error + throw new IOException( + Messages.ScpRetrieveFileTransfer_EXCEPTION_SCP_PROTOCOL + + ": " + sb.toString()); + } + } + return b; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer + * #handleReceivedData(byte[], int, double, + * org.eclipse.core.runtime.IProgressMonitor) */ - protected void handleReceivedData(byte[] buf, int bytes, double factor, IProgressMonitor monitor) throws IOException { + protected void handleReceivedData(byte[] buf, int bytes, double factor, + IProgressMonitor monitor) throws IOException { if (bytes == -1) { done = true; } else { @@ -131,7 +184,8 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem long filesize = 0L; while (true) { if (ins.read(buf, 0, 1) < 0) { - throw new IOException(Messages.ScpRetrieveFileTransfer_EXCEPTION_ERROR_READING_FILE); + throw new IOException( + Messages.ScpRetrieveFileTransfer_EXCEPTION_ERROR_READING_FILE); } if (buf[0] == ' ') break; @@ -152,8 +206,12 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem return file; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer#hardClose() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.outgoing.AbstractOutgoingFileTransfer + * #hardClose() */ protected void hardClose() { try { @@ -177,7 +235,9 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem /* * (non-Javadoc) * - * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#getAdapter(java.lang.Class) + * @see + * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer + * #getAdapter(java.lang.Class) */ public Object getAdapter(Class adapter) { if (adapter == null) @@ -187,22 +247,33 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem return super.getAdapter(adapter); } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer#setupProxy(org.eclipse.ecf.core.util.Proxy) + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer + * #setupProxy(org.eclipse.ecf.core.util.Proxy) */ protected void setupProxy(Proxy proxy) { this.proxy = proxy; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getConnectContext() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getConnectContext + * () */ public IConnectContext getConnectContext() { return connectContext; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#getUsername() */ public String getUsername() { return username; @@ -212,12 +283,16 @@ public class ScpRetrieveFileTransfer extends AbstractRetrieveFileTransfer implem this.username = username; } - /* (non-Javadoc) - * @see org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#promptPassphrase() + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ecf.provider.filetransfer.scp.IScpFileTransfer#promptPassphrase + * () */ public boolean promptPassphrase() { // XXX TODO - //return (keyFile != null); + // return (keyFile != null); return false; } diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java index 54620e137..d7c9ee90d 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer.scp/src/org/eclipse/ecf/internal/provider/filetransfer/scp/ScpUtil.java @@ -26,11 +26,18 @@ import org.eclipse.osgi.util.NLS; */ public class ScpUtil implements UserInfo, UIKeyboardInteractive { - public static final String SCP_SSHHOMEDIRECTORY = "sshHomeDirectory"; //$NON-NLS-1$ - public static final String SCP_PUBLICKEYFILE = "keyFile"; //$NON-NLS-1$ - public static final String SCP_KNOWNHOSTSFILE = "knownHostsFile"; //$NON-NLS-1$ + public static final String SCP_SSHHOMEDIRECTORY = System + .getProperty( + "org.eclipse.ecf.filetransfer.scp.util.sshHomeDirectory", "sshHomeDirectory"); //$NON-NLS-1$ + public static final String SCP_PUBLICKEYFILE = System.getProperty( + "org.eclipse.ecf.filetransfer.scp.util.keyFile", "keyFile"); //$NON-NLS-1$ + public static final String SCP_KNOWNHOSTSFILE = System + .getProperty( + "org.eclipse.ecf.filetransfer.scp.util.knownHostsFile", "knownHostsFile"); //$NON-NLS-1$ - public static final int DEFAULT_SCP_PORT = 22; + public static final int DEFAULT_SCP_PORT = Integer + .parseInt(System.getProperty( + "org.eclipse.ecf.filetransfer.scp.util.scpPort", "22")); private IScpFileTransfer handler; private String password; @@ -41,7 +48,8 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { private String keyFile = null; private String knownHostsFile = null; - public ScpUtil(IScpFileTransfer handler) throws JSchException, IOException, UnsupportedCallbackException { + public ScpUtil(IScpFileTransfer handler) throws JSchException, IOException, + UnsupportedCallbackException { this.handler = handler; final JSch jsch = new JSch(); final URL url = handler.getTargetURL(); @@ -65,15 +73,18 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { void promptUsername() throws IOException, UnsupportedCallbackException { final IConnectContext connectContext = handler.getConnectContext(); if (connectContext != null) { - final CallbackHandler callbackHandler = connectContext.getCallbackHandler(); + final CallbackHandler callbackHandler = connectContext + .getCallbackHandler(); if (handler != null) { final Callback[] callbacks = new Callback[2]; - final NameCallback nc = new NameCallback(Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT); + final NameCallback nc = new NameCallback( + Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT); String user = handler.getUsername(); if (user != null) nc.setName(user); callbacks[0] = nc; - callbacks[1] = new PasswordCallback(Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT); + callbacks[1] = new PasswordCallback( + Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT); callbackHandler.handle(callbacks); handler.setUsername(nc.getName()); } @@ -84,24 +95,30 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { try { final IConnectContext connectContext = handler.getConnectContext(); if (connectContext != null) { - final CallbackHandler callbackHandler = connectContext.getCallbackHandler(); + final CallbackHandler callbackHandler = connectContext + .getCallbackHandler(); if (handler != null) { final Callback[] callbacks = new Callback[2]; - final NameCallback nc = new NameCallback(Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT); + final NameCallback nc = new NameCallback( + Messages.ScpOutgoingFileTransfer_USERNAME_PROMPT); String user = handler.getUsername(); if (user != null) nc.setName(user); callbacks[0] = nc; if (usePassphrase) { - callbacks[1] = new PassphraseCallback(Messages.ScpOutgoingFileTransfer_PASSPHRASE_PROMPT); + callbacks[1] = new PassphraseCallback( + Messages.ScpOutgoingFileTransfer_PASSPHRASE_PROMPT); } else - callbacks[1] = new PasswordCallback(Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT); + callbacks[1] = new PasswordCallback( + Messages.ScpOutgoingFileTransfer_PASSWORD_PROMPT); callbackHandler.handle(callbacks); handler.setUsername(nc.getName()); if (usePassphrase) { - passphrase = ((PassphraseCallback) callbacks[1]).getPassphrase(); + passphrase = ((PassphraseCallback) callbacks[1]) + .getPassphrase(); } else - password = ((PasswordCallback) callbacks[1]).getPassword(); + password = ((PasswordCallback) callbacks[1]) + .getPassword(); } } return (usePassphrase) ? this.passphrase : this.password; @@ -110,54 +127,72 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.jcraft.jsch.UserInfo#getPassphrase() */ public String getPassphrase() { return promptCredentials(true); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.jcraft.jsch.UserInfo#getPassword() */ public String getPassword() { return promptCredentials(false); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.jcraft.jsch.UserInfo#promptPassphrase(java.lang.String) */ public boolean promptPassphrase(String message) { return (keyFile != null); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.jcraft.jsch.UserInfo#promptPassword(java.lang.String) */ public boolean promptPassword(String message) { return true; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.jcraft.jsch.UserInfo#promptYesNo(java.lang.String) */ public boolean promptYesNo(String message) { return true; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.jcraft.jsch.UserInfo#showMessage(java.lang.String) */ public void showMessage(String message) { // do nothing } - /* (non-Javadoc) - * @see com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.lang.String, java.lang.String, java.lang.String, java.lang.String[], boolean[]) + /* + * (non-Javadoc) + * + * @see + * com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java. + * lang.String, java.lang.String, java.lang.String, java.lang.String[], + * boolean[]) */ - public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, boolean[] echo) { + public String[] promptKeyboardInteractive(String destination, String name, + String instruction, String[] prompt, boolean[] echo) { promptCredentials(false); - return new String[] {password}; + return new String[] { password }; } /** @@ -217,7 +252,14 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { try { jsch.addIdentity(keyFile); } catch (final JSchException e) { - Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_SSH_IDENTITY, e)); + Activator + .getDefault() + .log(new Status( + IStatus.ERROR, + Activator.PLUGIN_ID, + IStatus.ERROR, + Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_SSH_IDENTITY, + e)); } } knownHostsFile = getProperty(SCP_KNOWNHOSTSFILE); @@ -236,7 +278,14 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { try { jsch.setKnownHosts(knownHostsFile); } catch (final JSchException e) { - Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_KNOWN_HOSTS, e)); + Activator + .getDefault() + .log(new Status( + IStatus.ERROR, + Activator.PLUGIN_ID, + IStatus.ERROR, + Messages.ScpOutgoingFileTransfer_EXCEPTION_SETTING_KNOWN_HOSTS, + e)); } } } @@ -256,8 +305,6 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { } String trimTargetFile(String string) { - if (string.charAt(0) == '/') - return string.substring(1); return string; } @@ -279,10 +326,12 @@ public class ScpUtil implements UserInfo, UIKeyboardInteractive { sb.append((char) c); } while (c != '\n'); if (b == 1) { // error - throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR, sb.toString())); + throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR, + sb.toString())); } if (b == 2) { // fatal error - throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR, sb.toString())); + throw new IOException(NLS.bind(Messages.ScpUtil_SCP_ERROR, + sb.toString())); } } diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF index 674f8f6d3..4c3787243 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.provider.filetransfer;singleton:=true -Bundle-Version: 3.2.100.qualifier +Bundle-Version: 3.2.200.qualifier Bundle-Activator: org.eclipse.ecf.internal.provider.filetransfer.Activator Bundle-Vendor: %plugin.provider Bundle-Localization: plugin diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java index 3b3edb2bb..66e2d6519 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/identity/FileTransferID.java @@ -77,8 +77,8 @@ public class FileTransferID extends BaseID implements IFileID { } protected String getFileNameOnly() { - final String path = this.fileURL.getPath(); - return path.substring(path.lastIndexOf("/") + 1); //$NON-NLS-1$; + String path = (fileURI != null) ? fileURI.getPath() : fileURL.getPath(); + return (path == null) ? null : path.substring(path.lastIndexOf("/") + 1); //$NON-NLS-1$; } public String toString() { diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java index 7968a214e..c9698a133 100755 --- a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPOutgoingTest.java @@ -28,14 +28,15 @@ import org.eclipse.ecf.tests.ContainerAbstractTestCase; */ public class SCPOutgoingTest extends ContainerAbstractTestCase { - private static final String TESTSRCFILE = "test.txt"; //$NON-NLS-1$ + String sendFile = System.getProperty("sendFile", "test.txt"); //$NON-NLS-1$ //$NON-NLS-2$ + + String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$ + String file = System.getProperty("file", "test.txt"); //$NON-NLS-1$ //$NON-NLS-2$ // URL (example: scp://slewis@ecf1.osuosl.org/test.txt String username = System.getProperty("username", "nobody"); //$NON-NLS-1$ //$NON-NLS-2$ String password = System.getProperty("password", "password"); //$NON-NLS-1$ //$NON-NLS-2$ - String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$ - protected ISendFileTransferContainerAdapter adapter = null; protected IFileTransferListener senderTransferListener = null; @@ -61,11 +62,11 @@ public class SCPOutgoingTest extends ContainerAbstractTestCase { } public void testSend() throws Exception { - String targetURL = "scp://" + username + "@" + host + "/" + TESTSRCFILE; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + String targetURL = "scp://" + username + "@" + host + (file.startsWith("/") ? "" : "/") + file; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ System.out.println("Sending to " + targetURL); //$NON-NLS-1$ final IFileID targetID = FileIDFactory.getDefault().createFileID(adapter.getOutgoingNamespace(), new URL(targetURL)); adapter.setConnectContextForAuthentication(ConnectContextFactory.createPasswordConnectContext(password)); - adapter.sendOutgoingRequest(targetID, new File(TESTSRCFILE), senderTransferListener, null); + adapter.sendOutgoingRequest(targetID, new File(sendFile), senderTransferListener, null); sleep(10000); } diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java index 2a32c0a23..c07d2ce86 100755 --- a/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java +++ b/tests/bundles/org.eclipse.ecf.tests.provider.filetransfer.scp/src/org/eclipse/ecf/tests/provider/filetransfer/scp/SCPRetrieveTest.java @@ -25,14 +25,13 @@ import org.eclipse.ecf.tests.ContainerAbstractTestCase; public class SCPRetrieveTest extends ContainerAbstractTestCase { - private static final String TESTSRCFILE = "test.txt"; //$NON-NLS-1$ + String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$ + String file = System.getProperty("file", "test.txt"); //$NON-NLS-1$ //$NON-NLS-2$ // URL (example: scp://slewis@ecf1.osuosl.org/test.txt String username = System.getProperty("username", "nobody"); //$NON-NLS-1$ //$NON-NLS-2$ String password = System.getProperty("password", "password"); //$NON-NLS-1$ //$NON-NLS-2$ - String host = System.getProperty("host", "localhost"); //$NON-NLS-1$ //$NON-NLS-2$ - IRetrieveFileTransferContainerAdapter adapter = null; /* @@ -69,7 +68,6 @@ public class SCPRetrieveTest extends ContainerAbstractTestCase { List receiveDoneEvents; public void testReceive() throws Exception { - final Object lock = new Object(); assertNotNull(adapter); final IFileTransferListener listener = new IFileTransferListener() { public void handleTransferEvent(IFileTransferEvent event) { @@ -87,25 +85,25 @@ public class SCPRetrieveTest extends ContainerAbstractTestCase { receiveDataEvents.add(event); } else if (event instanceof IIncomingFileTransferReceiveDoneEvent) { receiveDoneEvents.add(event); - synchronized (lock) { - lock.notify(); - } + syncNotify(); } } }; - String targetURL = "scp://" + host + "/" + TESTSRCFILE; //$NON-NLS-1$ //$NON-NLS-2$ + String targetURL = "scp://" + host + (file.startsWith("/") ? "" : "/") + file; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ System.out.println("Retrieving from " + targetURL + " with username=" + username); //$NON-NLS-1$ //$NON-NLS-2$ adapter.setConnectContextForAuthentication(ConnectContextFactory.createUsernamePasswordConnectContext(username, password)); adapter.sendRetrieveRequest(FileIDFactory.getDefault().createFileID(adapter.getRetrieveNamespace(), targetURL), listener, null); - synchronized (lock) { - lock.wait(30000); - } + syncWaitForNotify(60000); assertHasEvent(receiveStartEvents, IIncomingFileTransferReceiveStartEvent.class); assertHasMoreThanEventCount(receiveDataEvents, IIncomingFileTransferReceiveDataEvent.class, 0); assertHasEvent(receiveDoneEvents, IIncomingFileTransferReceiveDoneEvent.class); } + + public void syncNotify() { + super.syncNotify(); + } } -- cgit v1.2.3