From: Charles du Jeu Date: Wed, 6 May 2009 20:35:29 +0000 (+0000) Subject: Adapt to new services to get rid of Amq X-Git-Tag: argeo-slc-2.1.7~1915 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=3e8c204b6086cb5fde52c36ec5cd04a775fad4a1;p=gpl%2Fargeo-slc.git Adapt to new services to get rid of Amq git-svn-id: https://svn.argeo.org/slc/trunk@2409 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js index e72bdf37e..feba47875 100644 --- a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js +++ b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js @@ -376,9 +376,20 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", init : function(viewPane){ this.setView(viewPane); this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); - this._amqClient = org.argeo.ria.remote.JmsClient.getInstance(); - this._amqClient.uri = "/org.argeo.slc.webapp/amq"; - this._amqClient.startPolling(); + this.remoteNotifier = new org.argeo.ria.remote.RemoteNotifier( + "/org.argeo.slc.webapp/", + "pollEvent.service", + "addEventListener.service", + "removeEventListener.service" + ); + this.remoteNotifier.setEventParamName("slc_eventType"); + this.remoteNotifier.setEventXPath("/slc:slc-event"); + this.remoteNotifier.setEventTypeXPath('slc:headers/slc:header[@name="slc_eventType"]'); + this.remoteNotifier.setEventDataXPath('slc:headers/slc:header[@name="slc_agentId"]'); + this.remoteNotifier.startPolling(); + this.UIBus = org.argeo.ria.event.UIBus.getInstance(); + this.UIBus.registerNotifier(this.remoteNotifier); + this._emptyAgentString = "Empty Batch"; this._crtAgentString = "Target Agent : "; }, @@ -389,12 +400,11 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", load : function(){ this._createLayout(); this.getView().setViewTitle("Execution Launcher"); - var reloadHandler = function(message){ + this.reloadHandler = function(message){ this.rootNode.reload(); } - this._amqClient.addListener("agentregister", "topic://agent.register", reloadHandler, this); - this._amqClient.addListener("agentunregister", "topic://agent.unregister", reloadHandler, this); - //reloadHandler(); + this.UIBus.addListener("agentRegistered", this.reloadHandler, this); + this.UIBus.addListener("agentUnregistered", this.reloadHandler, this); }, addScroll : function(){ @@ -402,9 +412,9 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", }, close : function(){ - this._amqClient.removeListener("agentregister", "topic://agent.register"); - this._amqClient.removeListener("agentunregister", "topic://agent.unregister"); - this._amqClient.stopPolling(); + this.UIBus.removeListener("agentRegistered", this.reloadHandler, this); + this.UIBus.removeListener("agentUnregistered", this.reloadHandler, this); + this.remoteNotifier.stopPolling(); }, /** @@ -643,11 +653,9 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", var batchEntrySpec = selection[i].getUserData("batchEntrySpec"); slcExecMessage.addBatchEntrySpec(batchEntrySpec); } - this._amqClient.sendMessage( - "topic://agent.newExecution", - slcExecMessage.toXml(), - {"slc_agentId":agentUuid} - ); + console.log(slcExecMessage.toXml()); + var req = org.argeo.slc.ria.SlcApi.getNewSlcExecutionService(agentUuid, slcExecMessage.toXml()); + req.send(); // Force logs refresh right now! qx.event.Timer.once(function(){ var command = org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadlogs"); diff --git a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcApi.js b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcApi.js index e598db51e..7d4a647b8 100644 --- a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcApi.js +++ b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcApi.js @@ -21,6 +21,7 @@ qx.Class.define("org.argeo.slc.ria.SlcApi", LIST_RESULTS_SERVICE : "listResultAttributes.service", GET_RESULT_SERVICE : "getResult.service", LIST_SLCEXEC_SERVICE : "listSlcExecutions.service", + NEW_SLCEXEC_SERVICE : "newSlcExecution.service", LIST_AGENTS_SERVICE : "listAgents.service", LIST_MODULES_SERVICE : "listModulesDescriptors.service", @@ -196,6 +197,27 @@ qx.Class.define("org.argeo.slc.ria.SlcApi", ); }, + + /** + * New SlcExecution + * @param agentId {String} Agent id target + * @param xmlDescription {String} XML of the Slc Execution + * @param fireReloadEventType {String} Event type to trigger (optionnal) + * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update + * @return {qx.io.remote.Request} + */ + getNewSlcExecutionService:function(agentId, xmlDescription, fireReloadEventType, iLoadStatusables){ + var req = org.argeo.slc.ria.SlcApi.getServiceRequest( + org.argeo.slc.ria.SlcApi.NEW_SLCEXEC_SERVICE + "?slc_agentId="+agentId, + fireReloadEventType, + iLoadStatusables + ); + req.setMethod("POST"); + req.setRequestHeader("Content-Type", "text/xml"); + req.setData("body=" + encodeURIComponent(xmlDescription)); + return req; + }, + /** * List currently available agents queues. diff --git a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js index 7d644316e..46c327442 100644 --- a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js +++ b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js @@ -57,16 +57,16 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet", this.setView(viewPane); this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); this._createLayout(); + this.UIBus = org.argeo.ria.event.UIBus.getInstance(); }, /** * */ load : function(){ - this._reloadLogger(); - this.timer = new qx.event.Timer(15000); - this.timer.addListener("interval", this._reloadLogger, this); - this.timer.start(); + this._reloadLogger(); + this.UIBus.addListener("newSlcExecution", this._reloadLogger, this); + this.UIBus.addListener("updateSlcExecutionStatus", this._reloadLogger, this); }, addScroll : function(){ @@ -74,7 +74,8 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet", }, close : function(){ - this.timer.stop(); + this.UIBus.removeListener("newSlcExecution", this._reloadLogger, this); + this.UIBus.removeListener("updateSlcExecutionStatus", this._reloadLogger, this); }, /** diff --git a/server/org.argeo.slc.ria/src/argeo-ria-src/class/org/argeo/ria/event/UIBus.js b/server/org.argeo.slc.ria/src/argeo-ria-src/class/org/argeo/ria/event/UIBus.js new file mode 100644 index 000000000..f174279b5 --- /dev/null +++ b/server/org.argeo.slc.ria/src/argeo-ria-src/class/org/argeo/ria/event/UIBus.js @@ -0,0 +1,69 @@ +/** + * A generic channel for posting reload events. + */ +qx.Class.define("org.argeo.ria.event.UIBus", +{ + type : "singleton", + extend : qx.core.Object, + + properties :{ + listeners : { + check : "Map" + }, + notifiers : { + check : "Array" + } + }, + construct : function(){ + this.base(arguments); + this.setListeners({}); + this.setNotifiers([]); + }, + members : { + addListener : function(eventType, listenerFunction, contextObject){ + var notifiers = this.getNotifiers(); + for(var i=0;i