Hi,
I'm using errai 1.3.0.CR1 and communication between client and server looks like this:
client code
(sending message)
MessageBuilder.createMessage().toSubject(DEPENDENTNUMBERS_SERVICE)
.signalling()
.with(MessageParts.ReplyTo, DEPENDENTNUMBERS_CLIENT)
.with("selectedNumber", baseNumber).errorsHandledBy( new ErrorCallback( ) {
@Override
(1) public boolean error( Message message, Throwable throwable ) {
throwable.printStackTrace( );
return true;
}
} )
.sendNowWith(dispatcher);
server code
(receiving message and sending response)
@Service
public class DependentNumbersService implements MessageCallback {
...
@Override
public void callback( Message message ) {
throw new AuthenticationException("you are not logged in yet!");
}
}
client code again
(receiving message)
erraiBus.subscribe(DEPENDENTNUMBERS_CLIENT, new MessageCallback() {
@Override
public void callback(Message message) {
dependentNumbers = message.get(List.class, "subnumbers");
view.showDependentNumbers(dependentNumbers);
}
});
The problem is that I can't catch exception raised on server side (AuthenticationException).
The method bookmarked in code as (1) is not handling the exception.
I saw the example RPCdemo attached to errai-1.3.0.CR1.zip file and there is an example how to catch exceptions raised on server side, but it's for RPC calls only.
How can I catch server-side exceptions with using errai messages?
This is only supported using Errai RPC. For loosely coupled interaction (messaging) the assumption was that this level of detail should not be exposed to clients. You will have to use a separate message or message part in this case.