[
https://issues.apache.org/jira/browse/TUSCANY-2918?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ant elder reassigned TUSCANY-2918:
----------------------------------
Assignee: ant elder
> Support to fully plugin host-jms module
> ----------------------------------------
>
> Key: TUSCANY-2918
> URL: https://issues.apache.org/jira/browse/TUSCANY-2918
> Project: Tuscany
> Issue Type: Bug
> Reporter: Rashmi Hunt
> Assignee: ant elder
>
> In order for host-jms module to support clean plugin for different JMS
> listeners, these changes are needed in current Tuscany code
> 1) JMSBindingServiceBindingProvider.start() function should remove below
> line,
> MessageListener listener = new RRBJMSBindingListener(jmsBinding,
> jmsResourceFactory, service, targetBinding, messageFactory);
> RRBJMSBindingListener is Tuscany specific listener and this line will not
> allow user to plugin a different JMS listener.
> Instead, code should instantiate in JMSServiceListener implementation's
> constructor which is constructor of ASFListener.
> Code in JMSBindingServiceBindingProvider.start() method should be,
> public void start() {
> try {
>
> this.serviceListener =
> serviceListenerFactory.createJMSServiceListener(this); //pass current
> instance of JMSBindingServiceBindingProvider
> serviceListener.start();
> } catch (Exception e) {
> throw new JMSBindingException("Error starting
> JMSServiceBinding", e);
> }
> }
> }
> 2) Tuscany should change JMSServiceListenerFactory.createJMSServiceListener()
> method declaration to below method, which just passes
> JMSBindingServiceBindingProvider
> as parameter.
> public JMSServiceListener
> createJMSServiceListener(JMSBindingServiceBindingProvider service) ;
> The reason for this is, current code passes serviceName, isCallbackService,
> jmsBinding & listener as params for JMSServiceListenerFactory which are
> very specific for RRBJMSBindingListener, but not useful for different JMS
> listener frameworks. If Tuscany passes instance of
> JMSBindingServiceBindingProvider
> it gives full flexibility for the listener frameworks to extract what they
> need from this class.
> Once above signature is modified, Tuscany can pass the
> JMSBindingServiceBindingProvider to JMSListener constructor and create the
> RRBJMSBindingListener in JMSListener contsructor
> as below,
> public ASFListener(JMSBindingServiceBindingProvider service) {
> this.service = service; //pass JMSBindingServiceBindingProvider
> instance all the way here so that every listener implementation will have
> full flexibility
>
> this.listener = new RRBJMSBindingListener(service.getJMSBinding(),
> service.getJMSResourceFactory(), service.getService(),
> service.getTargetBinding(), service.getMessageFactory());
> ... //do whatever else needed for specific listener frameworks
>
> }
> 3) Add these getter methods to JMSBindingServiceBindingProvider class, so
> that listener frameworks can extract what they need.
> public JMSBinding getBinding(){
> return jmsBinding;
> }
> public Binding getTargetBinding(){
> return targetBinding;
> }
> public RuntimeComponentService getService(){
> return this.service;
> }
> public RuntimeComponent getComponent(){
> return this.component;
> }
> public MessageFactory getMessageFactory(){
> return this.messageFactory;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.