Skip to content

Commit

Permalink
Added ability to subscribe to CDI events to errai-js
Browse files Browse the repository at this point in the history
  • Loading branch information
csadilek committed Aug 27, 2014
1 parent 376e260 commit eb5dfe2
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
6 changes: 5 additions & 1 deletion errai-js/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,11 @@
<artifactId>errai-codegen</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.jboss.errai</groupId>
<artifactId>errai-cdi-client</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.google.gwt</groupId>
Expand Down
8 changes: 1 addition & 7 deletions errai-js/src/main/java/org/jboss/errai/js/ErraiJS.gwt.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,9 @@
<inherits name="org.jboss.errai.bus.ErraiBus" />
<inherits name="org.jboss.errai.marshalling.ErraiMarshalling" />
<inherits name="org.jboss.errai.common.ErraiCommon" />
<inherits name="org.jboss.errai.enterprise.CDI"/>

<set-property name="export" value="yes"/>

<entry-point class="org.jboss.errai.js.client.ErraiJS" />

<set-property name="user.agent" value="safari"/>

<!--
Add the cross site linker.
-->
<!--<add-linker name="xs"/>-->
</module>
25 changes: 23 additions & 2 deletions errai-js/src/main/java/org/jboss/errai/js/client/bus/MsgBus.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@
package org.jboss.errai.js.client.bus;

import org.jboss.errai.bus.client.ErraiBus;
import org.jboss.errai.bus.client.api.messaging.Message;
import org.jboss.errai.bus.client.api.messaging.MessageCallback;
import org.jboss.errai.bus.client.api.base.CommandMessage;
import org.jboss.errai.bus.client.api.messaging.Message;
import org.jboss.errai.bus.client.api.messaging.MessageBus;
import org.jboss.errai.bus.client.api.messaging.MessageCallback;
import org.jboss.errai.enterprise.client.cdi.AbstractCDIEventCallback;
import org.jboss.errai.enterprise.client.cdi.api.CDI;
import org.jboss.errai.js.client.bus.marshall.MsgTools;
import org.timepedia.exporter.client.Export;
import org.timepedia.exporter.client.ExportPackage;
Expand All @@ -30,6 +32,7 @@

/**
* @author Mike Brock
* @author Christian Sadilek <csadilek@redhat.com>
*/
@ExportPackage("errai")
@Export
Expand All @@ -39,6 +42,10 @@ public class MsgBus implements Exportable {
public void subscribe(String subject, JavaScriptObject func) {
bus.subscribe(subject, new JsFunctionMessageCallback(func));
}

public void subscribeCdi(String subject, JavaScriptObject func) {
CDI.subscribe(subject, new CdiJsFunctionMessageCallback(func));
}

public void send(String subject, Object value) {
bus.send(CommandMessage.createWithParts(MsgTools.jsObjToMap(value)).toSubject(subject));
Expand All @@ -60,6 +67,20 @@ public void callback(Message message) {
_callFunction(functionReference, MsgTools.mapToJSPrototype(message.getParts()));
}
}

private static final class CdiJsFunctionMessageCallback extends AbstractCDIEventCallback {
private final JavaScriptObject functionReference;

private CdiJsFunctionMessageCallback(JavaScriptObject functionReference) {
// TODO configure qualifiers
this.functionReference = functionReference;
}

@Override
protected void fireEvent(Object event) {
_callFunction(functionReference, event);
}
}

private static native void _callFunction(JavaScriptObject obj, Object value) /*-{
obj(value);
Expand Down

0 comments on commit eb5dfe2

Please sign in to comment.