You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Jim Cook (JIRA)" <ji...@apache.org> on 2007/09/04 17:02:22 UTC

[jira] Updated: (AMQ-1377) amq.js should not have a dependency on prototype.js

     [ https://issues.apache.org/activemq/browse/AMQ-1377?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jim Cook updated AMQ-1377:
--------------------------

    Attachment: amq_js.zip

I have included an attachment containing the changes this issue describes. 

The refactor is entirely client-side and the AjaxServlet and MessageListener Servlet have not been modified. The refactor breaks out prototype's AJAX handling from the core _amq.js file and replaces it with an adapter class. Also included is an adapter for jQuery. Here is a description of changes in each major file.
---
h4. chat.html
- No longer uses amq.js that loads _amq.js, prototype.js and behavior.js. SImple add amq.js which now contains the full client-side jms implementation that communicates with the AjaxServlet on the server.
- Initialization code slightly different now. The chat event handlers and general initialization is now purposeful instead of triggered by a quirky poll handler.

h4. amq.js
- This file is not quite different. It has been reorganized to support a namespace and private/pubic properties and methods.
- The batch process has been refactored from its reference counter implementation to a simple queue. I was experiencing bugs using the prior approach and this simpler approach seems to offer the same capabilities, especially since only one AJAX POST can be made to the server at a time. Please correct me if I am wrong or overlooked something.
- The AJAX and logging functionality has been externalized to an adapter class.
- Added some basic error recovery (reconnect), however this is an area where more improvement is needed.
- Removed the pollHandler functionality although it is trivial to add back. It was being misused (along with a 'first' boolean value and a jiggered timeout value) to initialize the chat.html page.

h4. amq_xxx_adapter.js
- These are the adapter files that externalize the AJAX call on behalf of the amq.js file.
- They also can externalize logging, however they just log to Firebug right now.

> amq.js should not have a dependency on prototype.js
> ---------------------------------------------------
>
>                 Key: AMQ-1377
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1377
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Broker
>    Affects Versions: 5.0.0
>            Reporter: Jim Cook
>         Attachments: amq_js.zip
>
>
> amq.js uses a script loading technique to include behavior.js, prototype.js and _amq.js. The Behavior library is included only for the purposes of the chat client and is only GUI in nature, so that should go. Also, Prototype is included for its AJAX functionality, however everyone has their favorite javascript library and although I cut my teeth on prototype, I use jQuery now. I certainly don't want amq.js to include prototype when I have a perfectly good AJAX library already included in jQuery.
> IMHO, amq.js should include only the functionality of client-side javascript-enabled JMS. The page author should include her AJAX library of choice (prototype, dojo, jquery, mootools, etc.) and an adapter class that allows amq.js to use the particular ajax library.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.