Errai Examples: RPC Invocation on CDI components
GWT client component
@LoadTool(name = "RPC Endpoints", group="Examples")
public class AccountClient implements WidgetProvider
{
private final MessageBus bus = ErraiBus.get();
private HTML responsePanel;
public void provideWidget(ProvisioningCallback callback)
{
LayoutPanel panel =
new LayoutPanel(new BoxLayout(BoxLayout.Orientation.VERTICAL));
Button button = new Button("Load accounts", new ClickHandler()
{
public void onClick(ClickEvent clickEvent)
{
AccountManager call = MessageBuilder.createCall(
new RemoteCallback <List<Account>>()
{
public void callback(List<account> accounts)
{
StringBuffer sb = new StringBuffer();
sb.append("<ul>");
for(Account a : accounts)
sb.append("<li>").append(a.getId());
sb.append("</ul>");
responsePanel.setHTML(sb.toString());
}
}, AccountManager.class
);
call.getAllAccounts();
}
});
responsePanel = new HTML();
panel.add(button);
panel.add(responsePanel);
callback.onSuccess(panel);
}
}
CDI managed bean
@Service
@ApplicationScoped
public class AccountManagerBean
implements AccountManager
{
@Inject
AccountStorageBean storage;
public void createAccount(Account account)
{
storage.addAccount(account);
}
public Account getAccount(String id)
{
return storage.getAccount(id);
}
public void deleteAccount(String id)
{
storage.remove(id);
}
public List
{
return storage.getAll();
}
}