Main /
UpgradeFromVertX2ToVertX3The idea is to update Ptolemy II from Vert.x 2 to 3. ResourcesHow to get access to the branchCheck out the branch with: svn co https://repo.eecs.berkeley.edu/svn/projects/eal/ptII/branches/vertx-3-0-0 ptIIv3 Current status25-Sep-2015: imports are fixed. jjs/modules/httpClient/HttpClientHelper.java compiles. Still to go: other files that use vert.x
Notes below here about how the port was done. Ptolemy BranchI created a branch with svn copy https://repo.eecs.berkeley.edu/svn/projects/eal/ptII/trunk The above step is already done, you do not need to do it again To check out the branch, use: svn co https://repo.eecs.berkeley.edu/svn/projects/eal/ptII/branches/vertx-3-0-0 ptIIv3 Which version of Vert.x 3.0?In $PTII/lib, we are using the following Vert.x 2.x jars that have corresponding jars in 3.x:
These Vert.x 2.x jars do not have direct replacements in 3.x:
https://github.com/vert-x3/vertx-stack/blob/master/README.md states that the Vert.x min distribution has:
Let's start with that and see what else is necessary. Adding the Vert.x 3.0 jars to the ptII branchThese steps have already been done for you and is in the ptII vert-3-0-0 branch Delete the Vert.x 2.x jars from the branch : cd ptIIv3 export PTII=`pwd` svn delete hazelcast-3.2.3.jar jackson-annotations-2.2.2.jar jackson-core-2.2.2.jar jackson-databind-2.2.2.jar java-xmlhttprequest-20140923.jar netty-all-4.0.21.Final.jar vertx-*.jar Copy jar files from the Vert.x 3.0 directory: cd vendors wget https://bintray.com/artifact/download/vertx/downloads/vert.x-3.0.0-min.tar.gz tar -zxf vert.x-3.0.0-min.tar.gz cd .. cp ~/vendors/vert.x-3.0.0/lib/{hazelcast-*.jar,jackson-annotations*.jar,jackson-core*.jar,jackson-databind*.jar,vertx*.jar,netty*.jar} . FIXME: We probably don't need vertx-lang-groovy-3.0.0.jar or vertx-lang-ruby-3.0.0.jar. FIXME: Update license files for these jar files. Add the jar files to the branch: svn add lib/{hazelcast-*.jar,jackson-annotations*.jar,jackson-core*.jar,jackson-databind*.jar,vertx*.jar,netty*.jar} Edit # Keep these alphabetic # Vert.x 2.x jars: #jars="hazelcast-*.jar jackson-annotations-*.jar jackson-core-*.jar jackson-databind-*.jar java-xmlhttprequest-*.jar netty-\ all-*.jar vertx-core-*.jar vertx-hazelcast-*.jar vertx-platform-*.jar" # Vert.x 3.x jars: jars="hazelcast-*.jar jackson-annotations-*.jar jackson-core-*.jar jackson-databind-*.jar netty-buffer-*.jar netty-codec-[^\ h]*.jar netty-codec-http-*.jar netty-common-*.jar netty-handler-*.jar vertx-core-*.jar vertx-hazelcast-*.jar vergx-lang-js-3.0.0.jar ve\ rtx-service-proxy-*.jar" Configure the system. We use --enable-verbose to get more information: bash-3.2$ autoconf bash-3.2$ ./configure --enable-verbose You should see something like: checking for the Vertx application platform interface. ... ${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/hazelcast-3.5.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/jackson-annotations-2.5.0.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/jackson-core-2.5.3.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/jackson-databind-2.5.3.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/netty-buffer-4.0.28.Final.jar${CLASSPATHSEPARATOR}${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/netty-codec-http-4.0.28.Final.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/netty-common-4.0.28.Final.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/netty-handler-4.0.28.Final.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/vertx-core-3.0.0.jar${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/vertx-hazelcast-3.0.0.jar${CLASSPATHSEPARATOR}${CLASSPATHSEPARATOR}/Users/cxh/src/ptIIv3/lib/vertx-service-proxy-3.0.0.jar Also, the new jars should be in BuildRun Ptolemy II files that use Vert.xbash-3.2$ cat /tmp/j | xargs grep import | grep org.vertx | awk -F : '{print $1}' | sort | uniq ./ptolemy/actor/lib/jjs/modules/VertxHelperBase.java ./ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java ./ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java ./ptolemy/actor/lib/jjs/modules/httpClient/HttpClientHelper.java ./ptolemy/actor/lib/jjs/modules/udpSocket/UDPSocketHelper.java ./ptolemy/actor/lib/jjs/modules/vertxEventBus/VertxHelper.java ./ptolemy/actor/lib/jjs/modules/webSocket/WebSocketHelper.java ./ptolemy/actor/lib/jjs/modules/webSocket/WebSocketServerHelper.java ./ptolemy/actor/lib/vertx/EventBusTestServer.java ./ptolemy/actor/lib/vertx/VertxBusHandler.java Place these file names in a file so that we can run scripts on the files: cat /tmp/j | xargs grep import | grep org.vertx | awk -F : '{print $1}' | sort | uniq > /tmp/jv Vert.x 2.x classes used in Ptolemy IIbash-3.2$ $PTII/adm/bin/ptIItxtfiles > /tmp/f bash-3.2$ cat /tmp/f | egrep "\.java$" > /tmp/j bash-3.2$ cat /tmp/j | xargs grep import | grep org.vertx | awk '{print $NF}' | sort | uniq -c | sort -nr 9 org.vertx.java.core.Handler; 5 org.vertx.java.core.buffer.Buffer; 5 org.vertx.java.core.VertxFactory; 5 org.vertx.java.core.Vertx; 4 org.vertx.java.core.http.HttpServer; 4 org.vertx.java.core.http.HttpClient; 3 org.vertx.java.core.json.JsonObject; 3 org.vertx.java.core.http.WebSocket; 3 org.vertx.java.core.http.HttpServerRequest; 3 org.vertx.java.core.AsyncResult; 2 org.vertx.java.core.sockjs.SockJSServer; 2 org.vertx.java.core.json.JsonArray; 2 org.vertx.java.core.eventbus.Message; 2 org.vertx.java.core.eventbus.EventBus; 2 org.vertx.java.core.VoidHandler; 1 org.vertx.java.platform.Verticle; 1 org.vertx.java.core.http.WebSocketBase; 1 org.vertx.java.core.http.ServerWebSocket; 1 org.vertx.java.core.http.HttpServerResponse; 1 org.vertx.java.core.http.HttpClientResponse; 1 org.vertx.java.core.http.HttpClientRequest; 1 org.vertx.java.core.datagram.InternetProtocolFamily; 1 org.vertx.java.core.datagram.DatagramSocket; 1 org.vertx.java.core.datagram.DatagramPacket; 1 org.vertx.java.core.MultiMap; 1 org.vertx.java.core.AsyncResultHandler; bash-3.2$ Package ChangeChecklist for Migrating from Vert.x 2.1.x to Vert.x 3 - Part One says: "Change all the imports for Vertx. from org.vertx to io.vertx." I used a script for this. Run antErrors are: [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/VertxHelperBase.java:30: error: package io.vertx.java.core does not exist [javac] import io.vertx.java.core.Vertx; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/VertxHelperBase.java:31: error: package io.vertx.java.core does not exist [javac] import io.vertx.java.core.VertxFactory; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/VertxHelperBase.java:62: error: cannot find symbol [javac] protected static Vertx _vertx = VertxFactory.newVertx(); [javac] ^ [javac] symbol: class Vertx [javac] location: class VertxHelperBase [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:33: error: package io.vertx.java.core does not exist [javac] import io.vertx.java.core.AsyncResult [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:34: error: package io.vertx.java.core does not exist [javac] import io.vertx.java.core.Handler; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:35: error: package io.vertx.java.core does not exist [javac] import io.vertx.java.core.Vertx; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:36: error: package io.vertx.java.core does not exist [javac] import io.vertx.java.core.VertxFactory; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:37: error: package io.vertx.java.core.http does not exist [javac] import io.vertx.java.core.http.HttpServer; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:38: error: package io.vertx.java.core.http does not exist [javac] import io.vertx.java.core.http.HttpServerRequest; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:39: error: package io.vertx.java.core.http does not exist [javac] import io.vertx.java.core.http.HttpServerResponse; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/browser/VertxBrowserHelper.java:133: error: cannot find symbol [javac] private static Vertx _vertx = VertxFactory.newVertx(); [javac] ^ [javac] symbol: class Vertx [javac] location: class VertxBrowserHelper [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:36: error: package io.vertx.java.core does\ not exist [javac] import io.vertx.java.core.Handler; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:37: error: package io.vertx.java.core does\ not exist [javac] import io.vertx.java.core.Vertx; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:38: error: package io.vertx.java.core does\ not exist [javac] import io.vertx.java.core.VertxFactory; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:39: error: package io.vertx.java.core.even\ tbus does not exist [javac] import io.vertx.java.core.eventbus.EventBus; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:40: error: package io.vertx.java.core.eventbus does not exist [javac] import io.vertx.java.core.eventbus.Message; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:278: error: cannot find symbol [javac] private Map<String, Handler> _subscriptions; [javac] ^ [javac] symbol: class Handler [javac] location: class EventBusHelper [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:281: error: cannot find symbol [javac] private static Vertx _unclusteredVertxInstance; [javac] ^ [javac] symbol: class Vertx [javac] location: class EventBusHelper [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:287: error: cannot find symbol [javac] private Vertx _vertx; [javac] ^ [javac] symbol: class Vertx [javac] location: class EventBusHelper [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:290: error: cannot find symbol [javac] private static Map<String, Map<Integer, Vertx>> _vertxInstances; [javac] symbol: class Vertx [javac] location: class EventBusHelper [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/httpClient/HttpClientHelper.java:48: error: package io.vertx.java.core does\ not exist [javac] import io.vertx.java.core.Handler; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/ Convert io.vertx.java to io.vertxio.vertx.java.core.Vertx is now io.vertx.core.Vertx as defined in lib/vertx-core-3.0.0.jar, so we change the io.vertx.java to io.vertx using a script. Run antConvert io.vertx.core.VertxFactory to io.vertx.core.spi.VertxFactoryMake the update Run ant [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/udpSocket/UDPSocketHelper.java:40: error: cannot find symbol [javac] import io.vertx.core.datagram.InternetProtocolFamily; [javac] ^ [javac] symbol: class InternetProtocolFamily [javac] location: package io.vertx.core.datagram Replace io.vertx.core.datagram.InternetProtocolFamily with io.vertx.core.datagram.impl.InternetProtocolFamily;package io.vertx.core.sockjs does not existant says: [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/vertxEventBus/VertxHelper.java:44: error: package io.vertx.core.sockjs does\ not exist [javac] import io.vertx.core.sockjs.SockJSServer; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/vertx/EventBusTestServer.java:38: error: package io.vertx.core.sockjs does not exist [javac] import io.vertx.core.sockjs.SockJSServer;
SockJSHandler is found in The Vert.x full download in vertx-web-3.0.0.jar, which was added to $PTII/lib in the vertx-3-0 branch. That jar file was also added to $PTII/configure.in, autoconf was run and then $PTII/configure. Verticle is missing [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/vertx/EventBusTestServer.java:39: error: package io.vertx.platform does not exist [javac] import io.vertx.platform.Verticle; [javac] ^ [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/vertx/EventBusTestServer.java:50: error: cannot find symbol [javac] public class EventBusTestServer extends Verticle { Checklist for Migrating from Vert.x 2.1.x to Vert.x 3 - Part One says: "Verticle is now an interface and not a class to extend, so using Groovy as an example you now extend GroovyVerticle. In Java extend AbstractVerticle instead." So, in "Cannot find annotation method 'concrete()' in type 'VertxGen'" [javac] /Users/cxh/src/ptIIv3/lib/vertx-core-3.0.0.jar(io/vertx/core/http/WebSocketBase.class): warning: Cannot find annotation method 'concrete()' in type 'VertxGen': class file for io.vertx.codegen.annotations.VertxGen not found Solution: Downloaded vertx-codegen-3.0.0.jar: wget http://central.maven.org/maven2/io/vertx/vertx-codegen/3.0.0/vertx-codegen-3.0.0.jar added it to lib and added it to configure.in, ran autoconf "Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider org.netbeans.modules.openide.util.NbBundleProcessor not found"While running make: bash-3.2$ pwd /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/vertxEventBus bash-3.2$ make making jclass in ptolemy/actor/lib/jjs/modules/vertxEventBus/demo making jclass in ptolemy/actor/lib/jjs/modules/vertxEventBus/demo/VertxBus making jclass in ptolemy/actor/lib/jjs/modules/vertxEventBus/demo/VertxDateServer rm -f `basename VertxHelper.java .java`.class CLASSPATH="../../../../../..:/Users/cxh/src/ptIIv3/lib/js.jar:/Users/cxh/src/ptIIv3/lib/org.apache\ .oltu.oauth2.client-1.0.1-SNAPSHOT.jar:/Users/cxh/src/ptIIv3/lib/org.apache.oltu.oauth2.common-1.0\ .1-SNAPSHOT.jar:/Users/cxh/src/ptIIv3/lib/socketio.jar::/Users/cxh/src/ptIIv3/lib/hazelcast-3.5.ja\ r:/Users/cxh/src/ptIIv3/lib/jackson-annotations-2.5.0.jar:/Users/cxh/src/ptIIv3/lib/jackson-core-2\ .5.3.jar:/Users/cxh/src/ptIIv3/lib/jackson-databind-2.5.3.jar:/Users/cxh/src/ptIIv3/lib/netty-buff\ er-4.0.28.Final.jar::/Users/cxh/src/ptIIv3/lib/netty-codec-http-4.0.28.Final.jar:/Users/cxh/src/pt\ IIv3/lib/netty-common-4.0.28.Final.jar:/Users/cxh/src/ptIIv3/lib/netty-handler-4.0.28.Final.jar:/U\ sers/cxh/src/ptIIv3/lib/vertx-codegen-3.0.0.jar:/Users/cxh/src/ptIIv3/lib/vertx-core-3.0.0.jar:/Us\ ers/cxh/src/ptIIv3/lib/vertx-hazelcast-3.0.0.jar::/Users/cxh/src/ptIIv3/lib/vertx-service-proxy-3.\ 0.0.jar:/Users/cxh/src/ptIIv3/lib/vertx-web-3.0.0.jar" "/System/Library/Frameworks/JavaVM.framewor\ k/Versions/A/Commands/javac" -g -O VertxHelper.java error: Bad service configuration file, or exception thrown while constructing Processor object: ja\ vax.annotation.processing.Processor: Provider org.netbeans.modules.openide.util.NbBundleProcessor \ not found make: *** [VertxHelper.class] Error 1 bash-3.2$ Solution: Intially, I thought the solution was to edit the makefile and add $(PTHOMER_JARS), which is set in # Netbeans Jar files necessary for compilation of homer PTHOMER_JARS = /Users/cxh/src/ptIIv3/lib/org-openide-util.jar:/Users/cxh/src/ptIIv3/lib/org-openide-util-lookup.jar:/Users/cxh/src/ptIIv3/lib/org-netbeans-api-visual.jar However, it turns out that the problem was that $PTII/META-INF/services/javax.annotation.processing.Processor existed. The javac docs say: "Unless annotation processing is disabled with the -proc:none option, the compiler searches for any annotation processors that are available. The search path can be specified with the -processorpath option; if it is not given, the user class path is used. Processors are located by means of service provider-configuration files named META-INF/services/javax.annotation.processing.Processor on the search path. Such files should contain the names of any annotation processors to be used, listed one per line. Alternatively, processors can be specified explicitly, using the -processor option." Cannot find symbol VertxHelperBaseVertxHelperBase.java:62: error: cannot find symbol protected static Vertx _vertx = VertxFactory.newVertx(); ^ symbol: method newVertx() location: interface VertxFactory 1 error 3 warnings Solution: "VertxFactory.newVertx()" -> "Vertx.vertx()" Current Errors10/29/2015: [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:102: error: cannot find symbol [javac] _unclusteredVertxInstance = VertxFactory.newVertx(); [javac] ^ [javac] symbol: method newVertx() [javac] location: interface VertxFactory [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:174: error: no suitable method found for send(String,String,Handler<Message\ >) [javac] bus.send(address, message, newHandler); [javac] ^ [javac] method EventBus.<T#1>send(String,Object,Handler<AsyncResult<Message<T#1>>>) is not applicable [javac] (cannot infer type-variable(s) T#1 [javac] (argument mismatch; Handler<Message> cannot be converted to Handler<AsyncResult<Message<T#1>>>)) [javac] method EventBus.send(String,Object,DeliveryOptions) is not applicable [javac] (argument mismatch; Handler<Message> cannot be converted to DeliveryOptions) [javac] method EventBus.<T#2>send(String,Object,DeliveryOptions,Handler<AsyncResult<Message<T#2>>>) is not applicable [javac] (cannot infer type-variable(s) T#2 [javac] (actual and formal argument lists differ in length)) [javac] where T#1,T#2 are type-variables: [javac] T#1 extends Object declared in method <T#1>send(String,Object,Handler<AsyncResult<Message<T#1>>>) [javac] T#2 extends Object declared in method <T#2>send(String,Object,DeliveryOptions,Handler<AsyncResult<Message<T#2>>>) [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:214: error: cannot find symbol [javac] bus.registerHandler(address, newHandler); [javac] ^ [javac] symbol: method registerHandler(String,Handler<Message>) [javac] location: variable bus of type EventBus [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:230: error: cannot find symbol [javac] bus.unregisterHandler(toUnsubscribe, previousHandler); [javac] ^ [javac] symbol: method unregisterHandler(String,Handler<Message>) [javac] location: variable bus of type EventBus [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:236: error: cannot find symbol [javac] bus.unregisterHandler(address, previousHandler); [javac] ^ [javac] symbol: method unregisterHandler(String,Handler<Message>) [javac] location: variable bus of type EventBus [javac] /Users/cxh/src/ptIIv3/ptolemy/actor/lib/jjs/modules/eventbus/EventBusHelper.java:251: error: cannot find symbol [javac] _vertx = VertxFactory.newVertx(clusterPort, clusterHostname); [javac] ^ [javac] symbol: method newVertx(int,String) [javac] location: interface VertxFactory No suitable method found for send(String,String,Handler<Message>)EventBusHelper.java:175: error: no suitable method found for send(String,String,Handler<Message>) bus.send(address, message, newHandler); ^ method EventBus.<T#1>send(String,Object,Handler<AsyncResult<Message<T#1>>>) is not applicable (cannot infer type-variable(s) T#1 (argument mismatch; Handler<Message> cannot be converted to Handler<AsyncResult<Message<T#1>>>)) method EventBus.send(String,Object,DeliveryOptions) is not applicable (argument mismatch; Handler<Message> cannot be converted to DeliveryOptions) method EventBus.<T#2>send(String,Object,DeliveryOptions,Handler<AsyncResult<Message<T#2>>>) is not applicable (cannot infer type-variable(s) T#2 (actual and formal argument lists differ in length)) where T#1,T#2 are type-variables: T#1 extends Object declared in method <T#1>send(String,Object,Handler<AsyncResult<Message<T#1>>>) T#2 extends Object declared in method <T#2>send(String,Object,DeliveryOptions,Handler<AsyncResult<Message<T#2>>>) Docs are at io.vertx.core.eventbus.EventBus The error is: Handler<Message> newHandler = new Handler<Message>() { public void handle(Message message) { _vertxBusJS.callMember("notifyReply", replyHandler, message.body()); } }; The fix is: Handler<AsyncResult<Message<String>>> newHandler = new Handler<AsyncResult<Message<String>>>() { public void handle(AsyncResult<Message<String>> event) { _vertxBusJS.callMember("notifyReply", replyHandler, event.result().body()); } }; cannot find registerHandlerEventBusHelper.java:216: error: cannot find symbol bus.registerHandler(address, newHandler); ^ symbol: method registerHandler(String,Handler<Message>) location: variable bus of type EventBus /** Subscribe to the specified address on the event bus. * Whenever an event is published to this address by some * client in the event bus cluster, this * method will cause an event with the same name as address to be * emitted on the associated JavaScript object * with the message body as the value of the event. * If this object is already subscribed to this address, then * do nothing. * @param address The address on the bus to subscribe to. * @see #unsubscribe(String) */ public void subscribe(final String address) { if (_subscriptions == null) { _subscriptions = new HashMap<String, Handler>(); } if (_subscriptions.get(address) != null) { return; } Handler<Message> newHandler = new Handler<Message>() { public void handle(Message message) { _vertxBusJS.callMember("notify", address, message.body()); if (_reply != null) { message.reply(_reply); } } }; _subscriptions.put(address, newHandler); EventBus bus = _vertx.eventBus(); bus.registerHandler(address, newHandler); }
The fix: Handler<Message<String>> newHandler = new Handler<Message<String>>() { public void handle(Message<String> message) { _vertxBusJS.callMember("notify", address, message.body()); if (_reply != null) { message.reply(_reply); } } }; _subscriptions.put(address, newHandler); EventBus bus = _vertx.eventBus(); bus.consumer(address, newHandler);
|