Skip to content

Commit

Permalink
Changes to org.eclipse.ecf.remoteservice.AbstractRemoteService to use
Browse files Browse the repository at this point in the history
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
  • Loading branch information
scottslewis committed Apr 2, 2014
1 parent 2c98d47 commit e348f13
Show file tree
Hide file tree
Showing 19 changed files with 73 additions and 79 deletions.
Expand Up @@ -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
Expand All @@ -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
Expand Up @@ -2,14 +2,15 @@ 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
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,
Expand Down
Expand Up @@ -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,
Expand Down
Expand Up @@ -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",
Expand Down
Expand Up @@ -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",
Expand Down
Expand Up @@ -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,
Expand All @@ -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"
Expand Up @@ -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,
Expand Down
Expand Up @@ -16,6 +16,9 @@
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;
Expand All @@ -28,7 +31,7 @@
* @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];

Expand Down Expand Up @@ -108,6 +111,11 @@ protected long getDefaultTimeout() {
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)
Expand Down Expand Up @@ -437,43 +445,37 @@ public Class getReturnType() {
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);
}

/**
Expand Down
Expand Up @@ -11,11 +11,12 @@

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;
Expand Down
Expand Up @@ -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"
Expand Down
Expand Up @@ -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;
Expand Down
Expand Up @@ -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,
Expand Down
Expand Up @@ -46,4 +46,11 @@ https://wiki.eclipse.org/ECF#OSGi_Remote_Services
version="0.0.0"
unpack="false"/>

<plugin
id="org.eclipse.ecf.remoteservice.asyncproxy"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>

</feature>
Expand Up @@ -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
Expand Down
Expand Up @@ -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
Expand All @@ -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",
Expand Down
Expand Up @@ -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,
Expand All @@ -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"
Expand Down
Expand Up @@ -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",
Expand All @@ -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
Expand Up @@ -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,
Expand All @@ -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",
Expand Down
Expand Up @@ -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,
Expand All @@ -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"
Expand Down

0 comments on commit e348f13

Please sign in to comment.