use of io.joynr.provider.PromiseListener in project joynr by bmwcarit.
the class LocalCapabilitiesDirectoryTest method addGlobalCapSucceeds_NextAddShallNotAddGlobalAgain.
@SuppressWarnings("unchecked")
@Test(timeout = 1000)
public void addGlobalCapSucceeds_NextAddShallNotAddGlobalAgain() throws InterruptedException {
ProviderQos providerQos = new ProviderQos();
providerQos.setScope(ProviderScope.GLOBAL);
String participantId = LocalCapabilitiesDirectoryTest.class.getName() + ".addGlobalCapSucceeds_NextAddShallNotAddGlobalAgain";
String domain = "testDomain";
final DiscoveryEntry discoveryEntry = new DiscoveryEntry(new Version(47, 11), domain, TestInterface.INTERFACE_NAME, participantId, providerQos, System.currentTimeMillis(), expiryDateMs, publicKeyId);
globalDiscoveryEntry = new GlobalDiscoveryEntry(new Version(47, 11), domain, TestInterface.INTERFACE_NAME, participantId, providerQos, System.currentTimeMillis(), expiryDateMs, publicKeyId, channelAddressSerialized);
Promise<DeferredVoid> promise = localCapabilitiesDirectory.add(discoveryEntry);
promise.then(new PromiseListener() {
@Override
public void onFulfillment(Object... values) {
Mockito.doAnswer(createAddAnswerWithSuccess()).when(globalCapabilitiesClient).add(any(Callback.class), eq(globalDiscoveryEntry));
verify(globalDiscoveryEntryCacheMock).add(eq(globalDiscoveryEntry));
verify(globalCapabilitiesClient).add(any(Callback.class), eq(globalDiscoveryEntry));
reset(globalCapabilitiesClient);
localCapabilitiesDirectory.add(discoveryEntry);
verify(globalCapabilitiesClient, timeout(200).never()).add(any(Callback.class), eq(globalDiscoveryEntry));
}
@Override
public void onRejection(JoynrException error) {
Assert.fail("adding capability failed: " + error);
}
});
}
use of io.joynr.provider.PromiseListener 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.PromiseListener in project joynr by bmwcarit.
the class PublicationManagerImpl method triggerPublication.
private void triggerPublication(final PublicationInformation publicationInformation, ProviderContainer providerContainer, Method method) {
try {
Promise<?> attributeGetterPromise = attributePollInterpreter.execute(providerContainer, method);
attributeGetterPromise.then(new PromiseListener() {
@Override
public void onRejection(JoynrException error) {
if (error instanceof JoynrRuntimeException) {
sendPublicationError((JoynrRuntimeException) error, publicationInformation);
} else {
sendPublicationError(new ProviderRuntimeException("Unexpected exception while calling getter for attribute " + publicationInformation.getSubscribedToName()), publicationInformation);
}
}
@Override
public void onFulfillment(Object... values) {
// attribute getters only return a single value
sendPublication(prepareAttributePublication(values[0], publicationInformation.getSubscriptionId()), publicationInformation);
}
});
} catch (JoynrRuntimeException error) {
sendPublicationError(error, publicationInformation);
}
}
use of io.joynr.provider.PromiseListener in project joynr by bmwcarit.
the class RequestInterpreter method execute.
public void execute(final ProviderCallback<Reply> callback, RequestCaller requestCaller, final Request request) {
Promise<? extends AbstractDeferred> promise;
logger.debug("execute request on provider: {}", request);
try {
promise = (Promise<?>) invokeMethod(requestCaller, request);
} catch (MethodInvocationException | ProviderRuntimeException e) {
logger.warn("execute request on provider failed with exception: {}, request: {}", e, request);
callback.onFailure(e);
return;
} catch (Exception e) {
JoynrVersion joynrVersion = AnnotationUtil.getAnnotation(requestCaller.getProxy().getClass(), JoynrVersion.class);
MethodInvocationException methodInvocationException = new MethodInvocationException(e, new Version(joynrVersion.major(), joynrVersion.minor()));
logger.warn("execute request on provider failed with exception: {}, request: {}", methodInvocationException, request);
callback.onFailure(methodInvocationException);
return;
}
promise.then(new PromiseListener() {
@Override
public void onRejection(JoynrException error) {
logger.debug("execute request on provider onRejection: {}, request: {}", error, request);
callback.onFailure(error);
}
@Override
public void onFulfillment(Object... values) {
logger.debug("execute request on provider onFulfillment: {}, request: {}", values, request);
callback.onSuccess(createReply(request, values));
}
});
}
use of io.joynr.provider.PromiseListener in project joynr by bmwcarit.
the class ProviderWrapperTest method testInvokeMethodThrowingProviderRuntimeException.
@Test
public void testInvokeMethodThrowingProviderRuntimeException() throws Throwable {
ProviderWrapper subject = createSubject();
JoynrProvider proxy = createProxy(subject);
Method method = TestServiceProviderInterface.class.getMethod("testThrowsProviderRuntimeException");
Object result = subject.invoke(proxy, method, new Object[0]);
assertNotNull(result);
assertTrue(result instanceof Promise);
assertTrue(((Promise<?>) result).isRejected());
((Promise<?>) result).then(new PromiseListener() {
@Override
public void onFulfillment(Object... values) {
fail("Should never get here");
}
@Override
public void onRejection(JoynrException error) {
assertTrue(error instanceof ProviderRuntimeException);
}
});
}
Aggregations