From 1d8233c101d27ddfb414742efe147237170a1189 Mon Sep 17 00:00:00 2001 From: Andreas Veithen Date: Sun, 23 May 2010 18:22:58 +0000 Subject: [PATCH] AXIS2-4722: Introduced an abstract doInit method in AbstractTransportListenerEx so that derived classes can properly do their initialization stuff before the first endpoint is created. --- .../AbstractPollingTransportListener.java | 7 +------ .../base/AbstractTransportListener.java | 4 ++++ .../base/AbstractTransportListenerEx.java | 13 ++++++++++++- .../AbstractDatagramTransportListener.java | 19 ++----------------- .../axis2/transport/jms/JMSListener.java | 15 ++------------- .../transport/mail/MailTransportListener.java | 15 ++------------- 6 files changed, 23 insertions(+), 50 deletions(-) diff --git a/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java b/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java index 67489e5..8c1233e 100644 --- a/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java +++ b/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java @@ -18,8 +18,6 @@ */ package org.apache.axis2.transport.base; -import org.apache.axis2.context.ConfigurationContext; -import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.AxisFault; import java.util.ArrayList; @@ -36,11 +34,8 @@ public abstract class AbstractPollingTransportListener endpoints = new ArrayList(); @Override - public void init(ConfigurationContext cfgCtx, - TransportInDescription transportIn) throws AxisFault { - + protected void doInit() throws AxisFault { timer = new Timer("PollTimer"); - super.init(cfgCtx, transportIn); } @Override diff --git a/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListener.java b/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListener.java index 112809e..89e4369 100644 --- a/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListener.java +++ b/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListener.java @@ -347,6 +347,10 @@ protected void logException(String msg, Exception e) { log.error(msg, e); } + public TransportInDescription getTransportInDescription() { + return transportIn; + } + public String getTransportName() { return transportIn.getName(); } diff --git a/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java b/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java index 869ffd3..11cd49e 100644 --- a/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java +++ b/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java @@ -48,11 +48,13 @@ public abstract class AbstractTransportListenerEx protected boolean useGlobalListener = false; @Override - public void init(ConfigurationContext cfgCtx, + public final void init(ConfigurationContext cfgCtx, TransportInDescription transportIn) throws AxisFault { super.init(cfgCtx, transportIn); + doInit(); + // Create endpoint configured at transport level (if available) E endpoint = createEndpoint(); endpoint.init(this, null); @@ -62,6 +64,15 @@ public void init(ConfigurationContext cfgCtx, } } + /** + * Initialize the transport. This method will be called after the initialization work in + * {@link AbstractTransportListener} and before the first endpoint is created, i.e. before the + * first call to {@link #createEndpoint()}. + * + * @throws AxisFault + */ + protected abstract void doInit() throws AxisFault; + @Override public void destroy() { // Explicitly stop all endpoints not predispatched to services. All other endpoints will diff --git a/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java b/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java index a9a12d7..0b564a6 100644 --- a/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java +++ b/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java @@ -23,8 +23,6 @@ import java.net.SocketAddress; import org.apache.axis2.AxisFault; -import org.apache.axis2.context.ConfigurationContext; -import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.transport.base.AbstractTransportListenerEx; public abstract class AbstractDatagramTransportListener @@ -33,19 +31,8 @@ public abstract class AbstractDatagramTransportListener dispatcher; private String defaultIp; - @Override - public void init(ConfigurationContext cfgCtx, TransportInDescription transportIn) - throws AxisFault { - - super.init(cfgCtx, transportIn); - initDispatcher(); - } - - private void initDispatcher() throws AxisFault { - if (dispatcher != null) { - return; - } - + @Override + protected void doInit() throws AxisFault { DatagramDispatcherCallback callback = new DatagramDispatcherCallback() { public void receive(SocketAddress address, @@ -80,8 +67,6 @@ protected final E createEndpoint() { @Override protected void startEndpoint(E endpoint) throws AxisFault { - initDispatcher(); - try { dispatcher.addEndpoint(endpoint); } catch (IOException ex) { diff --git a/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java b/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java index fd6456f..66a642c 100644 --- a/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java +++ b/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java @@ -17,10 +17,8 @@ import org.apache.axis2.AxisFault; import org.apache.axis2.Constants; -import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.description.AxisService; import org.apache.axis2.description.Parameter; -import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.transport.base.AbstractTransportListenerEx; import org.apache.axis2.transport.base.BaseConstants; import org.apache.axis2.transport.base.ManagementSupport; @@ -55,18 +53,9 @@ public class JMSListener extends AbstractTransportListenerEx implem private final TransportErrorSourceSupport tess = new TransportErrorSourceSupport(this); - /** - * TransportListener initialization - * - * @param cfgCtx the Axis configuration context - * @param trpInDesc the TransportIn description - */ @Override - public void init(ConfigurationContext cfgCtx, - TransportInDescription trpInDesc) throws AxisFault { - - super.init(cfgCtx, trpInDesc); - connFacManager = new JMSConnectionFactoryManager(trpInDesc); + protected void doInit() throws AxisFault { + connFacManager = new JMSConnectionFactoryManager(getTransportInDescription()); log.info("JMS Transport Receiver/Listener initialized..."); } diff --git a/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java b/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java index c4e0fac..565e3c5 100644 --- a/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java +++ b/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java @@ -22,9 +22,7 @@ import org.apache.axis2.AxisFault; import org.apache.axis2.Constants; import org.apache.axis2.addressing.EndpointReference; -import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.MessageContext; -import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.transport.TransportUtils; import org.apache.axis2.transport.RequestResponseTransport; @@ -68,18 +66,9 @@ public class MailTransportListener extends AbstractPollingTransportListener