use of io.joynr.provider.Promise in project joynr by bmwcarit.
the class LocalCapabilitiesDirectoryImpl method lookup.
@Override
public Promise<Lookup2Deferred> lookup(String participantId) {
Lookup2Deferred deferred = new Lookup2Deferred();
DiscoveryEntryWithMetaInfo discoveryEntry = lookup(participantId, DiscoveryQos.NO_FILTER);
deferred.resolve(discoveryEntry);
return new Promise<>(deferred);
}
use of io.joynr.provider.Promise in project joynr by bmwcarit.
the class LocalCapabilitiesDirectoryImpl method remove.
@Override
public io.joynr.provider.Promise<io.joynr.provider.DeferredVoid> remove(String participantId) {
DeferredVoid deferred = new DeferredVoid();
DiscoveryEntry entryToRemove = localDiscoveryEntryStore.lookup(participantId, Long.MAX_VALUE);
if (entryToRemove != null) {
remove(entryToRemove);
deferred.resolve();
} else {
deferred.reject(new ProviderRuntimeException("Failed to remove participantId: " + participantId));
}
return new Promise<>(deferred);
}
use of io.joynr.provider.Promise in project joynr by bmwcarit.
the class ProviderWrapperTest method testInvokeMultiOutMethod.
@Test
public void testInvokeMultiOutMethod() throws Throwable {
ProviderWrapper subject = createSubject();
JoynrProvider proxy = createProxy(subject);
Method method = TestServiceProviderInterface.class.getMethod("testMultiOutMethod");
Object result = subject.invoke(proxy, method, new Object[0]);
assertTrue(result instanceof Promise);
Promise<?> promise = (Promise<?>) result;
assertTrue(promise.isFulfilled());
promise.then(new PromiseListener() {
@Override
public void onFulfillment(Object... values) {
assertArrayEquals(new Object[] { "one", "two" }, values);
}
@Override
public void onRejection(JoynrException error) {
fail("Shouldn't be here.");
}
});
}
use of io.joynr.provider.Promise in project joynr by bmwcarit.
the class ProviderWrapperTest method testInvokeMethodWithParams.
@Test
public void testInvokeMethodWithParams() throws Throwable {
ProviderWrapper subject = createSubject();
JoynrProvider proxy = createProxy(subject);
Method method = TestServiceProviderInterface.class.getMethod("testServiceMethod", new Class[] { Integer.TYPE, String.class });
Object result = subject.invoke(proxy, method, new Object[] { 1, "one" });
assertTrue(result instanceof Promise);
assertPromiseEquals(result, new TestServiceImpl().testServiceMethod(1, "one"));
}
use of io.joynr.provider.Promise in project joynr by bmwcarit.
the class ProviderWrapper method invoke.
/**
* When a method is invoked via a joynr call, then it is delegated to an instance of the bean with which this
* instance was initialised, if the method is part of the business interface and to this instance if it was part of
* the {@link JoynrProvider} interface or the <code>Object</code> class.
*
* @param proxy
* the proxy object on which the method was called.
* @param method
* the specific method which was called.
* @param args
* the arguments with which the method was called.
*
* @return the result of the delegate method call on the EJB, but wrapped in a promise, as all the provider methods
* in joynr are declared that way.
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
boolean isProviderMethod = matchesJoynrProviderMethod(method);
Method delegateToMethod = getMethodFromInterfaces(bean.getBeanClass(), method, isProviderMethod);
Object delegate = createDelegateForMethod(method, isProviderMethod);
Object result = null;
try {
if (isProviderMethod(method, delegateToMethod)) {
JoynrJeeMessageContext.getInstance().activate();
copyMessageCreatorInfo();
copyMessageContext();
}
JoynrException joynrException = null;
try {
result = delegateToMethod.invoke(delegate, args);
} catch (InvocationTargetException e) {
joynrException = getJoynrExceptionFromInvocationException(e);
}
if (delegate != this) {
AbstractDeferred deferred = createAndResolveOrRejectDeferred(method, result, joynrException);
Promise<AbstractDeferred> promiseResult = new Promise<>(deferred);
return promiseResult;
}
} finally {
if (isProviderMethod(method, delegateToMethod)) {
JoynrJeeMessageContext.getInstance().deactivate();
}
}
return result;
}
Aggregations